Re: COPY .. FREEZE, (apparently) not working on 9.6

From: Vik Fearing <vik(dot)fearing(at)2ndquadrant(dot)com>
To: Danilo Olivares <danilo(at)evicertia(dot)com>
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: COPY .. FREEZE, (apparently) not working on 9.6
Date: 2017-04-25 23:45:57
Message-ID: CAJguA1SHpL=1wSTBwKn4CJCtVQH8s1Bw8YVCg=YxK7bW1AcDyQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Wed, Apr 26, 2017 at 1:40 AM, Danilo Olivares <danilo(at)evicertia(dot)com>
wrote:

> Hello,
>
> While testing "COPY/ FREEZE" feature, I've found a weird issue, by which I
> am unable to actually freeze the rows/tables when using psql 9.6. Or, at
> least, so it looks when inspecting 'xmin'..
>
> Here is the actual (failing) output from running a simple COPY/FREEZE
> snippet against postgres 9.6.2 (x86_64) on CentOS:
>
> # /usr/pgsql-9.6/bin/psql -U postgres -h localhost
> postgres=# BEGIN;
> BEGIN
> postgres=# CREATE TABLE da (text text);
> CREATE TABLE
> postgres=# COPY da FROM STDIN WITH (DELIMITER ',', FREEZE);
> sample
> \.
> COPY 1
> postgres=# COMMIT;
> COMMIT
> postgres=# select xmin,xmax from da;
> xmin | xmax
> —----+------
> 1679 | 0
> (1 row)
>
>
> However, this same snipped when run against 9.3.16, actually works, and
> reports the expected xmin=2 value:
>
>
> # /usr/pgsql-9.3/bin/psql -U postgres -h localhost
> postgres=# BEGIN;
> BEGIN
> postgres=# CREATE TABLE da (text text);
> CREATE TABLE
> postgres=# COPY da FROM STDIN WITH (DELIMITER ',', FREEZE);
> sample
> \.
> COPY 1
> postgres=# COMMIT;
> COMMIT
> postgres=# select xmin,xmax from da;
> xmin | xmax
> —----+------
> 2 | 0
> (1 row)
>
>
>
> Both databases are just fresh installed, have no other users/sessions
> concurrently, and have the same (default/basic) configuration.
>
> Also, quite a similar issue happens when issuing a "VACUUM FREEZE da"
> after COPY (w/o freeze): on 9.3 rows are frozen (xmin=2), while on 9.6 it
> just like if VACUUM FREEZE is simply ignored.. :?
>

Hi.

As of 9.4 (I think), freezing no longer updates xmin but rather sets a bit
in the infomask. Therefore, testing for 2 is not a valid way to see if a
row is frozen.
--

Vik Fearing +33 6 46 75 15
36http://2ndQuadrant.fr PostgreSQL : Expertise, Formation et
Support

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Andres Freund 2017-04-25 23:48:21 Re: COPY .. FREEZE, (apparently) not working on 9.6
Previous Message Peter Geoghegan 2017-04-25 23:45:17 Re: COPY .. FREEZE, (apparently) not working on 9.6