diff options
Diffstat (limited to 'src/test/regress/sql/regproc.sql')
-rw-r--r-- | src/test/regress/sql/regproc.sql | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/src/test/regress/sql/regproc.sql b/src/test/regress/sql/regproc.sql new file mode 100644 index 0000000..de2aa88 --- /dev/null +++ b/src/test/regress/sql/regproc.sql @@ -0,0 +1,147 @@ +-- +-- 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 regcollation('"POSIX"'); + +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'); +SELECT to_regcollation('"POSIX"'); + +-- 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 regcollation('pg_catalog."POSIX"'); + +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'); +SELECT to_regcollation('pg_catalog."POSIX"'); + +-- 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'); +\set VERBOSITY sqlstate \\ -- error message is encoding-dependent +SELECT regcollation('ng_catalog."POSIX"'); +\set VERBOSITY default + +-- 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'); +SELECT to_regcollation('notacollation'); + +-- 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'); +SELECT to_regcollation('ng_catalog."POSIX"'); + +-- 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'); + +-- Test soft-error API + +SELECT * FROM pg_input_error_info('ng_catalog.pg_class', 'regclass'); +SELECT pg_input_is_valid('ng_catalog."POSIX"', 'regcollation'); +SELECT * FROM pg_input_error_info('no_such_config', 'regconfig'); +SELECT * FROM pg_input_error_info('no_such_dictionary', 'regdictionary'); +SELECT * FROM pg_input_error_info('Nonexistent', 'regnamespace'); +SELECT * FROM pg_input_error_info('ng_catalog.||/', 'regoper'); +SELECT * FROM pg_input_error_info('-', 'regoper'); +SELECT * FROM pg_input_error_info('ng_catalog.+(int4,int4)', 'regoperator'); +SELECT * FROM pg_input_error_info('-', 'regoperator'); +SELECT * FROM pg_input_error_info('ng_catalog.now', 'regproc'); +SELECT * FROM pg_input_error_info('ng_catalog.abs(numeric)', 'regprocedure'); +SELECT * FROM pg_input_error_info('ng_catalog.abs(numeric', 'regprocedure'); +SELECT * FROM pg_input_error_info('regress_regrole_test', 'regrole'); +SELECT * FROM pg_input_error_info('no_such_type', 'regtype'); + +-- Some cases that should be soft errors, but are not yet +SELECT * FROM pg_input_error_info('incorrect type name syntax', 'regtype'); +SELECT * FROM pg_input_error_info('numeric(1,2,3)', 'regtype'); -- bogus typmod +SELECT * FROM pg_input_error_info('way.too.many.names', 'regtype'); +SELECT * FROM pg_input_error_info('no_such_catalog.schema.name', 'regtype'); |