]> granicus.if.org Git - postgresql/commit
Set scan direction appropriately for SubPlans (bug #15336)
authorAndrew Gierth <rhodiumtoad@postgresql.org>
Fri, 17 Aug 2018 14:04:26 +0000 (15:04 +0100)
committerAndrew Gierth <rhodiumtoad@postgresql.org>
Fri, 17 Aug 2018 15:19:10 +0000 (16:19 +0100)
commit6302fe6b28e24e87d78e457e85362dc2fa9ca119
tree73aab058267bbfba4a4008e4662899dd1bdeeb29
parent87be73e3ff1cd2e4474f8305a214a9d61535d2fb
Set scan direction appropriately for SubPlans (bug #15336)

When executing a SubPlan in an expression, the EState's direction
field was left alone, resulting in an attempt to execute the subplan
backwards if it was encountered during a backwards scan of a cursor.
Also, though much less likely, it was possible to reach the execution
of an InitPlan while in backwards-scan state.

Repair by saving/restoring estate->es_direction and forcing forward
scan mode in the relevant places.

Backpatch all the way, since this has been broken since 8.3 (prior to
commit c7ff7663e, SubPlans had their own EStates rather than sharing
the parent plan's, so there was no confusion over scan direction).

Per bug #15336 reported by Vladimir Baranoff; analysis and patch by
me, review by Tom Lane.

Discussion: https://postgr.es/m/153449812167.1304.1741624125628126322@wrigleys.postgresql.org
src/backend/executor/nodeSubplan.c
src/test/regress/expected/subselect.out
src/test/regress/sql/subselect.sql