postgres.git / summary / log / commit / refs

commit    07e343513b85ea152f4cc2d3afeb2d4c87bbda77
Author:   Michael Paquier <michael@paquier.xyz>
Date:     Wed Mar 16 03:30:07 2022 +0000
First released in: 15.0, 10.21, 11.16, 12.11, 13.7, 14.3

    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


contrib/pageinspect/brinfuncs.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/contrib/pageinspect/brinfuncs.c b/contrib/pageinspect/brinfuncs.c index 64d8edb9005..49d9820012d 100644 --- a/contrib/pageinspect/brinfuncs.c +++ b/contrib/pageinspect/brinfuncs.c @@ -374,15 +374,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; [parent: c42b88932b9d]