postgres.git / summary / log / commit / refs

commit    b30282fccfa34238492c0f64808e7b4aa4ef72b3
Author:   Michael Paquier <michael@paquier.xyz>
Date:     Sat Jan 29 01:23:17 2022 +0000

    Fix incorrect memory context switch in COPY TO execution
    
    c532d15 has split the logic of COPY commands into multiple files, one
    change being to move the internals of BeginCopy() to BeginCopyTo().
    Originally the code was written so as we'd switch back-and-forth between
    the current execution memory context and the dedicated memory context
    for the COPY command, and this refactoring has introduced an extra
    switch to the current memory context from the COPY context once
    BeginCopyTo() is done with the past logic coming from BeginCopy().
    
    The code was correctly doing the analyze, rewrite and planning phases in
    the COPY context, but it was not assigning "copy_file" (FILE* used when
    copying to a source file) and "filename" in the COPY context, making the
    COPY status data inconsistent.
    
    Author: Bharath Rupireddy
    Reviewed-by: Japin Li
    Discussion: https://postgr.es/m/CALj2ACWvVa69foi9jhHFY=2BuHxAoYboyE+vXQTARwxZcJnVrQ@mail.gmail.com
    Backpatch-through: 14


src/backend/commands/copyto.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/backend/commands/copyto.c b/src/backend/commands/copyto.c index b6eacd5baa8..b6a4b77053a 100644 --- a/src/backend/commands/copyto.c +++ b/src/backend/commands/copyto.c @@ -657,8 +657,6 @@ BeginCopyTo(ParseState *pstate, cstate->copy_dest = COPY_FILE; /* default */ - MemoryContextSwitchTo(oldcontext); - if (pipe) { progress_vals[1] = PROGRESS_COPY_TYPE_PIPE; [parent: d99166ed4f6e]