I broke pg_upgrade for GiST
Heikki Linnakangas <hlinnakangas@vmware.com>
From: Heikki Linnakangas <hlinnakangas@vmware.com>
To: PostgreSQL-development <pgsql-hackers@postgreSQL.org>
Date: 2013-01-16T12:18:21Z
Lists: pgsql-hackers
Attachments
- make-gist-on-disk-compatible-again-1.patch (text/x-diff) patch
I just realized that my patch that turned XLogRecPtr into a uint64 changed the on-disk format of GiST indexes, because the NSN field in the page header is an XLogRecPtr. Oops. Fortunately that's easy to fix. I avoided the same issue with LSNs by continuing to use the old two-field struct in the on-disk format, we just need to do the same for the NSN field in GiST. Patch attached. This got me thinking: although the problem is immediately visible when you try to run queries on an upgraded gist index - you get incorrect results - the test procedure explained in TESTING file and performed by tests.h won't catch this. We're never going to have full coverage of all possible incompatibilities, but it would be nice to have at least a simple test suite that creates an index using each indexam, and checks that they still work after upgrade. - Heikki