v7-0004-Warning-messages-for-finding-test-cases.patch
application/octet-stream
Filename: v7-0004-Warning-messages-for-finding-test-cases.patch
Type: application/octet-stream
Part: 0
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v7-0004
Subject: Warning messages for finding test cases
| File | + | − |
|---|---|---|
| src/backend/optimizer/path/allpaths.c | 8 | 4 |
| src/backend/optimizer/path/joinpath.c | 9 | 4 |
From a72ab86abc9f0f081b70d68f8505cf9eda0c3e19 Mon Sep 17 00:00:00 2001
From: jcoleman <jtc331@gmail.com>
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)