Re: BUG #16285: bt_metap fails with value is out of range for type integer

Peter Geoghegan <pg@bowt.ie>

From: Peter Geoghegan <pg@bowt.ie>
To: Andres Freund <andres@anarazel.de>
Cc: Victor Yegorov <vyegorov@gmail.com>, Alvaro Herrera <alvherre@2ndquadrant.com>, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2020-03-10T00:16:47Z
Lists: pgsql-bugs
On Mon, Mar 9, 2020 at 3:36 PM Andres Freund <andres@anarazel.de> wrote:
> What do you mean? Since 12 is the newest release affected, we'd
> potentially (and with increasing likelihood due to clusters living
> longer) have the problem till 12 is not supported anymore. What am I
> missing?

But 12 isn't the latest release affected. It just so happens that
Victor was using 12, but oldest_xact was actually added by commit
857f9c36 -- that's Postgres 11.

To be very precise: I imagine that Victor was using bt_metap() in
production on a Postgres 12 installation because he wanted to make
sure that his installation had the new stuff (he did a talk about it
at EU, so clearly it's of interest to him). The problem is
nevertheless not new to Postgres 12.

> I'd just do the s/%u/%d/.

That's a pretty gross hack. So be it.

> pg_class.relpages is also reported as a signed integer :(. Since
> btm_root/fastroot use %d, it'll just have similar wrapping behaviour.

I guess that means that pageinspect was correct after all!

-- 
Peter Geoghegan



Commits

  1. Paper over bt_metap() oldest_xact bug in backbranches.

  2. pageinspect: Fix types used for bt_metap() columns.

  3. Skip full index scan during cleanup of B-tree indexes when possible

  4. pg_stat_statements: Widen query IDs from 32 bits to 64 bits.