pgsql: Support more object types within CREATE SCHEMA. - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Support more object types within CREATE SCHEMA.
Date
Msg-id E1w9pR6-003HJS-2v@gemulon.postgresql.org
Whole thread
List pgsql-committers
Support more object types within CREATE SCHEMA.

Having rejected the principle that we should know how to re-order
the sub-commands of CREATE SCHEMA, there is not really anything
except a little coding to stop us from supporting more object types.
This patch adds support for creating functions (including procedures
and aggregates), operators, types (including domains), collations,
and text search objects.

SQL:2021 specifies that we should allow functions, procedures,
types, domains, and collations, so this moves us a great deal
closer to full SQL compatibility of CREATE SCHEMA.  What remains
missing from their list are casts, transforms, roles, and some
object types we don't support yet (e.g. CREATE CHARACTER SET).
Supporting casts or transforms would be problematic because
they don't have names at all, let alone schema-qualified names,
so it'd be quite a stretch to say that they belong to a schema.
Roles likewise are not schema-qualified, plus they are global
to a cluster, making it even less reasonable to consider them
as belonging to a schema.  So I don't see us trying to complete
the list.

User-defined aggregates and operators are outside the spec's ken,
as are text search objects, so adding them does not do anything for
spec compatibility.  But they go along with these other object types,
plus it takes no additional code to support them since they are
represented as DefineStmts like some variants of CREATE TYPE.
It would indeed take some effort to reject them.

Author: Kirill Reshke <reshkekirill@gmail.com>
Author: Jian He <jian.universality@gmail.com>
Author: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/CALdSSPh4jUSDsWu3K58hjO60wnTRR0DuO4CKRcwa8EVuOSfXxg@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/d516974840f4059d331ae6057ede3e4edd3c6747

Modified Files
--------------
doc/src/sgml/ref/create_schema.sgml                |  25 +++-
src/backend/parser/gram.y                          |   3 +
src/backend/parser/parse_utilcmd.c                 |  88 +++++++++++++
src/bin/psql/tab-complete.in.c                     |  22 ++--
src/fe_utils/psqlscan.l                            |  22 ++--
.../test_ddl_deparse/expected/create_schema.out    |  38 +++++-
.../modules/test_ddl_deparse/sql/create_schema.sql |  18 ++-
src/test/regress/expected/create_schema.out        | 142 ++++++++++++++++++++-
src/test/regress/sql/create_schema.sql             |  76 ++++++++++-
9 files changed, 408 insertions(+), 26 deletions(-)


pgsql-committers by date:

Previous
From: Masahiko Sawada
Date:
Subject: pgsql: Allow autovacuum to use parallel vacuum workers.
Next
From: Robert Haas
Date:
Subject: pgsql: auto_explain: Add new GUC, auto_explain.log_extension_options.