diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2023-02-10 13:31:00 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2023-02-10 13:31:00 -0500 |
commit | acc5821e4dcb6b7df6ad1f806459f95fcaebadfc (patch) | |
tree | a1731087a18e864b46ffc3972d850af832b9eff0 /src/backend/utils/adt/pgstatfuncs.c | |
parent | f8ba1bf4e48369450cdc71b5bf12d8f7bdaf10f3 (diff) | |
download | postgresql-acc5821e4dcb6b7df6ad1f806459f95fcaebadfc.tar.gz postgresql-acc5821e4dcb6b7df6ad1f806459f95fcaebadfc.zip |
Further fixes in qual nullingrel adjustment for outer join commutation.
One of the add_nulling_relids calls in deconstruct_distribute_oj_quals
added an OJ relid to too few Vars, while the other added it to too
many. We should consider the syntactic structure not
min_left/righthand while deciding which Vars to decorate, and when
considering pushing up a lower outer join pursuant to transforming the
second form of OJ identity 3 to the first form, we only want to
decorate Vars coming from its LHS.
In a related bug, I realized that make_outerjoininfo was failing to
check a very basic property that's needed to apply OJ identity 3:
the syntactically-upper outer join clause can't refer to the lower
join's LHS. This didn't break the join order restriction logic,
but it led to setting bogus commute_xxx bits, possibly resulting
in bogus nullingrel markings in modified quals.
Richard Guo and Tom Lane
Discussion: https://postgr.es/m/CAMbWs497CmBruMx1SOjepWEz+T5NWa4scqbdE9v7ZzSXqH_gQw@mail.gmail.com
Discussion: https://postgr.es/m/CAEP4nAx9C5gXNBfEA0JBfz7B+5f1Bawt-RWQWyhev-wdps8BZA@mail.gmail.com
Diffstat (limited to 'src/backend/utils/adt/pgstatfuncs.c')
0 files changed, 0 insertions, 0 deletions