Database-level collation version tracking
commit37851a8b83d3d57ca48736093b10aa5f3bc0c177
authorPeter Eisentraut <peter@eisentraut.org>
Mon, 14 Feb 2022 07:09:04 +0000 (14 08:09 +0100)
committerPeter Eisentraut <peter@eisentraut.org>
Mon, 14 Feb 2022 07:27:26 +0000 (14 08:27 +0100)
tree5da6f597063d9579937e80aaf66d92c50ef73029
parent9898c5e03c40c133a9a01d8b2b36cb7c990b30d5
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
22 files changed:
doc/src/sgml/catalogs.sgml
doc/src/sgml/func.sgml
doc/src/sgml/ref/alter_collation.sgml
doc/src/sgml/ref/alter_database.sgml
doc/src/sgml/ref/create_database.sgml
src/backend/commands/dbcommands.c
src/backend/parser/gram.y
src/backend/tcop/utility.c
src/backend/utils/init/postinit.c
src/bin/initdb/initdb.c
src/bin/pg_dump/pg_dump.c
src/bin/psql/tab-complete.c
src/include/catalog/catversion.h
src/include/catalog/pg_database.h
src/include/catalog/pg_proc.dat
src/include/commands/dbcommands.h
src/include/nodes/nodes.h
src/include/nodes/parsenodes.h
src/test/regress/expected/collate.icu.utf8.out
src/test/regress/expected/collate.linux.utf8.out
src/test/regress/sql/collate.icu.utf8.sql
src/test/regress/sql/collate.linux.utf8.sql