pgsql: Fix crashes with currtid() and currtid2() - Mailing list pgsql-committers

From Michael Paquier
Subject pgsql: Fix crashes with currtid() and currtid2()
Date
Msg-id E1jfZM5-0002HQ-SH@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Fix crashes with currtid() and currtid2()

A relation that has no storage initializes rd_tableam to NULL, which
caused those two functions to crash because of a pointer dereference.
Note that in 11 and older versions, this has always failed with a
confusing error "could not open file".

These two functions are used by the Postgres ODBC driver, which requires
them only when connecting to a backend strictly older than 8.1.  When
connected to 8.2 or a newer version, the driver uses a RETURNING clause
instead whose support has been added in 8.2, so it should be possible to
just remove both functions in the future.  This is left as an issue to
address later.

While on it, add more regression tests for those functions as we never
really had coverage for them, and for aggregates of TIDs.

Reported-by: Jaime Casanova, via sqlsmith
Author: Michael Paquier
Reviewed-by: Álvaro Herrera
Discussion: https://postgr.es/m/CAJGNTeO93u-5APMga6WH41eTZ3Uee9f3s8dCpA-GSSqNs1b=Ug@mail.gmail.com
Backpatch-through: 12

Branch
------
REL_12_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/95e389b3c2ea35ad60419f285fd5c1d0511142e7

Modified Files
--------------
src/backend/utils/adt/tid.c        |  11 ++++
src/test/regress/expected/tid.out  | 106 +++++++++++++++++++++++++++++++++++++
src/test/regress/parallel_schedule |   2 +-
src/test/regress/serial_schedule   |   1 +
src/test/regress/sql/tid.sql       |  63 ++++++++++++++++++++++
5 files changed, 182 insertions(+), 1 deletion(-)


pgsql-committers by date:

Previous
From: Andrew Dunstan
Date:
Subject: pgsql: Make install-tests target work with vpath builds
Next
From: Michael Paquier
Date:
Subject: pgsql: Fix use-after-release mistake in currtid() and currtid2() for vi