pgsql: Fix crashes with currtid() and currtid2()

Поиск
Список
Период
Сортировка
От Michael Paquier
Тема pgsql: Fix crashes with currtid() and currtid2()
Дата
Msg-id E1jfZM5-0002HM-Qs@gemulon.postgresql.org
обсуждение исходный текст
Список 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
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/e786be5fcb257a09b05bd8e509c8d1b82e626352

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 по дате отправления:

Предыдущее
От: Andrew Dunstan
Дата:
Сообщение: pgsql: Make install-tests target work with vpath builds
Следующее
От: Michael Paquier
Дата:
Сообщение: pgsql: Fix use-after-release mistake in currtid() and currtid2() for vi