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

From Sven Wegener
Subject Re: [HACKERS] COPY TO returning empty result with parallel ALTER TABLE
Date
Msg-id alpine.LNX.2.11.1411042033490.26161@titan.int.lan.stealer.net
Whole thread Raw
In response to Re: [HACKERS] COPY TO returning empty result with parallel ALTER TABLE  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-general
On Tue, 4 Nov 2014, Tom Lane wrote:

> Bernd Helmle <mailings@oopsware.de> writes:
> > --On 3. November 2014 18:15:04 +0100 Sven Wegener
> > <sven.wegener@stealer.net> wrote:
> >> I've check git master and 9.x and all show the same behaviour. I came up
> >> with the patch below, which is against curent git master. The patch
> >> modifies the COPY TO code to create a new snapshot, after acquiring the
> >> necessary locks on the source tables, so that it sees any modification
> >> commited by other backends.
>
> > Well, i have the feeling that there's nothing wrong with it. The ALTER
> > TABLE command has rewritten all tuples with its own XID, thus the current
> > snapshot does not "see" these tuples anymore. I suppose that in
> > SERIALIZABLE or REPEATABLE READ transaction isolation your proposal still
> > doesn't return the tuples you'd like to see.
>
> 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?

No, both plain COPY and COPY (SELECT ...) TO are broken.

Sven


pgsql-general by date:

Previous
From: Sven Wegener
Date:
Subject: Re: [HACKERS] COPY TO returning empty result with parallel ALTER TABLE
Next
From: Andres Freund
Date:
Subject: Re: [BUGS] [HACKERS] COPY TO returning empty result with parallel ALTER TABLE