On Thu, Oct 8, 2015 at 12:49 PM, Thomas Munro <thomas.mu...@enterprisedb.com > wrote:
> On Thu, Oct 8, 2015 at 5:52 AM, Peter Geoghegan > <peter.geoghega...@gmail.com> wrote: > > On Wed, Oct 7, 2015 at 6:25 AM, Tom Lane <t...@sss.pgh.pa.us> wrote: > >> The only real way out of such a situation is to REINDEX affected > indexes. > >> Refusing to start the server not only doesn't contribute to a solution, > >> but makes it impossible to fix manually. > > > > I agree that that would be almost as bad as carrying on, because there > > is no reason to think that the locale thing can easily be rolled back. > > That was my point, in fact. > > I have contemplated a maintenance script that would track either the > md5 checksums of the /usr/lib/locale/*/LC_COLLATE files or the version > of installed locale packages and automatically reindex things when > they change (I guess after restarting the cluster to clear any glibc > caches that might be lurking in long running backends). Or at least > tell me that's needed. Obviously completely OS-specific... > I got around to trying this on a recent rainy day: https://github.com/macdice/check_pg_collations/blob/master/check_pg_collations It needs Python and psycopg2. It notices when LC_COLLATE files' checksums change, and generates REINDEX commands on stdout. It seems to work OK on Debian, but I haven't tested much. Pull requests welcome :-) But I guess it would be much cooler as a pure plpgsql extension. -- Thomas Munro http://www.enterprisedb.com