nocfbot-0004-Fix-defineClause-TargetEntry-copy.txt

text/plain

Filename: nocfbot-0004-Fix-defineClause-TargetEntry-copy.txt
Type: text/plain
Part: 3
Message: Re: Row pattern recognition
From 6601dda3d297ee8928bbe1c035102d683c78251f Mon Sep 17 00:00:00 2001
From: Henson Choi <assam258@gmail.com>
Date: Wed, 25 Mar 2026 00:20:05 +0900
Subject: [PATCH 04/40] Fix in-place modification of defineClause TargetEntry
 in setrefs.c

---
 src/backend/optimizer/plan/setrefs.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/backend/optimizer/plan/setrefs.c b/src/backend/optimizer/plan/setrefs.c
index 69cd1861e9b..813a326bd78 100644
--- a/src/backend/optimizer/plan/setrefs.c
+++ b/src/backend/optimizer/plan/setrefs.c
@@ -2633,7 +2633,7 @@ set_upper_references(PlannerInfo *root, Plan *plan, int rtoffset)
 					   NUM_EXEC_QUAL(plan));
 
 	/*
-	 * Modifies an expression tree in each DEFINE clause so that all Var
+	 * Replace an expression tree in each DEFINE clause so that all Var
 	 * nodes's varno refers to OUTER_VAR.
 	 */
 	if (IsA(plan, WindowAgg))
@@ -2646,6 +2646,7 @@ set_upper_references(PlannerInfo *root, Plan *plan, int rtoffset)
 			{
 				TargetEntry *tle = (TargetEntry *) lfirst(l);
 
+				tle = flatCopyTargetEntry(tle);
 				tle->expr = (Expr *)
 					fix_upper_expr(root,
 								   (Node *) tle->expr,
@@ -2654,6 +2655,7 @@ set_upper_references(PlannerInfo *root, Plan *plan, int rtoffset)
 								   rtoffset,
 								   NRM_EQUAL,
 								   NUM_EXEC_QUAL(plan));
+				lfirst(l) = tle;
 			}
 		}
 	}
-- 
2.50.1 (Apple Git-155)