summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlvaro Herrera2017-04-07 19:58:54 +0000
committerAlvaro Herrera2017-04-07 20:11:56 +0000
commit817cb100136a15796cbd9e70f49d20625108d782 (patch)
tree7a2c724d709b609aa8573e15e7e47b9476416daf
parent5c4488478b182983f290a61fc8cf2ec83548622b (diff)
Fix new BRIN desummarize WAL record
The WAL-writing piece was forgetting to set the pages-per-range value. Also, fix the declared type of struct member heapBlk, which I mistakenly set as OffsetNumber rather than BlockNumber. Problem was introduced by commit c655899ba9ae (April 1st). Any system that tries to replay the new WAL record written before this fix is likely to die on replay and require pg_resetwal. Reported by Tom Lane. Discussion: https://postgr.es/m/[email protected]
-rw-r--r--src/backend/access/brin/brin_revmap.c1
-rw-r--r--src/include/access/brin_xlog.h2
2 files changed, 2 insertions, 1 deletions
diff --git a/src/backend/access/brin/brin_revmap.c b/src/backend/access/brin/brin_revmap.c
index 35e53a2bac..9ed279bf42 100644
--- a/src/backend/access/brin/brin_revmap.c
+++ b/src/backend/access/brin/brin_revmap.c
@@ -417,6 +417,7 @@ brinRevmapDesummarizeRange(Relation idxrel, BlockNumber heapBlk)
xl_brin_desummarize xlrec;
XLogRecPtr recptr;
+ xlrec.pagesPerRange = revmap->rm_pagesPerRange;
xlrec.heapBlk = heapBlk;
xlrec.regOffset = regOffset;
diff --git a/src/include/access/brin_xlog.h b/src/include/access/brin_xlog.h
index 89ed334a01..e08f9d7302 100644
--- a/src/include/access/brin_xlog.h
+++ b/src/include/access/brin_xlog.h
@@ -134,7 +134,7 @@ typedef struct xl_brin_desummarize
{
BlockNumber pagesPerRange;
/* page number location to set to invalid */
- OffsetNumber heapBlk;
+ BlockNumber heapBlk;
/* offset of item to delete in regular index page */
OffsetNumber regOffset;
} xl_brin_desummarize;