diff options
| author | Tom Lane | 2024-03-30 17:57:19 +0000 |
|---|---|---|
| committer | Tom Lane | 2024-03-30 17:57:19 +0000 |
| commit | b154d8a6d0e52e5f6b09739639fdf55fa88bc6b8 (patch) | |
| tree | fe758a1a6130bb68b0f3f93d05d1276ef0014a78 /src/test | |
| parent | ecf741cfae0603d1df269d8b799455bbcaef86e7 (diff) | |
Add pg_basetype() function to extract a domain's base type.
This SQL-callable function behaves much like our internal utility
function getBaseType(), except it returns NULL rather than failing for
an invalid type OID. (That behavior is modeled on our experience with
other catalog-inquiry functions such as the ACL checking functions.)
The key advantage over doing a join to pg_type is that it will loop
as needed to find the bottom base type of a nest of domains.
Steve Chavez, reviewed by jian he and others
Discussion: https://postgr.es/m/CAGRrpzZSX8j=MQcbCSEisFA=ic=K3bknVfnFjAv1diVJxFHJvg@mail.gmail.com
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/regress/expected/domain.out | 25 | ||||
| -rw-r--r-- | src/test/regress/sql/domain.sql | 12 |
2 files changed, 37 insertions, 0 deletions
diff --git a/src/test/regress/expected/domain.out b/src/test/regress/expected/domain.out index dc58793e3f5..fa8459e10ff 100644 --- a/src/test/regress/expected/domain.out +++ b/src/test/regress/expected/domain.out @@ -1244,6 +1244,31 @@ alter domain testdomain1 rename constraint unsigned to unsigned_foo; alter domain testdomain1 drop constraint unsigned_foo; drop domain testdomain1; -- +-- Get the base type of a domain +-- +create domain mytext as text; +create domain mytext_child_1 as mytext; +select pg_basetype('mytext'::regtype); + pg_basetype +------------- + text +(1 row) + +select pg_basetype('mytext_child_1'::regtype); + pg_basetype +------------- + text +(1 row) + +select pg_basetype(1); -- expect NULL not error + pg_basetype +------------- + +(1 row) + +drop domain mytext cascade; +NOTICE: drop cascades to type mytext_child_1 +-- -- Information schema -- SELECT * FROM information_schema.column_domain_usage diff --git a/src/test/regress/sql/domain.sql b/src/test/regress/sql/domain.sql index ae1b7fbf97a..763c68f1db6 100644 --- a/src/test/regress/sql/domain.sql +++ b/src/test/regress/sql/domain.sql @@ -839,6 +839,18 @@ alter domain testdomain1 rename constraint unsigned to unsigned_foo; alter domain testdomain1 drop constraint unsigned_foo; drop domain testdomain1; +-- +-- Get the base type of a domain +-- +create domain mytext as text; +create domain mytext_child_1 as mytext; + +select pg_basetype('mytext'::regtype); +select pg_basetype('mytext_child_1'::regtype); +select pg_basetype(1); -- expect NULL not error + +drop domain mytext cascade; + -- -- Information schema |
