diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2017-02-02 19:11:27 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2017-02-02 19:11:27 -0500 |
commit | b971a98cea988e03054077db613fc893564f7bf7 (patch) | |
tree | cdabc3b3b4d63314cbc4572bb48333357c2759d5 /src/backend/executor/nodeWindowAgg.c | |
parent | 3aab31bbc74b4898d62b83868be5f47215cd36f7 (diff) | |
download | postgresql-b971a98cea988e03054077db613fc893564f7bf7.tar.gz postgresql-b971a98cea988e03054077db613fc893564f7bf7.zip |
Fix placement of initPlans when forcibly materializing a subplan.
If we forcibly place a Material node atop a finished subplan, we need
to move any initPlans attached to the subplan up to the Material node,
in order to keep SS_finalize_plan() happy. I'd figured this out in
commit 7b67a0a49 for the case of materializing a cursor plan, but out of
an abundance of caution, I put the initPlan movement hack at the call
site for that case, rather than inside materialize_finished_plan().
That was the wrong thing, because it turns out to also be necessary for
the only other caller of materialize_finished_plan(), ie subselect.c.
We lacked any test cases that exposed the mistake, but bug#14524 from
Wei Congrui shows that it's possible to get an initPlan reference into
the top tlist in that case too, and then SS_finalize_plan() complains.
Hence, move the hack into materialize_finished_plan().
In HEAD, also relocate some recently-added tests in subselect.sql, which
I'd unthinkingly dropped into the middle of a sequence of related tests.
Report: https://postgr.es/m/20170202060020.1400.89021@wrigleys.postgresql.org
Diffstat (limited to 'src/backend/executor/nodeWindowAgg.c')
0 files changed, 0 insertions, 0 deletions