diff options
| author | Robert Haas | 2014-04-08 14:27:56 +0000 |
|---|---|---|
| committer | Robert Haas | 2014-04-08 14:27:56 +0000 |
| commit | 0886fc6a5c75b294544263ea979b9cf6195407d9 (patch) | |
| tree | 2cf04aae147dc80a980cab40a39d23af92822d0d /src/test/regress | |
| parent | 7ca32e255ba4f7e55bbdbcf0df996ac62798672b (diff) | |
Add new to_reg* functions for error-free OID lookups.
These functions won't throw an error if the object doesn't exist,
or if (for functions and operators) there's more than one matching
object.
Yugo Nagata and Nozomi Anzai, reviewed by Amit Khandekar, Marti
Raudsepp, Amit Kapila, and me.
Diffstat (limited to 'src/test/regress')
| -rw-r--r-- | src/test/regress/expected/regproc.out | 188 | ||||
| -rw-r--r-- | src/test/regress/parallel_schedule | 2 | ||||
| -rw-r--r-- | src/test/regress/serial_schedule | 1 | ||||
| -rw-r--r-- | src/test/regress/sql/regproc.sql | 61 |
4 files changed, 251 insertions, 1 deletions
diff --git a/src/test/regress/expected/regproc.out b/src/test/regress/expected/regproc.out new file mode 100644 index 00000000000..56ab2452234 --- /dev/null +++ b/src/test/regress/expected/regproc.out @@ -0,0 +1,188 @@ +-- +-- regproc +-- +/* If objects exist, return oids */ +-- without schemaname +SELECT regoper('||/'); + regoper +--------- + ||/ +(1 row) + +SELECT regproc('now'); + regproc +--------- + now +(1 row) + +SELECT regclass('pg_class'); + regclass +---------- + pg_class +(1 row) + +SELECT regtype('int4'); + regtype +--------- + integer +(1 row) + +SELECT to_regoper('||/'); + to_regoper +------------ + ||/ +(1 row) + +SELECT to_regproc('now'); + to_regproc +------------ + now +(1 row) + +SELECT to_regclass('pg_class'); + to_regclass +------------- + pg_class +(1 row) + +SELECT to_regtype('int4'); + to_regtype +------------ + integer +(1 row) + +-- with schemaname +SELECT regoper('pg_catalog.||/'); + regoper +--------- + ||/ +(1 row) + +SELECT regproc('pg_catalog.now'); + regproc +--------- + now +(1 row) + +SELECT regclass('pg_catalog.pg_class'); + regclass +---------- + pg_class +(1 row) + +SELECT regtype('pg_catalog.int4'); + regtype +--------- + integer +(1 row) + +SELECT to_regoper('pg_catalog.||/'); + to_regoper +------------ + ||/ +(1 row) + +SELECT to_regproc('pg_catalog.now'); + to_regproc +------------ + now +(1 row) + +SELECT to_regclass('pg_catalog.pg_class'); + to_regclass +------------- + pg_class +(1 row) + +SELECT to_regtype('pg_catalog.int4'); + to_regtype +------------ + integer +(1 row) + +/* If objects don't exist, raise errors. */ +-- without schemaname +SELECT regoper('||//'); +ERROR: operator does not exist: ||// +LINE 3: SELECT regoper('||//'); + ^ +SELECT regproc('know'); +ERROR: function "know" does not exist +LINE 1: SELECT regproc('know'); + ^ +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.||/'); +ERROR: schema "ng_catalog" does not exist +LINE 1: SELECT regoper('ng_catalog.||/'); + ^ +SELECT regproc('ng_catalog.now'); +ERROR: schema "ng_catalog" does not exist +LINE 1: SELECT regproc('ng_catalog.now'); + ^ +SELECT regclass('ng_catalog.pg_class'); +ERROR: schema "ng_catalog" does not exist +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'); + ^ +/* If objects don't exist, return NULL with no error. */ +-- without schemaname +SELECT to_regoper('||//'); + to_regoper +------------ + +(1 row) + +SELECT to_regproc('know'); + to_regproc +------------ + +(1 row) + +SELECT to_regclass('pg_classes'); + to_regclass +------------- + +(1 row) + +SELECT to_regtype('int3'); + to_regtype +------------ + +(1 row) + +-- with schemaname +SELECT to_regoper('ng_catalog.||/'); + to_regoper +------------ + +(1 row) + +SELECT to_regproc('ng_catalog.now'); + to_regproc +------------ + +(1 row) + +SELECT to_regclass('ng_catalog.pg_class'); + to_regclass +------------- + +(1 row) + +SELECT to_regtype('ng_catalog.int4'); + to_regtype +------------ + +(1 row) + diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule index c62be2a023e..c0416f4fb9d 100644 --- a/src/test/regress/parallel_schedule +++ b/src/test/regress/parallel_schedule @@ -13,7 +13,7 @@ test: tablespace # ---------- # The first group of parallel tests # ---------- -test: boolean char name varchar text int2 int4 int8 oid float4 float8 bit numeric txid uuid enum money rangetypes pg_lsn +test: boolean char name varchar text int2 int4 int8 oid float4 float8 bit numeric txid uuid enum money rangetypes pg_lsn regproc # Depends on things setup during char, varchar and text test: strings diff --git a/src/test/regress/serial_schedule b/src/test/regress/serial_schedule index 885ca9aa5dd..16a190507d5 100644 --- a/src/test/regress/serial_schedule +++ b/src/test/regress/serial_schedule @@ -20,6 +20,7 @@ test: enum test: money test: rangetypes test: pg_lsn +test: regproc test: strings test: numerology test: point diff --git a/src/test/regress/sql/regproc.sql b/src/test/regress/sql/regproc.sql new file mode 100644 index 00000000000..1334cfb7aab --- /dev/null +++ b/src/test/regress/sql/regproc.sql @@ -0,0 +1,61 @@ +-- +-- regproc +-- + +/* If objects exist, return oids */ + +-- without schemaname + +SELECT regoper('||/'); +SELECT regproc('now'); +SELECT regclass('pg_class'); +SELECT regtype('int4'); + +SELECT to_regoper('||/'); +SELECT to_regproc('now'); +SELECT to_regclass('pg_class'); +SELECT to_regtype('int4'); + +-- with schemaname + +SELECT regoper('pg_catalog.||/'); +SELECT regproc('pg_catalog.now'); +SELECT regclass('pg_catalog.pg_class'); +SELECT regtype('pg_catalog.int4'); + +SELECT to_regoper('pg_catalog.||/'); +SELECT to_regproc('pg_catalog.now'); +SELECT to_regclass('pg_catalog.pg_class'); +SELECT to_regtype('pg_catalog.int4'); + +/* If objects don't exist, raise errors. */ + +-- without schemaname + +SELECT regoper('||//'); +SELECT regproc('know'); +SELECT regclass('pg_classes'); +SELECT regtype('int3'); + +-- with schemaname + +SELECT regoper('ng_catalog.||/'); +SELECT regproc('ng_catalog.now'); +SELECT regclass('ng_catalog.pg_class'); +SELECT regtype('ng_catalog.int4'); + +/* If objects don't exist, return NULL with no error. */ + +-- without schemaname + +SELECT to_regoper('||//'); +SELECT to_regproc('know'); +SELECT to_regclass('pg_classes'); +SELECT to_regtype('int3'); + +-- with schemaname + +SELECT to_regoper('ng_catalog.||/'); +SELECT to_regproc('ng_catalog.now'); +SELECT to_regclass('ng_catalog.pg_class'); +SELECT to_regtype('ng_catalog.int4'); |
