--
-- regproc
--
/* If objects exist, return oids */
CREATE ROLE regress_regrole_test;

-- without schemaname
SELECT
    regoper('||/');

SELECT
    regoperator('+(int4,int4)');

SELECT
    regproc('now');

SELECT
    regprocedure('abs(numeric)');

SELECT
    regclass('pg_class');

SELECT
    regtype('int4');

SELECT
    to_regoper('||/');

SELECT
    to_regoperator('+(int4,int4)');

SELECT
    to_regproc('now');

SELECT
    to_regprocedure('abs(numeric)');

SELECT
    to_regclass('pg_class');

SELECT
    to_regtype('int4');

-- with schemaname
SELECT
    regoper('pg_catalog.||/');

SELECT
    regoperator('pg_catalog.+(int4,int4)');

SELECT
    regproc('pg_catalog.now');

SELECT
    regprocedure('pg_catalog.abs(numeric)');

SELECT
    regclass('pg_catalog.pg_class');

SELECT
    regtype('pg_catalog.int4');

SELECT
    to_regoper('pg_catalog.||/');

SELECT
    to_regproc('pg_catalog.now');

SELECT
    to_regprocedure('pg_catalog.abs(numeric)');

SELECT
    to_regclass('pg_catalog.pg_class');

SELECT
    to_regtype('pg_catalog.int4');

-- schemaname not applicable
SELECT
    regrole('regress_regrole_test');

SELECT
    regrole('"regress_regrole_test"');

SELECT
    regnamespace('pg_catalog');

SELECT
    regnamespace('"pg_catalog"');

SELECT
    to_regrole('regress_regrole_test');

SELECT
    to_regrole('"regress_regrole_test"');

SELECT
    to_regnamespace('pg_catalog');

SELECT
    to_regnamespace('"pg_catalog"');


/* If objects don't exist, raise errors. */
DROP ROLE regress_regrole_test;

-- without schemaname
SELECT
    regoper('||//');

SELECT
    regoperator('++(int4,int4)');

SELECT
    regproc('know');

SELECT
    regprocedure('absinthe(numeric)');

SELECT
    regclass('pg_classes');

SELECT
    regtype('int3');

-- with schemaname
SELECT
    regoper('ng_catalog.||/');

SELECT
    regoperator('ng_catalog.+(int4,int4)');

SELECT
    regproc('ng_catalog.now');

SELECT
    regprocedure('ng_catalog.abs(numeric)');

SELECT
    regclass('ng_catalog.pg_class');

SELECT
    regtype('ng_catalog.int4');

-- schemaname not applicable
SELECT
    regrole('regress_regrole_test');

SELECT
    regrole('"regress_regrole_test"');

SELECT
    regrole('Nonexistent');

SELECT
    regrole('"Nonexistent"');

SELECT
    regrole('foo.bar');

SELECT
    regnamespace('Nonexistent');

SELECT
    regnamespace('"Nonexistent"');

SELECT
    regnamespace('foo.bar');


/* If objects don't exist, return NULL with no error. */
-- without schemaname
SELECT
    to_regoper('||//');

SELECT
    to_regoperator('++(int4,int4)');

SELECT
    to_regproc('know');

SELECT
    to_regprocedure('absinthe(numeric)');

SELECT
    to_regclass('pg_classes');

SELECT
    to_regtype('int3');

-- with schemaname
SELECT
    to_regoper('ng_catalog.||/');

SELECT
    to_regoperator('ng_catalog.+(int4,int4)');

SELECT
    to_regproc('ng_catalog.now');

SELECT
    to_regprocedure('ng_catalog.abs(numeric)');

SELECT
    to_regclass('ng_catalog.pg_class');

SELECT
    to_regtype('ng_catalog.int4');

-- schemaname not applicable
SELECT
    to_regrole('regress_regrole_test');

SELECT
    to_regrole('"regress_regrole_test"');

SELECT
    to_regrole('foo.bar');

SELECT
    to_regrole('Nonexistent');

SELECT
    to_regrole('"Nonexistent"');

SELECT
    to_regrole('foo.bar');

SELECT
    to_regnamespace('Nonexistent');

SELECT
    to_regnamespace('"Nonexistent"');

SELECT
    to_regnamespace('foo.bar');

