pgsql: Fix failure to set ActiveSnapshot while rewinding a cursor. - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Fix failure to set ActiveSnapshot while rewinding a cursor.
Date
Msg-id E1Wi6XR-0008De-Rl@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Fix failure to set ActiveSnapshot while rewinding a cursor.

ActiveSnapshot needs to be set when we call ExecutorRewind because some
plan node types may execute user-defined functions during their ReScan
calls (nodeLimit.c does so, at least).  The wisdom of that is somewhat
debatable, perhaps, but for now the simplest fix is to make sure the
required context is valid.  Failure to do this typically led to a
null-pointer-dereference core dump, though it's possible that in more
complex cases a function could be executed with the wrong snapshot
leading to very subtle misbehavior.

Per report from Leif Jensen.  It's been broken for a long time, so
back-patch to all active branches.

Branch
------
REL8_4_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/2a527baa33372db723ca6b1b49b14da1e7a1b92e

Modified Files
--------------
src/backend/tcop/pquery.c             |   14 ++++++++++++--
src/test/regress/expected/portals.out |   24 ++++++++++++++++++++++++
src/test/regress/sql/portals.sql      |   11 +++++++++++
3 files changed, 47 insertions(+), 2 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Fix failure to set ActiveSnapshot while rewinding a cursor.
Next
From: Tom Lane
Date:
Subject: pgsql: Fix failure to set ActiveSnapshot while rewinding a cursor.