pgsql: Further fixes in qual nullingrel adjustment for outer join commu

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Further fixes in qual nullingrel adjustment for outer join commu
Дата
Msg-id E1pQYAs-000Qx0-Bp@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
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

Branch
------
master

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

Modified Files
--------------
src/backend/optimizer/plan/initsplan.c | 21 ++++++++++++++++-----
src/test/regress/expected/join.out     | 25 +++++++++++++++++++++++++
src/test/regress/sql/join.sql          |  9 +++++++++
3 files changed, 50 insertions(+), 5 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: pgsql: Fix incorrect format placeholder
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Fix join removal logic to clean up sub-RestrictInfos of OR claus