On Wed, Jan 19, 2022 at 7:51 PM Japin Li <japi...@hotmail.com> wrote: > > > Hi, hackers > > When I read the code of COPY ... FROM ..., I find there is a redundant > MemoryContextSwith() in BeginCopyFrom(). In BeginCopyFrom, it creates > a COPY memory context and then switches to it, in the middle of this > function, it switches to the oldcontext and immediately switches back to > COPY memory context, IMO, this is redundant, and can be removed safely.
+1. It looks like a thinko from c532d15d. There's no code in between, so switching to oldcontext doesn't make sense. MemoryContextSwitchTo(oldcontext); << no code here >> oldcontext = MemoryContextSwitchTo(cstate->copycontext); I think we also need to remove MemoryContextSwitchTo(oldcontext); at the end of BeginCopyTo in copyto.c, because we are not changing memory contexts in between. diff --git a/src/backend/commands/copyto.c b/src/backend/commands/copyto.c index 34c8b80593..5182048e4f 100644 --- a/src/backend/commands/copyto.c +++ b/src/backend/commands/copyto.c @@ -742,8 +742,6 @@ BeginCopyTo(ParseState *pstate, cstate->bytes_processed = 0; - MemoryContextSwitchTo(oldcontext); - return cstate; } Regards, Bharath Rupireddy.