Re: Collation versioning
Julien Rouhaud <rjuju123@gmail.com>
From: Julien Rouhaud <rjuju123@gmail.com>
To: Laurenz Albe <laurenz.albe@cybertec.at>
Cc: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>, Thomas Munro <thomas.munro@gmail.com>, Robert Haas <robertmhaas@gmail.com>, Michael Paquier <michael@paquier.xyz>, Douglas Doole <dougdoole@gmail.com>, Christoph Berg <myon@debian.org>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2020-02-12T20:18:32Z
Lists: pgsql-hackers
On Wed, Feb 12, 2020 at 08:55:06PM +0100, Laurenz Albe wrote: > On Wed, 2020-02-12 at 20:13 +0100, Julien Rouhaud wrote: > > On Wed, Feb 05, 2020 at 05:17:25PM +0100, Julien Rouhaud wrote: > > > Note that I didn't change any syntax (or switched to native functions > > > for the binary pg_dump) as it's still not clear to me what exactly > > > should be implemented. > > > > Hearing no complaints on the suggestions, I'm attaching v8 to address that: > > > > - pg_dump is now using a binary_upgrade_set_index_coll_version() function > > rather than plain DDL > > - the additional DDL is now of the form: > > ALTER INDEX name ALTER COLLATION name REFRESH VERSION > > > > I also added an alternate file for the collate.icu.utf8, so the build farm bot > > should turn green for the linux part. > > diff --git a/doc/src/sgml/ref/alter_index.sgml b/doc/src/sgml/ref/alter_index.sgml > index 6d34dbb74e..8661b031e9 100644 > --- a/doc/src/sgml/ref/alter_index.sgml > +++ b/doc/src/sgml/ref/alter_index.sgml > @@ -109,6 +110,18 @@ ALTER INDEX ALL IN TABLESPACE <replaceable class="parameter">name</replaceable> > </listitem> > </varlistentry> > > + <varlistentry> > + <term><literal>ALTER COLLATION</literal></term> > + <listitem> > + <para> > + This form update the index existing dependency on a specific collation, > + to specificy the the currently installed collation version is compatible > + with the version used the last time the index was built. Be aware that > + an incorrect use of this form can hide a corruption on the index. > + </para> > + </listitem> > + </varlistentry> > + > <varlistentry> > <term><literal>SET ( <replaceable class="parameter">storage_parameter</replaceable> = <replaceable class="parameter">value</replaceable> [, ... ] )</literal></term> > <listitem> > > This description could do with some love. Perhaps: > > This command declares that the index is compatible with the currently > installed version of the collations that determine its order. It is used > to silence warnings caused by collation > version incompatibilities and > should be called after rebuilding the index or otherwise verifying its > consistency. Be aware that incorrect use of this command can hide > index corruption. Thanks a lot, that's indeed way better! I'll add it in the round of patch. > I didn't study the patch in detail, but do I get it right that there will be no > warnings about version incompatibilities with libc collations? No, libc is also be supported (including the default collation), as long as we have a way to get the version. Unfortunately, that means only linux/glibc. I think that there was some previous discussion to work around that limitation for other systems, using some kind of hash of the underlying collation files, as Peter mentioned recently, but that's not part of this patchset.
Commits
-
Doc: Document known problem with Windows collation versions.
- 1bf946bd43e5 14.0 landed
-
Add collation versions for FreeBSD.
- ca051d8b101d 14.0 landed
-
Tolerate version lookup failure for old style Windows locale names.
- 9f12a3b95dd5 14.0 landed
-
Track collation versions for indexes.
- 257836a75585 14.0 landed
-
Add pg_depend.refobjversion.
- cd6f479e79f3 14.0 landed
-
Remove pg_collation.collversion.
- 7d1297df0830 14.0 landed
-
Fix the MSVC build for versions 2015 and later.
- a169155453e3 13.0 cited
-
Add collation versions for Windows.
- 352f6f2df60f 13.0 cited
-
Implement type regcollation
- a2b1faa0f279 13.0 landed
-
Use libc version as a collation version on glibc systems.
- d5ac14f9ccdd 13.0 landed
- 9f90b1d08d79 13.0 landed
-
Make type "name" collation-aware.
- 586b98fdf1aa 12.0 cited