From e32701b8d285cd402f75fc9059d083e89ee8166b Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Fri, 12 May 2023 09:45:50 +0200 Subject: [PATCH] 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 --- src/bin/initdb/initdb.c | 7 +++++++ src/include/catalog/catversion.h | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c index 2c208ead019..e03d498b1e0 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 a091f2ca264..d10cc28b0c1 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