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
Message: Re: Parallelize correlated subqueries that execute within each worker

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)