From fded17402724ff1095be5dca434efd34edfde187 Mon Sep 17 00:00:00 2001
From: Tender Wang <tndrwang@gmail.com>
Date: Thu, 3 Jul 2025 09:56:02 +0800
Subject: [PATCH v3] If we have a single hashclause, list_copy(hashclauses) is
 unnecessary. This adjustment can save the overhead of function calls and
 memory operation.

---
 src/backend/utils/adt/selfuncs.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c
index ce6a626eba2..b57e7262596 100644
--- a/src/backend/utils/adt/selfuncs.c
+++ b/src/backend/utils/adt/selfuncs.c
@@ -3798,7 +3798,7 @@ estimate_multivariate_bucketsize(PlannerInfo *root, RelOptInfo *inner,
 								 List *hashclauses,
 								 Selectivity *innerbucketsize)
 {
-	List	   *clauses = list_copy(hashclauses);
+	List	   *clauses;
 	List	   *otherclauses = NIL;
 	double		ndistinct = 1.0;
 
@@ -3810,6 +3810,7 @@ estimate_multivariate_bucketsize(PlannerInfo *root, RelOptInfo *inner,
 		 */
 		return hashclauses;
 
+	clauses = list_copy(hashclauses);
 	while (clauses != NIL)
 	{
 		ListCell   *lc;
-- 
2.34.1

