diff options
author | Peter Eisentraut <peter@eisentraut.org> | 2022-02-14 08:09:04 +0100 |
---|---|---|
committer | Peter Eisentraut <peter@eisentraut.org> | 2022-02-14 08:27:26 +0100 |
commit | 37851a8b83d3d57ca48736093b10aa5f3bc0c177 (patch) | |
tree | 5da6f597063d9579937e80aaf66d92c50ef73029 /src/bin/initdb/initdb.c | |
parent | 9898c5e03c40c133a9a01d8b2b36cb7c990b30d5 (diff) |
Database-level collation version tracking
This adds to database objects the same version tracking that collation
objects have. There is a new pg_database column datcollversion that
stores the version, a new function
pg_database_collation_actual_version() to get the version from the
operating system, and a new subcommand ALTER DATABASE ... REFRESH
COLLATION VERSION.
This was not originally added together with pg_collation.collversion,
since originally version tracking was only supported for ICU, and ICU
on a database-level is not currently supported. But we now have
version tracking for glibc (since PG13), FreeBSD (since PG14), and
Windows (since PG13), so this is useful to have now.
Reviewed-by: Julien Rouhaud <rjuju123@gmail.com>
Discussion: https://www.postgresql.org/message-id/flat/f0ff3190-29a3-5b39-a179-fa32eee57db6%40enterprisedb.com
Diffstat (limited to 'src/bin/initdb/initdb.c')
-rw-r--r-- | src/bin/initdb/initdb.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c index d78e8e67b8d..97f15971e2b 100644 --- a/src/bin/initdb/initdb.c +++ b/src/bin/initdb/initdb.c @@ -1858,6 +1858,18 @@ make_template0(FILE *cmdfd) CppAsString2(Template0ObjectId) ";\n\n", /* + * template0 shouldn't have any collation-dependent objects, so unset + * the collation version. This disables collation version checks when + * making a new database from it. + */ + "UPDATE pg_database SET datcollversion = NULL WHERE datname = 'template0';\n\n", + + /* + * While we are here, do set the collation version on template1. + */ + "UPDATE pg_database SET datcollversion = pg_database_collation_actual_version(oid) WHERE datname = 'template1';\n\n", + + /* * Explicitly revoke public create-schema and create-temp-table * privileges in template1 and template0; else the latter would be on * by default |