pgsql: Fix bug in Tid scan.

From: Fujii Masao <fujii(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix bug in Tid scan.
Date: 2020-02-07 13:08:15
Message-ID: E1j03Ml-0002mD-Hj@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix bug in Tid scan.

Commit 147e3722f7 changed Tid scan so that it calls table_beginscan()
and uses the scan option for seq scan. This change caused two issues.

(1) The change caused Tid scan to take a predicate lock on the entire
relation in serializable transaction even when relation-level
lock is not necessary. This could lead to an unexpected
serialization error.

(2) The change caused Tid scan to increment the number of seq_scan
in pg_stat_*_tables views even though it's not seq scan. This
could confuse the users.

This commit adds the scan option for Tid scan and makes Tid scan
use it, to avoid those issues.

Back-patch to v12, where the bug was introduced.

Author: Tatsuhito Kasahara
Reviewed-by: Kyotaro Horiguchi, Masahiko Sawada, Fujii Masao
Discussion: https://postgr.es/m/CAP0=ZVKy+gTbFmB6X_UW0pP3WaeJ-fkUWHoD-pExS=at3CY76g@mail.gmail.com

Branch
------
REL_12_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/598b466e80d9f46aa1472d4f1adb1df90be8c260

Modified Files
--------------
src/backend/executor/nodeTidscan.c | 5 ++---
src/backend/utils/adt/tid.c | 4 ++--
src/include/access/tableam.h | 24 +++++++++++++++++++-----
src/test/regress/expected/tidscan.out | 16 ++++++++++++++++
src/test/regress/sql/tidscan.sql | 7 +++++++
5 files changed, 46 insertions(+), 10 deletions(-)

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Fujii Masao 2020-02-07 13:08:26 pgsql: Fix bug in Tid scan.
Previous Message Andres Freund 2020-02-07 06:32:20 pgsql: jit: Reference expression step functions via llvmjit_types.