Re: Re: [BUGS] [HACKERS] COPY TO returning empty result with parallel ALTER TABLE - Mailing list pgsql-general

From Tom Lane
Subject Re: Re: [BUGS] [HACKERS] COPY TO returning empty result with parallel ALTER TABLE
Date
Msg-id 20002.1415139494@sss.pgh.pa.us
Whole thread Raw
In response to Re: [BUGS] [HACKERS] COPY TO returning empty result with parallel ALTER TABLE  (Andres Freund <andres@2ndquadrant.com>)
Responses Re: Re: [BUGS] [HACKERS] COPY TO returning empty result with parallel ALTER TABLE
List pgsql-general
Andres Freund <andres@2ndquadrant.com> writes:
> On 2014-11-04 13:51:23 -0500, Tom Lane wrote:
>> Not sure.  The OP's point is that in a SELECT, you do get unsurprising
>> results, because a SELECT will acquire its execution snapshot after it's
>> gotten AccessShareLock on the table.  Arguably COPY should behave likewise.
>> Or to be even more concrete, COPY (SELECT * FROM tab) TO ... probably
>> already acts like he wants, so why isn't plain COPY equivalent to that?

> Even a plain SELECT essentially acts that way if I recall correctly if
> you use REPEATABLE READ+ and force a snapshot to be acquired
> beforehand. It's imo not very surprising.

"It doesn't fail in a non-default isolation mode" is hardly much of an
argument for this being okay in READ COMMITTED.

> All ALTER TABLE rewrites just disregard visibility of existing
> tuples. Only CLUSTER/VACUUM FULL do the full hangups to keep all the
> necessary tuples + ctid chains around.

Yeah, and I think that it's entirely reasonable for rewriting ALTER TABLEs
to update the xmin of the rewritten tuples; after all, the output data
could be arbitrarily different from what the previous transactions put
into the table.  But that is not the question here.  If the COPY blocks
until the ALTER completes --- as it must --- why is its execution snapshot
not taken *after* the lock is acquired?

            regards, tom lane


pgsql-general by date:

Previous
From: memtec
Date:
Subject: Re: Incomplete startup packet help needed
Next
From: Bernd Helmle
Date:
Subject: Re: Re: [BUGS] [HACKERS] COPY TO returning empty result with parallel ALTER TABLE