pgsql: Fix incorrect logic in HaveRegisteredOrActiveSnapshot().

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix incorrect logic in HaveRegisteredOrActiveSnapshot().
Date: 2022-04-16 20:04:55
Message-ID: E1nfof9-000pKV-Dy@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix incorrect logic in HaveRegisteredOrActiveSnapshot().

This function gave the wrong answer when there's more than one
RegisteredSnapshots entry, whether or not any of them is the
CatalogSnapshot. This leads to assertion failure in some scenarios
involving fetching toasted data using a cursor. (As per discussion,
I'm dubious that this is the right contract to be enforcing at all;
but it surely doesn't help to be enforcing it incorrectly.)

Fetching toasted data using a cursor is evidently under-tested,
so add a test case too.

Per report from Erik Rijkers. This is new code, so no need for
back-patch.

Discussion: https://postgr.es/m/dc9dd229-ed30-6c62-4c41-d733ffff776b@xs4all.nl

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/9f4f0a0dad4c7422a97d94e4051c08ec6d181dd6

Modified Files
--------------
src/backend/utils/time/snapmgr.c | 6 +++---
src/test/regress/expected/portals.out | 25 +++++++++++++++++++++++++
src/test/regress/sql/portals.sql | 24 ++++++++++++++++++++++++
3 files changed, 52 insertions(+), 3 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2022-04-16 20:26:57 Re: pgsql: Fix some trailing whitespace in documentation files
Previous Message Andrew Dunstan 2022-04-16 13:36:45 pgsql: Build libpq test programs under MSVC