Thread: pgsql: Avoid creating a RESULT RTE that's marked LATERAL.

pgsql: Avoid creating a RESULT RTE that's marked LATERAL.

From
Tom Lane
Date:
Avoid creating a RESULT RTE that's marked LATERAL.

Commit 7266d0997 added code to pull up simple constant function
results, converting the RTE_FUNCTION RTE to a dummy RTE_RESULT
RTE since it no longer need be scanned.  But I forgot to clear
the LATERAL flag if the RTE has it set.  If the function reduced
to a constant, it surely contains no lateral references so this
simplification is logically OK.  It's needed because various other
places will Assert that RESULT RTEs aren't LATERAL.

Per bug #17097 from Yaoguang Chen.  Back-patch to v13 where the
faulty code came in.

Discussion: https://postgr.es/m/17097-3372ef9f798fc94f@postgresql.org

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/d23ac62afa646b7073a7f0db0a137308459a263b

Modified Files
--------------
src/backend/optimizer/prep/prepjointree.c | 5 ++++-
src/test/regress/expected/join.out        | 8 ++++++++
src/test/regress/sql/join.sql             | 3 +++
3 files changed, 15 insertions(+), 1 deletion(-)