summaryrefslogtreecommitdiff
path: root/src/backend/access/gist/gistxlog.c
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2013-01-17 16:35:46 +0200
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2013-01-17 16:46:16 +0200
commit9ee4d06f3fdde37b063b8a0f0fa0a2113ac12303 (patch)
tree692e6a1de1a5a48872958ab8554a57889be2c6ba /src/backend/access/gist/gistxlog.c
parentbba486f372ffa28d6a0b70a6b0ad7065429213d0 (diff)
downloadpostgresql-9ee4d06f3fdde37b063b8a0f0fa0a2113ac12303.tar.gz
Make GiST indexes on-disk compatible with 9.2 again.
The patch that turned XLogRecPtr into a uint64 inadvertently changed the on-disk format of GiST indexes, because the NSN field in the GiST page opaque is an XLogRecPtr. That breaks pg_upgrade. Revert the format of that field back to the two-field struct that XLogRecPtr was before. This is the same we did to LSNs in the page header to avoid changing on-disk format. Bump catversion, as this invalidates any existing GiST indexes built on 9.3devel.
Diffstat (limited to 'src/backend/access/gist/gistxlog.c')
-rw-r--r--src/backend/access/gist/gistxlog.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/backend/access/gist/gistxlog.c b/src/backend/access/gist/gistxlog.c
index e3a213e7da..c18065a780 100644
--- a/src/backend/access/gist/gistxlog.c
+++ b/src/backend/access/gist/gistxlog.c
@@ -66,7 +66,7 @@ gistRedoClearFollowRight(XLogRecPtr lsn, XLogRecord *record, int block_index,
*/
if (lsn >= PageGetLSN(page))
{
- GistPageGetOpaque(page)->nsn = lsn;
+ GistPageSetNSN(page, lsn);
GistClearFollowRight(page);
PageSetLSN(page, lsn);
@@ -271,7 +271,7 @@ gistRedoPageSplitRecord(XLogRecPtr lsn, XLogRecord *record)
if (newpage->header->blkno == GIST_ROOT_BLKNO)
{
GistPageGetOpaque(page)->rightlink = InvalidBlockNumber;
- GistPageGetOpaque(page)->nsn = xldata->orignsn;
+ GistPageSetNSN(page, xldata->orignsn);
GistClearFollowRight(page);
}
else
@@ -280,7 +280,7 @@ gistRedoPageSplitRecord(XLogRecPtr lsn, XLogRecord *record)
GistPageGetOpaque(page)->rightlink = xlrec.page[i + 1].header->blkno;
else
GistPageGetOpaque(page)->rightlink = xldata->origrlink;
- GistPageGetOpaque(page)->nsn = xldata->orignsn;
+ GistPageSetNSN(page, xldata->orignsn);
if (i < xlrec.data->npage - 1 && !isrootsplit &&
xldata->markfollowright)
GistMarkFollowRight(page);