]> granicus.if.org Git - postgresql/commit
Fix failure to set ActiveSnapshot while rewinding a cursor.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 7 May 2014 18:25:22 +0000 (14:25 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 7 May 2014 18:25:22 +0000 (14:25 -0400)
commit229101db4d7696c555b338264ef9c89f769c511d
treeaec01eb5c5c44eb059430784f1ace465b40dbe81
parent47e4309c07a399ce4bf896e0ba5edcdf1a691ada
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.
src/backend/tcop/pquery.c
src/test/regress/expected/portals.out
src/test/regress/sql/portals.sql