From: Peter Eisentraut Date: Fri, 12 May 2023 07:45:50 +0000 (+0200) Subject: initdb: Set collversion for standard collation UNICODE X-Git-Url: http://git.postgresql.org/gitweb/static/gitweb.js?a=commitdiff_plain;h=e32701b8d285cd402f75fc9059d083e89ee8166b;p=users%2Frhaas%2Fpostgres.git initdb: Set collversion for standard collation UNICODE Since the behavior of the UNICODE collation can change with new ICU/Unicode versions, we need to apply the versioning mechanism to it. We do this with an UPDATE command in initdb; this is similar to how we put the collation version into pg_database already. Reported-by: Daniel Verite Discussion: https://www.postgresql.org/message-id/49417853-7bdd-4b23-a4e9-04c7aff33821@manitou-mail.org --- diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c index 2c208ead01..e03d498b1e 100644 --- a/src/bin/initdb/initdb.c +++ b/src/bin/initdb/initdb.c @@ -1695,6 +1695,13 @@ setup_description(FILE *cmdfd) static void setup_collation(FILE *cmdfd) { + /* + * Set the collation version for collations defined in pg_collation.dat, + * but not the ones where we know that the collation behavior will never + * change. + */ + PG_CMD_PUTS("UPDATE pg_collation SET collversion = pg_collation_actual_version(oid) WHERE collname = 'unicode';\n\n"); + /* Import all collations we can find in the operating system */ PG_CMD_PUTS("SELECT pg_import_system_collations('pg_catalog');\n\n"); } diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h index a091f2ca26..d10cc28b0c 100644 --- a/src/include/catalog/catversion.h +++ b/src/include/catalog/catversion.h @@ -57,6 +57,6 @@ */ /* yyyymmddN */ -#define CATALOG_VERSION_NO 202305041 +#define CATALOG_VERSION_NO 202305121 #endif