2014-04-08 16:27:56 +02:00
|
|
|
--
|
|
|
|
-- regproc
|
|
|
|
--
|
|
|
|
/* If objects exist, return oids */
|
2016-07-18 00:42:31 +02:00
|
|
|
CREATE ROLE regress_regrole_test;
|
2014-04-08 16:27:56 +02:00
|
|
|
-- without schemaname
|
|
|
|
SELECT regoper('||/');
|
|
|
|
regoper
|
|
|
|
---------
|
|
|
|
||/
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-16 18:21:43 +02:00
|
|
|
SELECT regoperator('+(int4,int4)');
|
|
|
|
regoperator
|
|
|
|
--------------------
|
|
|
|
+(integer,integer)
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-08 16:27:56 +02:00
|
|
|
SELECT regproc('now');
|
|
|
|
regproc
|
|
|
|
---------
|
|
|
|
now
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-16 18:21:43 +02:00
|
|
|
SELECT regprocedure('abs(numeric)');
|
|
|
|
regprocedure
|
|
|
|
--------------
|
|
|
|
abs(numeric)
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-08 16:27:56 +02:00
|
|
|
SELECT regclass('pg_class');
|
|
|
|
regclass
|
|
|
|
----------
|
|
|
|
pg_class
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT regtype('int4');
|
|
|
|
regtype
|
|
|
|
---------
|
|
|
|
integer
|
|
|
|
(1 row)
|
|
|
|
|
2020-03-18 21:20:01 +01:00
|
|
|
SELECT regcollation('"POSIX"');
|
|
|
|
regcollation
|
|
|
|
--------------
|
|
|
|
"POSIX"
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-08 16:27:56 +02:00
|
|
|
SELECT to_regoper('||/');
|
|
|
|
to_regoper
|
|
|
|
------------
|
|
|
|
||/
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-16 18:21:43 +02:00
|
|
|
SELECT to_regoperator('+(int4,int4)');
|
|
|
|
to_regoperator
|
|
|
|
--------------------
|
|
|
|
+(integer,integer)
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-08 16:27:56 +02:00
|
|
|
SELECT to_regproc('now');
|
|
|
|
to_regproc
|
|
|
|
------------
|
|
|
|
now
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-16 18:21:43 +02:00
|
|
|
SELECT to_regprocedure('abs(numeric)');
|
|
|
|
to_regprocedure
|
|
|
|
-----------------
|
|
|
|
abs(numeric)
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-08 16:27:56 +02:00
|
|
|
SELECT to_regclass('pg_class');
|
|
|
|
to_regclass
|
|
|
|
-------------
|
|
|
|
pg_class
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT to_regtype('int4');
|
|
|
|
to_regtype
|
|
|
|
------------
|
|
|
|
integer
|
|
|
|
(1 row)
|
|
|
|
|
2020-03-18 21:20:01 +01:00
|
|
|
SELECT to_regcollation('"POSIX"');
|
|
|
|
to_regcollation
|
|
|
|
-----------------
|
|
|
|
"POSIX"
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-08 16:27:56 +02:00
|
|
|
-- with schemaname
|
|
|
|
SELECT regoper('pg_catalog.||/');
|
|
|
|
regoper
|
|
|
|
---------
|
|
|
|
||/
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-16 18:21:43 +02:00
|
|
|
SELECT regoperator('pg_catalog.+(int4,int4)');
|
|
|
|
regoperator
|
|
|
|
--------------------
|
|
|
|
+(integer,integer)
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-08 16:27:56 +02:00
|
|
|
SELECT regproc('pg_catalog.now');
|
|
|
|
regproc
|
|
|
|
---------
|
|
|
|
now
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-16 18:21:43 +02:00
|
|
|
SELECT regprocedure('pg_catalog.abs(numeric)');
|
|
|
|
regprocedure
|
|
|
|
--------------
|
|
|
|
abs(numeric)
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-08 16:27:56 +02:00
|
|
|
SELECT regclass('pg_catalog.pg_class');
|
|
|
|
regclass
|
|
|
|
----------
|
|
|
|
pg_class
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT regtype('pg_catalog.int4');
|
|
|
|
regtype
|
|
|
|
---------
|
|
|
|
integer
|
|
|
|
(1 row)
|
|
|
|
|
2020-03-18 21:20:01 +01:00
|
|
|
SELECT regcollation('pg_catalog."POSIX"');
|
|
|
|
regcollation
|
|
|
|
--------------
|
|
|
|
"POSIX"
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-08 16:27:56 +02:00
|
|
|
SELECT to_regoper('pg_catalog.||/');
|
|
|
|
to_regoper
|
|
|
|
------------
|
|
|
|
||/
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT to_regproc('pg_catalog.now');
|
|
|
|
to_regproc
|
|
|
|
------------
|
|
|
|
now
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-16 18:21:43 +02:00
|
|
|
SELECT to_regprocedure('pg_catalog.abs(numeric)');
|
|
|
|
to_regprocedure
|
|
|
|
-----------------
|
|
|
|
abs(numeric)
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-08 16:27:56 +02:00
|
|
|
SELECT to_regclass('pg_catalog.pg_class');
|
|
|
|
to_regclass
|
|
|
|
-------------
|
|
|
|
pg_class
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT to_regtype('pg_catalog.int4');
|
|
|
|
to_regtype
|
|
|
|
------------
|
|
|
|
integer
|
|
|
|
(1 row)
|
|
|
|
|
2020-03-18 21:20:01 +01:00
|
|
|
SELECT to_regcollation('pg_catalog."POSIX"');
|
|
|
|
to_regcollation
|
|
|
|
-----------------
|
|
|
|
"POSIX"
|
|
|
|
(1 row)
|
|
|
|
|
2016-01-04 07:03:53 +01:00
|
|
|
-- schemaname not applicable
|
2016-07-18 00:42:31 +02:00
|
|
|
SELECT regrole('regress_regrole_test');
|
|
|
|
regrole
|
|
|
|
----------------------
|
|
|
|
regress_regrole_test
|
2016-01-04 07:03:53 +01:00
|
|
|
(1 row)
|
|
|
|
|
2016-07-18 00:42:31 +02:00
|
|
|
SELECT regrole('"regress_regrole_test"');
|
|
|
|
regrole
|
|
|
|
----------------------
|
|
|
|
regress_regrole_test
|
2016-01-04 07:03:53 +01:00
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT regnamespace('pg_catalog');
|
|
|
|
regnamespace
|
|
|
|
--------------
|
|
|
|
pg_catalog
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT regnamespace('"pg_catalog"');
|
|
|
|
regnamespace
|
|
|
|
--------------
|
|
|
|
pg_catalog
|
|
|
|
(1 row)
|
|
|
|
|
2016-07-18 00:42:31 +02:00
|
|
|
SELECT to_regrole('regress_regrole_test');
|
|
|
|
to_regrole
|
|
|
|
----------------------
|
|
|
|
regress_regrole_test
|
2016-01-04 07:03:53 +01:00
|
|
|
(1 row)
|
|
|
|
|
2016-07-18 00:42:31 +02:00
|
|
|
SELECT to_regrole('"regress_regrole_test"');
|
|
|
|
to_regrole
|
|
|
|
----------------------
|
|
|
|
regress_regrole_test
|
2016-01-04 07:03:53 +01:00
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT to_regnamespace('pg_catalog');
|
|
|
|
to_regnamespace
|
|
|
|
-----------------
|
|
|
|
pg_catalog
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT to_regnamespace('"pg_catalog"');
|
|
|
|
to_regnamespace
|
|
|
|
-----------------
|
|
|
|
pg_catalog
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-08 16:27:56 +02:00
|
|
|
/* If objects don't exist, raise errors. */
|
2016-07-18 00:42:31 +02:00
|
|
|
DROP ROLE regress_regrole_test;
|
2014-04-08 16:27:56 +02:00
|
|
|
-- without schemaname
|
|
|
|
SELECT regoper('||//');
|
|
|
|
ERROR: operator does not exist: ||//
|
2015-05-09 19:06:49 +02:00
|
|
|
LINE 1: SELECT regoper('||//');
|
2014-04-08 16:27:56 +02:00
|
|
|
^
|
2014-04-16 18:21:43 +02:00
|
|
|
SELECT regoperator('++(int4,int4)');
|
|
|
|
ERROR: operator does not exist: ++(int4,int4)
|
|
|
|
LINE 1: SELECT regoperator('++(int4,int4)');
|
|
|
|
^
|
2014-04-08 16:27:56 +02:00
|
|
|
SELECT regproc('know');
|
|
|
|
ERROR: function "know" does not exist
|
|
|
|
LINE 1: SELECT regproc('know');
|
|
|
|
^
|
2014-04-16 18:21:43 +02:00
|
|
|
SELECT regprocedure('absinthe(numeric)');
|
|
|
|
ERROR: function "absinthe(numeric)" does not exist
|
|
|
|
LINE 1: SELECT regprocedure('absinthe(numeric)');
|
|
|
|
^
|
2014-04-08 16:27:56 +02:00
|
|
|
SELECT regclass('pg_classes');
|
|
|
|
ERROR: relation "pg_classes" does not exist
|
|
|
|
LINE 1: SELECT regclass('pg_classes');
|
|
|
|
^
|
|
|
|
SELECT regtype('int3');
|
|
|
|
ERROR: type "int3" does not exist
|
|
|
|
LINE 1: SELECT regtype('int3');
|
|
|
|
^
|
|
|
|
-- with schemaname
|
|
|
|
SELECT regoper('ng_catalog.||/');
|
2022-12-27 18:26:01 +01:00
|
|
|
ERROR: operator does not exist: ng_catalog.||/
|
2014-04-08 16:27:56 +02:00
|
|
|
LINE 1: SELECT regoper('ng_catalog.||/');
|
|
|
|
^
|
2014-04-16 18:21:43 +02:00
|
|
|
SELECT regoperator('ng_catalog.+(int4,int4)');
|
|
|
|
ERROR: operator does not exist: ng_catalog.+(int4,int4)
|
|
|
|
LINE 1: SELECT regoperator('ng_catalog.+(int4,int4)');
|
|
|
|
^
|
2014-04-08 16:27:56 +02:00
|
|
|
SELECT regproc('ng_catalog.now');
|
2022-12-27 18:26:01 +01:00
|
|
|
ERROR: function "ng_catalog.now" does not exist
|
2014-04-08 16:27:56 +02:00
|
|
|
LINE 1: SELECT regproc('ng_catalog.now');
|
|
|
|
^
|
2014-04-16 18:21:43 +02:00
|
|
|
SELECT regprocedure('ng_catalog.abs(numeric)');
|
2022-12-27 18:26:01 +01:00
|
|
|
ERROR: function "ng_catalog.abs(numeric)" does not exist
|
2014-04-16 18:21:43 +02:00
|
|
|
LINE 1: SELECT regprocedure('ng_catalog.abs(numeric)');
|
|
|
|
^
|
2014-04-08 16:27:56 +02:00
|
|
|
SELECT regclass('ng_catalog.pg_class');
|
2022-12-27 18:26:01 +01:00
|
|
|
ERROR: relation "ng_catalog.pg_class" does not exist
|
2014-04-08 16:27:56 +02:00
|
|
|
LINE 1: SELECT regclass('ng_catalog.pg_class');
|
|
|
|
^
|
|
|
|
SELECT regtype('ng_catalog.int4');
|
|
|
|
ERROR: schema "ng_catalog" does not exist
|
|
|
|
LINE 1: SELECT regtype('ng_catalog.int4');
|
|
|
|
^
|
2022-12-27 19:06:42 +01:00
|
|
|
\set VERBOSITY sqlstate \\ -- error message is encoding-dependent
|
2020-03-18 21:20:01 +01:00
|
|
|
SELECT regcollation('ng_catalog."POSIX"');
|
2022-12-27 19:06:42 +01:00
|
|
|
ERROR: 42704
|
|
|
|
\set VERBOSITY default
|
2016-01-04 07:03:53 +01:00
|
|
|
-- schemaname not applicable
|
2016-07-18 00:42:31 +02:00
|
|
|
SELECT regrole('regress_regrole_test');
|
|
|
|
ERROR: role "regress_regrole_test" does not exist
|
|
|
|
LINE 1: SELECT regrole('regress_regrole_test');
|
2016-01-04 07:03:53 +01:00
|
|
|
^
|
2016-07-18 00:42:31 +02:00
|
|
|
SELECT regrole('"regress_regrole_test"');
|
|
|
|
ERROR: role "regress_regrole_test" does not exist
|
|
|
|
LINE 1: SELECT regrole('"regress_regrole_test"');
|
2016-01-04 07:03:53 +01:00
|
|
|
^
|
|
|
|
SELECT regrole('Nonexistent');
|
|
|
|
ERROR: role "nonexistent" does not exist
|
|
|
|
LINE 1: SELECT regrole('Nonexistent');
|
|
|
|
^
|
|
|
|
SELECT regrole('"Nonexistent"');
|
|
|
|
ERROR: role "Nonexistent" does not exist
|
|
|
|
LINE 1: SELECT regrole('"Nonexistent"');
|
|
|
|
^
|
|
|
|
SELECT regrole('foo.bar');
|
|
|
|
ERROR: invalid name syntax
|
|
|
|
LINE 1: SELECT regrole('foo.bar');
|
|
|
|
^
|
|
|
|
SELECT regnamespace('Nonexistent');
|
|
|
|
ERROR: schema "nonexistent" does not exist
|
|
|
|
LINE 1: SELECT regnamespace('Nonexistent');
|
|
|
|
^
|
|
|
|
SELECT regnamespace('"Nonexistent"');
|
|
|
|
ERROR: schema "Nonexistent" does not exist
|
|
|
|
LINE 1: SELECT regnamespace('"Nonexistent"');
|
|
|
|
^
|
|
|
|
SELECT regnamespace('foo.bar');
|
|
|
|
ERROR: invalid name syntax
|
|
|
|
LINE 1: SELECT regnamespace('foo.bar');
|
|
|
|
^
|
2014-04-08 16:27:56 +02:00
|
|
|
/* If objects don't exist, return NULL with no error. */
|
|
|
|
-- without schemaname
|
|
|
|
SELECT to_regoper('||//');
|
|
|
|
to_regoper
|
|
|
|
------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-16 18:21:43 +02:00
|
|
|
SELECT to_regoperator('++(int4,int4)');
|
|
|
|
to_regoperator
|
|
|
|
----------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-08 16:27:56 +02:00
|
|
|
SELECT to_regproc('know');
|
|
|
|
to_regproc
|
|
|
|
------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-16 18:21:43 +02:00
|
|
|
SELECT to_regprocedure('absinthe(numeric)');
|
|
|
|
to_regprocedure
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-08 16:27:56 +02:00
|
|
|
SELECT to_regclass('pg_classes');
|
|
|
|
to_regclass
|
|
|
|
-------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT to_regtype('int3');
|
|
|
|
to_regtype
|
|
|
|
------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
2020-03-18 21:20:01 +01:00
|
|
|
SELECT to_regcollation('notacollation');
|
|
|
|
to_regcollation
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-08 16:27:56 +02:00
|
|
|
-- with schemaname
|
|
|
|
SELECT to_regoper('ng_catalog.||/');
|
|
|
|
to_regoper
|
|
|
|
------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-16 18:21:43 +02:00
|
|
|
SELECT to_regoperator('ng_catalog.+(int4,int4)');
|
|
|
|
to_regoperator
|
|
|
|
----------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-08 16:27:56 +02:00
|
|
|
SELECT to_regproc('ng_catalog.now');
|
|
|
|
to_regproc
|
|
|
|
------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-16 18:21:43 +02:00
|
|
|
SELECT to_regprocedure('ng_catalog.abs(numeric)');
|
|
|
|
to_regprocedure
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
2014-04-08 16:27:56 +02:00
|
|
|
SELECT to_regclass('ng_catalog.pg_class');
|
|
|
|
to_regclass
|
|
|
|
-------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT to_regtype('ng_catalog.int4');
|
|
|
|
to_regtype
|
|
|
|
------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
2020-03-18 21:20:01 +01:00
|
|
|
SELECT to_regcollation('ng_catalog."POSIX"');
|
|
|
|
to_regcollation
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
2016-01-04 07:03:53 +01:00
|
|
|
-- schemaname not applicable
|
2016-07-18 00:42:31 +02:00
|
|
|
SELECT to_regrole('regress_regrole_test');
|
2016-01-04 07:03:53 +01:00
|
|
|
to_regrole
|
|
|
|
------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
2016-07-18 00:42:31 +02:00
|
|
|
SELECT to_regrole('"regress_regrole_test"');
|
2016-01-04 07:03:53 +01:00
|
|
|
to_regrole
|
|
|
|
------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT to_regrole('foo.bar');
|
2022-12-27 18:26:01 +01:00
|
|
|
to_regrole
|
|
|
|
------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
2016-01-04 07:03:53 +01:00
|
|
|
SELECT to_regrole('Nonexistent');
|
|
|
|
to_regrole
|
|
|
|
------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT to_regrole('"Nonexistent"');
|
|
|
|
to_regrole
|
|
|
|
------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT to_regrole('foo.bar');
|
2022-12-27 18:26:01 +01:00
|
|
|
to_regrole
|
|
|
|
------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
2016-01-04 07:03:53 +01:00
|
|
|
SELECT to_regnamespace('Nonexistent');
|
|
|
|
to_regnamespace
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT to_regnamespace('"Nonexistent"');
|
|
|
|
to_regnamespace
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT to_regnamespace('foo.bar');
|
2022-12-27 18:26:01 +01:00
|
|
|
to_regnamespace
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
Add to_regtypemod function to extract typemod from a string type name.
In combination with to_regtype, this allows converting a string to
the "canonicalized" form emitted by format_type. That usage requires
parsing the string twice, which is slightly annoying but not really
too expensive. We considered alternatives such as returning a record
type, but that way was notationally uglier than this, and possibly
less flexible.
Like to_regtype(), we'd rather that this return NULL for any bad
input, but the underlying type-parsing logic isn't yet capable of
not throwing syntax errors. Adjust the documentation for both
functions to point that out.
In passing, fix up a couple of nearby entries in the System Catalog
Information Functions table that had not gotten the word about our
since-v13 convention for displaying function usage examples.
David Wheeler and Erik Wienhold, reviewed by Pavel Stehule, Jim Jones,
and others.
Discussion: https://postgr.es/m/DF2324CA-2673-4ABE-B382-26B5770B6AA3@justatheory.com
2024-03-20 22:11:23 +01:00
|
|
|
-- Test to_regtypemod
|
|
|
|
SELECT to_regtypemod('text');
|
|
|
|
to_regtypemod
|
|
|
|
---------------
|
|
|
|
-1
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT to_regtypemod('timestamp(4)');
|
|
|
|
to_regtypemod
|
|
|
|
---------------
|
|
|
|
4
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT to_regtypemod('no_such_type(4)');
|
|
|
|
to_regtypemod
|
|
|
|
---------------
|
|
|
|
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT format_type(to_regtype('varchar(32)'), to_regtypemod('varchar(32)'));
|
|
|
|
format_type
|
|
|
|
-----------------------
|
|
|
|
character varying(32)
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT format_type(to_regtype('bit'), to_regtypemod('bit'));
|
|
|
|
format_type
|
|
|
|
-------------
|
|
|
|
bit(1)
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT format_type(to_regtype('"bit"'), to_regtypemod('"bit"'));
|
|
|
|
format_type
|
|
|
|
-------------
|
|
|
|
"bit"
|
|
|
|
(1 row)
|
|
|
|
|
2022-12-27 18:26:01 +01:00
|
|
|
-- Test soft-error API
|
2023-02-28 00:04:13 +01:00
|
|
|
SELECT * FROM pg_input_error_info('ng_catalog.pg_class', 'regclass');
|
|
|
|
message | detail | hint | sql_error_code
|
|
|
|
-----------------------------------------------+--------+------+----------------
|
|
|
|
relation "ng_catalog.pg_class" does not exist | | | 42P01
|
2022-12-27 18:26:01 +01:00
|
|
|
(1 row)
|
|
|
|
|
2022-12-27 19:06:42 +01:00
|
|
|
SELECT pg_input_is_valid('ng_catalog."POSIX"', 'regcollation');
|
|
|
|
pg_input_is_valid
|
|
|
|
-------------------
|
|
|
|
f
|
2022-12-27 18:26:01 +01:00
|
|
|
(1 row)
|
|
|
|
|
2023-02-28 00:04:13 +01:00
|
|
|
SELECT * FROM pg_input_error_info('no_such_config', 'regconfig');
|
|
|
|
message | detail | hint | sql_error_code
|
|
|
|
-----------------------------------------------------------+--------+------+----------------
|
|
|
|
text search configuration "no_such_config" does not exist | | | 42704
|
2022-12-27 18:26:01 +01:00
|
|
|
(1 row)
|
|
|
|
|
2023-02-28 00:04:13 +01:00
|
|
|
SELECT * FROM pg_input_error_info('no_such_dictionary', 'regdictionary');
|
|
|
|
message | detail | hint | sql_error_code
|
|
|
|
------------------------------------------------------------+--------+------+----------------
|
|
|
|
text search dictionary "no_such_dictionary" does not exist | | | 42704
|
2022-12-27 18:26:01 +01:00
|
|
|
(1 row)
|
|
|
|
|
2023-02-28 00:04:13 +01:00
|
|
|
SELECT * FROM pg_input_error_info('Nonexistent', 'regnamespace');
|
|
|
|
message | detail | hint | sql_error_code
|
|
|
|
-------------------------------------+--------+------+----------------
|
|
|
|
schema "nonexistent" does not exist | | | 3F000
|
2022-12-27 18:26:01 +01:00
|
|
|
(1 row)
|
|
|
|
|
2023-02-28 00:04:13 +01:00
|
|
|
SELECT * FROM pg_input_error_info('ng_catalog.||/', 'regoper');
|
|
|
|
message | detail | hint | sql_error_code
|
|
|
|
-----------------------------------------+--------+------+----------------
|
|
|
|
operator does not exist: ng_catalog.||/ | | | 42883
|
2022-12-27 18:26:01 +01:00
|
|
|
(1 row)
|
|
|
|
|
2023-02-28 00:04:13 +01:00
|
|
|
SELECT * FROM pg_input_error_info('-', 'regoper');
|
|
|
|
message | detail | hint | sql_error_code
|
|
|
|
--------------------------------+--------+------+----------------
|
|
|
|
more than one operator named - | | | 42725
|
2022-12-27 18:26:01 +01:00
|
|
|
(1 row)
|
|
|
|
|
2023-02-28 00:04:13 +01:00
|
|
|
SELECT * FROM pg_input_error_info('ng_catalog.+(int4,int4)', 'regoperator');
|
|
|
|
message | detail | hint | sql_error_code
|
|
|
|
--------------------------------------------------+--------+------+----------------
|
|
|
|
operator does not exist: ng_catalog.+(int4,int4) | | | 42883
|
2022-12-27 18:26:01 +01:00
|
|
|
(1 row)
|
|
|
|
|
2023-02-28 00:04:13 +01:00
|
|
|
SELECT * FROM pg_input_error_info('-', 'regoperator');
|
|
|
|
message | detail | hint | sql_error_code
|
|
|
|
-----------------------------+--------+------+----------------
|
|
|
|
expected a left parenthesis | | | 22P02
|
2022-12-27 18:26:01 +01:00
|
|
|
(1 row)
|
|
|
|
|
2023-02-28 00:04:13 +01:00
|
|
|
SELECT * FROM pg_input_error_info('ng_catalog.now', 'regproc');
|
|
|
|
message | detail | hint | sql_error_code
|
|
|
|
------------------------------------------+--------+------+----------------
|
|
|
|
function "ng_catalog.now" does not exist | | | 42883
|
2022-12-27 18:26:01 +01:00
|
|
|
(1 row)
|
|
|
|
|
2023-02-28 00:04:13 +01:00
|
|
|
SELECT * FROM pg_input_error_info('ng_catalog.abs(numeric)', 'regprocedure');
|
|
|
|
message | detail | hint | sql_error_code
|
|
|
|
---------------------------------------------------+--------+------+----------------
|
|
|
|
function "ng_catalog.abs(numeric)" does not exist | | | 42883
|
2022-12-27 18:26:01 +01:00
|
|
|
(1 row)
|
|
|
|
|
2023-02-28 00:04:13 +01:00
|
|
|
SELECT * FROM pg_input_error_info('ng_catalog.abs(numeric', 'regprocedure');
|
|
|
|
message | detail | hint | sql_error_code
|
|
|
|
------------------------------+--------+------+----------------
|
|
|
|
expected a right parenthesis | | | 22P02
|
2022-12-27 18:26:01 +01:00
|
|
|
(1 row)
|
|
|
|
|
2023-02-28 00:04:13 +01:00
|
|
|
SELECT * FROM pg_input_error_info('regress_regrole_test', 'regrole');
|
|
|
|
message | detail | hint | sql_error_code
|
|
|
|
--------------------------------------------+--------+------+----------------
|
|
|
|
role "regress_regrole_test" does not exist | | | 42704
|
2022-12-27 18:26:01 +01:00
|
|
|
(1 row)
|
|
|
|
|
2023-02-28 00:04:13 +01:00
|
|
|
SELECT * FROM pg_input_error_info('no_such_type', 'regtype');
|
|
|
|
message | detail | hint | sql_error_code
|
|
|
|
------------------------------------+--------+------+----------------
|
|
|
|
type "no_such_type" does not exist | | | 42704
|
2022-12-27 18:26:01 +01:00
|
|
|
(1 row)
|
|
|
|
|
|
|
|
-- Some cases that should be soft errors, but are not yet
|
2023-02-28 00:04:13 +01:00
|
|
|
SELECT * FROM pg_input_error_info('incorrect type name syntax', 'regtype');
|
2022-12-27 18:26:01 +01:00
|
|
|
ERROR: syntax error at or near "type"
|
2023-02-28 00:04:13 +01:00
|
|
|
LINE 1: SELECT * FROM pg_input_error_info('incorrect type name synta...
|
2022-12-27 18:26:01 +01:00
|
|
|
^
|
|
|
|
CONTEXT: invalid type name "incorrect type name syntax"
|
2023-02-28 00:04:13 +01:00
|
|
|
SELECT * FROM pg_input_error_info('numeric(1,2,3)', 'regtype'); -- bogus typmod
|
2022-12-27 18:26:01 +01:00
|
|
|
ERROR: invalid NUMERIC type modifier
|
2023-02-28 00:04:13 +01:00
|
|
|
SELECT * FROM pg_input_error_info('way.too.many.names', 'regtype');
|
2022-12-27 18:26:01 +01:00
|
|
|
ERROR: improper qualified name (too many dotted names): way.too.many.names
|
2023-02-28 00:04:13 +01:00
|
|
|
SELECT * FROM pg_input_error_info('no_such_catalog.schema.name', 'regtype');
|
2022-12-27 18:26:01 +01:00
|
|
|
ERROR: cross-database references are not implemented: no_such_catalog.schema.name
|