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 <daniel@manitou-mail.org>
Discussion: https://www.postgresql.org/message-id/49417853-7bdd-4b23-a4e9-04c7aff33821@manitou-mail.org
This commit is contained in:
Peter Eisentraut 2023-05-12 09:45:50 +02:00
parent c8b881d21f
commit e32701b8d2
2 changed files with 8 additions and 1 deletions

View File

@ -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");
}

View File

@ -57,6 +57,6 @@
*/
/* yyyymmddN */
#define CATALOG_VERSION_NO 202305041
#define CATALOG_VERSION_NO 202305121
#endif