From: | Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> |
---|---|
To: | Heikki Linnakangas <hlinnakangas(at)vmware(dot)com> |
Cc: | Pg Bugs <pgsql-bugs(at)postgresql(dot)org> |
Subject: | Re: Bogus pg_class.relminmxid value for pg_database |
Date: | 2014-06-27 15:58:18 |
Message-ID: | 20140627155818.GN7340@eldon.alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
Heikki Linnakangas wrote:
> Right after a fresh initdb on a 9.3 or master database:
>
> postgres=# select oid,relname,relminmxid from pg_class where
> relname='pg_database';
> oid | relname | relminmxid
> ------+-------------+------------
> 1262 | pg_database | 4244967297
> (1 row)
>
> That bogus value seems to appear already some time during initdb.
> The relminmxid for all other tables is 1, which is correct.
I finally figured the source of this issue: it's caused by VACUUM FULL
(executed by initdb while copying template1 into template0): we're
missing a protection that relminmxid doesn't go backwards when swapping
heaps. We already have such a check for xids.
This is mostly innocuous, but I'm about to push the attached fix all the
same, backpatched to 9.3. (The extra context lines make the patch very
clear.)
--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
Attachment | Content-Type | Size |
---|---|---|
backwards-mxid.patch | text/x-diff | 905 bytes |
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2014-06-27 18:19:46 | Re: BUG #10785: error if using x>n AND x<m in where clause, BETWEEN n AND m works as supposed |
Previous Message | lunda | 2014-06-27 13:54:05 | BUG #10785: error if using x>n AND x<m in where clause, BETWEEN n AND m works as supposed |