From a72ab86abc9f0f081b70d68f8505cf9eda0c3e19 Mon Sep 17 00:00:00 2001 From: jcoleman Date: Sat, 21 Jan 2023 19:41:28 -0500 Subject: [PATCH v7 4/4] Warning messages for finding test cases --- src/backend/optimizer/path/allpaths.c | 12 ++++++++---- src/backend/optimizer/path/joinpath.c | 13 +++++++++---- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/backend/optimizer/path/allpaths.c b/src/backend/optimizer/path/allpaths.c index 58433b762e..01ebbb943b 100644 --- a/src/backend/optimizer/path/allpaths.c +++ b/src/backend/optimizer/path/allpaths.c @@ -3030,7 +3030,8 @@ generate_gather_paths(PlannerInfo *root, RelOptInfo *rel, bool override_rows) * params used in a worker are generated within that worker. */ if (!bms_is_subset(required_outer, rel->relids)) - return; + elog(WARNING, "generate_gather_paths bms_is_subset"); + /* return; */ /* Should we override the rel's rowcount estimate? */ if (override_rows) @@ -3067,7 +3068,8 @@ generate_gather_paths(PlannerInfo *root, RelOptInfo *rel, bool override_rows) if (subpath->param_info != NULL && !bms_is_subset(subpath->param_info->ppi_req_outer, rel->relids)) - continue; + elog(WARNING, "generate_gather_paths bms_is_subset subpath"); + /* continue; */ rows = subpath->rows * subpath->parallel_workers; path = create_gather_merge_path(root, rel, subpath, rel->reltarget, @@ -3184,7 +3186,8 @@ generate_useful_gather_paths(PlannerInfo *root, RelOptInfo *rel, bool override_r * params used in a worker are generated within that worker. */ if (!bms_is_subset(required_outer, rel->relids)) - return; + elog(WARNING, "generate_useful_gather_paths bms_is_subset"); + /* return; */ /* Should we override the rel's rowcount estimate? */ if (override_rows) @@ -3244,7 +3247,8 @@ generate_useful_gather_paths(PlannerInfo *root, RelOptInfo *rel, bool override_r if (subpath->param_info != NULL && !bms_is_subset(subpath->param_info->ppi_req_outer, rel->relids)) - continue; + elog(WARNING, "generate_useful_gather_paths bms_is_subset subpath"); + /* continue; */ /* * Consider regular sort for any path that's not presorted or if diff --git a/src/backend/optimizer/path/joinpath.c b/src/backend/optimizer/path/joinpath.c index 000e3ca9a2..be17b6e492 100644 --- a/src/backend/optimizer/path/joinpath.c +++ b/src/backend/optimizer/path/joinpath.c @@ -1806,11 +1806,16 @@ match_unsorted_outer(PlannerInfo *root, save_jointype != JOIN_UNIQUE_OUTER && save_jointype != JOIN_FULL && save_jointype != JOIN_RIGHT && - outerrel->partial_pathlist != NIL && - bms_is_empty(joinrel->lateral_relids) && - bms_is_subset(innerrel->lateral_relids, outerrel->relids) && - (bms_is_empty(outerrel->lateral_relids) || !bms_is_subset(outerrel->lateral_relids, innerrel->relids))) + outerrel->partial_pathlist != NIL) { + if (!(bms_is_empty(joinrel->lateral_relids) && + bms_is_subset(innerrel->lateral_relids, outerrel->relids) && + (bms_is_empty(outerrel->lateral_relids) || !bms_is_subset(outerrel->lateral_relids, innerrel->relids)))) + { + elog(WARNING, "lateral relids violation on joinrel"); + /* return; */ + } + if (nestjoinOK) consider_parallel_nestloop(root, joinrel, outerrel, innerrel, save_jointype, extra); -- 2.32.1 (Apple Git-133)