diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2013-01-17 16:35:46 +0200 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2013-01-17 16:46:16 +0200 |
commit | 9ee4d06f3fdde37b063b8a0f0fa0a2113ac12303 (patch) | |
tree | 692e6a1de1a5a48872958ab8554a57889be2c6ba /src/backend/access/gist/gistxlog.c | |
parent | bba486f372ffa28d6a0b70a6b0ad7065429213d0 (diff) | |
download | postgresql-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.c | 6 |
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); |