pgsql: Allow usage of match_orclause_to_indexcol() for joins - Mailing list pgsql-committers

From Alexander Korotkov
Subject pgsql: Allow usage of match_orclause_to_indexcol() for joins
Date
Msg-id E1tfQNW-005O5w-6g@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Allow usage of match_orclause_to_indexcol() for joins

This commit allows transformation of OR-clauses into SAOP's for index scans
within nested loop joins.  That required the following changes.

 1. Make match_orclause_to_indexcol() and group_similar_or_args() understand
    const-ness in the same way as match_opclause_to_indexcol().  This
    generally makes our approach more uniform.
 2. Make match_join_clauses_to_index() pass OR-clauses to
    match_clause_to_index().
 3. Also switch match_join_clauses_to_index() to use list_append_unique_ptr()
    for adding clauses to *joinorclauses.  That avoids possible duplicates
    when processing the same clauses with different indexes.  Previously such
    duplicates were elimited in match_clause_to_index(), but now
    group_similar_or_args() each time generates distinct copies of grouped
    OR clauses.

Discussion: https://postgr.es/m/CAPpHfdv%2BjtNwofg-p5z86jLYZUTt6tR17Wy00ta0dL%3DwHQN3ZA%40mail.gmail.com
Reviewed-by: Andrei Lepikhov <lepihov@gmail.com>
Reviewed-by: Alena Rybakina <a.rybakina@postgrespro.ru>
Reviewed-by: Pavel Borisov <pashkin.elfe@gmail.com>

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/627d63419e22054551327216d2b2de3e6977fade

Modified Files
--------------
src/backend/optimizer/path/indxpath.c        | 70 ++++++++++++++++------------
src/test/regress/expected/create_index.out   | 32 +++++++++++++
src/test/regress/expected/join.out           | 51 +++++++++++++++++---
src/test/regress/expected/partition_join.out | 12 ++---
src/test/regress/sql/create_index.sql        |  9 ++++
src/test/regress/sql/join.sql                | 18 ++++++-
6 files changed, 150 insertions(+), 42 deletions(-)


pgsql-committers by date:

Previous
From: Nathan Bossart
Date:
Subject: pgsql: vacuumdb: Add missing PQfinish() calls to vacuum_one_database().
Next
From: Alexander Korotkov
Date:
Subject: pgsql: pg_controldata: Fix possible errors on corrupted pg_control