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

From: Peter Geoghegan <pg(at)bowt(dot)ie>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: pageinspect: Fix types used for bt_metap() columns.
Date: 2020-03-08 00:45:22
Message-ID: E1jAk4I-0002yq-Uj@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers pgsql-hackers

pageinspect: Fix types used for bt_metap() columns.

The data types that contrib/pageinspect's bt_metap() function were
declared to return as OUT arguments were wrong in some cases. For
example, the oldest_xact column (a TransactionId/xid field) was declared
integer/int4 within the pageinspect extension's sql file. This led to
errors when an oldest_xact value that exceeded 2^31-1 was encountered.
Some of the other columns were defined incorrectly ever since
pageinspect was first introduced, though they were far less likely to
produce problems in practice.

Fix these issues by changing the declaration of bt_metap() to
consistently use data types that can reliably represent all possible
values. This fixes things on HEAD only. No backpatch, since it doesn't
seem like there is a safe way to fix the issue without including a new
version of the pageinspect extension (HEAD/Postgres 13 already
introduced a new version of the extension). Besides, the oldest_xact
issue has been around since the release of Postgres 11, and we haven't
heard any complaints about it before now.

Also, throw an error when we detect a bt_metap() declaration that must
be from an old version of the pageinspect extension by examining the
number of attributes from the tuple descriptor for the return tuples.
It seems better to throw an error in a reliable and obvious way
following a Postgres upgrade, rather than letting bt_metap() fail
unpredictably. The problem is fundamentally with the CREATE FUNCTION
declared data types themselves, so I see no sensible alternative.

Reported-By: Victor Yegorov
Bug: #16285
Discussion: https://postgr.es/m/16285-df8fc1000ab3d5fc@postgresql.org

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/691e8b2e1889d61df47ae76601fa9db6cbac6f1c

Modified Files
--------------
contrib/pageinspect/btreefuncs.c | 27 +++++++++++++++++++++++----
contrib/pageinspect/pageinspect--1.7--1.8.sql | 12 ++++++------
2 files changed, 29 insertions(+), 10 deletions(-)

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Alexander Korotkov 2020-03-08 10:35:29 pgsql: Show opclass and opfamily related information in psql
Previous Message Tom Lane 2020-03-07 21:58:12 pgsql: Tab completion: offer parens as appropriate in CREATE/ALTER TEXT

Browse pgsql-hackers by date

  From Date Subject
Next Message James Coleman 2020-03-08 02:07:55 Re: [PATCH] Incremental sort (was: PoC: Partial sort)
Previous Message Tom Lane 2020-03-07 23:45:44 Re: range_agg