diff options
author | Richard Guo <rguo@postgresql.org> | 2025-05-08 18:20:18 +0900 |
---|---|---|
committer | Richard Guo <rguo@postgresql.org> | 2025-05-08 18:20:18 +0900 |
commit | 773db22269d474fab46d25e9e15b1e55252cf92c (patch) | |
tree | bd440672b6ba1e09a0969c3f85baac303a55b255 /src/include/pg_getopt.h | |
parent | 9fef27a83b3112655509241107834086628f7fa8 (diff) | |
download | postgresql-773db22269d474fab46d25e9e15b1e55252cf92c.tar.gz postgresql-773db22269d474fab46d25e9e15b1e55252cf92c.zip |
Suppress unnecessary explicit sorting for EPQ mergejoin path
When building a ForeignPath for a joinrel, if there's a possibility
that EvalPlanQual will be executed, we must identify a suitable path
for EPQ checks. If the outer or inner path of the chosen path is a
ForeignPath representing a pushed-down join, we replace it with its
fdw_outerpath to ensure that the EPQ check path consists entirely of
local joins.
If the chosen path is a MergePath, and its outer or inner path is a
ForeignPath that is not already well enough ordered, the MergePath
will have non-NIL outersortkeys or innersortkeys indicating the
desired ordering to be created by an explicit Sort node. If we then
replace the outer or inner path with its corresponding fdw_outerpath,
and that path is already sufficiently ordered, we end up in an
inconsistent state: the MergePath has non-NIL outersortkeys or
innersortkeys, and its input path is already properly ordered. This
inconsistency can result in an Assert failure or the addition of a
redundant Sort node.
To fix, check if the new outer or inner path of a MergePath is already
properly sorted, and set its outersortkeys or innersortkeys to NIL if
so.
Bug: #18902
Reported-by: Nikita Kalinin <n.kalinin@postgrespro.ru>
Author: Richard Guo <guofenglinux@gmail.com>
Reviewed-by: Tender Wang <tndrwang@gmail.com>
Discussion: https://postgr.es/m/18902-71c1bed2b9f7c46f@postgresql.org
Diffstat (limited to 'src/include/pg_getopt.h')
0 files changed, 0 insertions, 0 deletions