0003-Use-length-of-ec_derives-clause-list-as-ini-20250328.patch

text/x-patch

Filename: 0003-Use-length-of-ec_derives-clause-list-as-ini-20250328.patch
Type: text/x-patch
Part: 2
Message: Re: Reducing memory consumed by RestrictInfo list translations in partitionwise join planning

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 0003
Subject: Use length of ec_derives clause list as initial hash table size estimation
File+
src/backend/optimizer/path/equivclass.c 4 2
From 8807ba1263c5898a96eba045e3fde9216e734171 Mon Sep 17 00:00:00 2001
From: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Date: Fri, 28 Mar 2025 21:12:04 +0530
Subject: [PATCH 3/3] Use length of ec_derives clause list as initial hash
 table size estimation

Ashutosh Bapat
---
 src/backend/optimizer/path/equivclass.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/backend/optimizer/path/equivclass.c b/src/backend/optimizer/path/equivclass.c
index b988db4d7b3..8229405e4f4 100644
--- a/src/backend/optimizer/path/equivclass.c
+++ b/src/backend/optimizer/path/equivclass.c
@@ -3457,8 +3457,10 @@ ec_build_derives_hash(PlannerInfo *root, EquivalenceClass *ec)
 {
 	Assert(!ec->ec_derives_hash);
 
-	/* Create the hash table */
-	ec->ec_derives_hash = derives_create(root->planner_cxt, 256, NULL);
+	/* Create the hash table. */
+	ec->ec_derives_hash = derives_create(root->planner_cxt,
+										 pg_nextpower2_32(list_length(ec->ec_derives_list)),
+										 NULL);
 
 	foreach_node(RestrictInfo, rinfo, ec->ec_derives_list)
 		ec_add_clause_to_derives_hash(ec, rinfo);
-- 
2.34.1