postgresql/src/fe_utils
Tom Lane d516974840 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
2026-04-06 15:16:25 -04:00
..
.gitignore Move psql's psqlscan.l into src/fe_utils. 2016-03-24 20:28:47 -04:00
archive.c Update copyright for 2026 2026-01-01 13:24:10 -05:00
astreamer_file.c Harden astreamer tar parsing logic against archives it can't handle. 2026-04-02 12:20:36 -04:00
astreamer_gzip.c Fix multiple bugs in astreamer pipeline code. 2026-03-29 09:01:47 -04:00
astreamer_lz4.c Fix poorly-sized buffers in astreamer compression modules. 2026-03-24 12:17:12 -04:00
astreamer_tar.c Harden astreamer tar parsing logic against archives it can't handle. 2026-04-02 12:20:36 -04:00
astreamer_zstd.c Fix poorly-sized buffers in astreamer compression modules. 2026-03-24 12:17:12 -04:00
cancel.c Update copyright for 2026 2026-01-01 13:24:10 -05:00
conditional.c fe_utils: Sprinkle some pg_malloc_object() and pg_malloc_array() 2026-02-24 12:34:42 +09:00
connect_utils.c Update copyright for 2026 2026-01-01 13:24:10 -05:00
Makefile Update copyright for 2026 2026-01-01 13:24:10 -05:00
mbprint.c Update copyright for 2026 2026-01-01 13:24:10 -05:00
meson.build meson: allow disabling building/installation of static libraries. 2026-02-23 16:45:40 +01:00
option_utils.c pg_dumpall: Fix handling of conflicting options. 2026-03-06 14:00:04 -06:00
parallel_slot.c Update copyright for 2026 2026-01-01 13:24:10 -05:00
print.c fe_utils: Sprinkle some pg_malloc_object() and pg_malloc_array() 2026-02-24 12:34:42 +09:00
psqlscan.l Support more object types within CREATE SCHEMA. 2026-04-06 15:16:25 -04:00
query_utils.c Update copyright for 2026 2026-01-01 13:24:10 -05:00
recovery_gen.c Update copyright for 2026 2026-01-01 13:24:10 -05:00
simple_list.c fe_utils: Sprinkle some pg_malloc_object() and pg_malloc_array() 2026-02-24 12:34:42 +09:00
string_utils.c Disallow CR and LF in database, role, and tablespace names 2026-02-23 11:19:13 -05:00
version.c Update copyright for 2026 2026-01-01 13:24:10 -05:00