Track collation versions for indexes.
authorThomas Munro <tmunro@postgresql.org>
Mon, 2 Nov 2020 06:50:45 +0000 (19:50 +1300)
committerThomas Munro <tmunro@postgresql.org>
Mon, 2 Nov 2020 12:19:50 +0000 (01:19 +1300)
commit257836a75585934cc05ed7a80bccf8190d41e056
tree5f3eb018d0f0609063669b81136036b79bf8f948
parentcd6f479e79f3a33ef7a919c6b6c0c498c790f154
Track collation versions for indexes.

Record the current version of dependent collations in pg_depend when
creating or rebuilding an index.  When accessing the index later, warn
that the index may be corrupted if the current version doesn't match.

Thanks to Douglas Doole, Peter Eisentraut, Christoph Berg, Laurenz Albe,
Michael Paquier, Robert Haas, Tom Lane and others for very helpful
discussion.

Author: Thomas Munro <thomas.munro@gmail.com>
Author: Julien Rouhaud <rjuju123@gmail.com>
Reviewed-by: Peter Eisentraut <peter.eisentraut@2ndquadrant.com> (earlier versions)
Discussion: https://postgr.es/m/CAEepm%3D0uEQCpfq_%2BLYFBdArCe4Ot98t1aR4eYiYTe%3DyavQygiQ%40mail.gmail.com
43 files changed:
doc/src/sgml/catalogs.sgml
doc/src/sgml/charset.sgml
doc/src/sgml/func.sgml
doc/src/sgml/ref/alter_index.sgml
doc/src/sgml/ref/pgupgrade.sgml
doc/src/sgml/ref/reindex.sgml
src/backend/catalog/dependency.c
src/backend/catalog/heap.c
src/backend/catalog/index.c
src/backend/catalog/pg_constraint.c
src/backend/catalog/pg_depend.c
src/backend/catalog/pg_type.c
src/backend/commands/collationcmds.c
src/backend/commands/tablecmds.c
src/backend/nodes/copyfuncs.c
src/backend/optimizer/util/plancat.c
src/backend/parser/gram.y
src/backend/utils/adt/pg_locale.c
src/backend/utils/adt/pg_upgrade_support.c
src/backend/utils/cache/relcache.c
src/bin/pg_dump/pg_backup.h
src/bin/pg_dump/pg_dump.c
src/bin/pg_dump/pg_dump.h
src/bin/pg_upgrade/dump.c
src/bin/pg_upgrade/option.c
src/bin/pg_upgrade/pg_upgrade.h
src/bin/psql/tab-complete.c
src/include/catalog/catversion.h
src/include/catalog/dependency.h
src/include/catalog/index.h
src/include/catalog/pg_depend.h
src/include/catalog/pg_type.h
src/include/nodes/parsenodes.h
src/include/utils/pg_locale.h
src/include/utils/rel.h
src/test/Makefile
src/test/locale/.gitignore
src/test/locale/Makefile
src/test/locale/t/001_index.pl [new file with mode: 0644]
src/test/regress/expected/collate.icu.utf8.out
src/test/regress/expected/create_index.out
src/test/regress/sql/collate.icu.utf8.sql
src/tools/pgindent/typedefs.list