aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2022-03-16 12:29:47 +0900
committerMichael Paquier <michael@paquier.xyz>2022-03-16 12:29:47 +0900
commitdc5b3bdae31690e11839079e15b74ba0df0aa167 (patch)
treef7dbf32951b515a244544ddc25f62b613bd0badb /contrib
parentea70f6945029b622ea28d53c7a32354d1d033246 (diff)
downloadpostgresql-dc5b3bdae31690e11839079e15b74ba0df0aa167.tar.gz
postgresql-dc5b3bdae31690e11839079e15b74ba0df0aa167.zip
pageinspect: Fix memory context allocation of page in brin_revmap_data()
This caused the function to fail, as the aligned copy of the raw page given by the function caller was not saved in the correct memory context, which needs to be multi_call_memory_ctx in this case. Issue introduced by 076f4d9. Per buildfarm members sifika, mylodon and longfin. I have reproduced that locally with macos. Discussion: https://postgr.es/m/YjFPOtfCW6yLXUeM@paquier.xyz Backpatch-through: 10
Diffstat (limited to 'contrib')
-rw-r--r--contrib/pageinspect/brinfuncs.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/contrib/pageinspect/brinfuncs.c b/contrib/pageinspect/brinfuncs.c
index ddf1380d741..ca9ece64d2e 100644
--- a/contrib/pageinspect/brinfuncs.c
+++ b/contrib/pageinspect/brinfuncs.c
@@ -383,15 +383,15 @@ brin_revmap_data(PG_FUNCTION_ARGS)
MemoryContext mctx;
Page page;
- /* minimally verify the page we got */
- page = verify_brin_page(raw_page, BRIN_PAGETYPE_REVMAP, "revmap");
-
/* create a function context for cross-call persistence */
fctx = SRF_FIRSTCALL_INIT();
/* switch to memory context appropriate for multiple function calls */
mctx = MemoryContextSwitchTo(fctx->multi_call_memory_ctx);
+ /* minimally verify the page we got */
+ page = verify_brin_page(raw_page, BRIN_PAGETYPE_REVMAP, "revmap");
+
state = palloc(sizeof(*state));
state->tids = ((RevmapContents *) PageGetContents(page))->rm_tids;
state->idx = 0;