v1-0001-constant-folding-for-indexquals-in-bitmap-scan.patch

application/octet-stream

Filename: v1-0001-constant-folding-for-indexquals-in-bitmap-scan.patch
Type: application/octet-stream
Part: 0
Message: Re: BUG #17618: unnecessary filter column <> text even after adding index

Patch

Format: format-patch
Series: patch v1-0001
Subject: constant folding for indexquals in bitmap scan
File+
src/backend/optimizer/plan/createplan.c 6 0
From f1197e4d276e4fcfa16e3bfb01051c2e86940ef7 Mon Sep 17 00:00:00 2001
From: Richard Guo <guofenglinux@gmail.com>
Date: Fri, 23 Sep 2022 21:13:15 +0800
Subject: [PATCH v1] constant folding for indexquals in bitmap scan

---
 src/backend/optimizer/plan/createplan.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c
index ab4d8e201d..b201409969 100644
--- a/src/backend/optimizer/plan/createplan.c
+++ b/src/backend/optimizer/plan/createplan.c
@@ -3244,6 +3244,12 @@ create_bitmap_scan_plan(PlannerInfo *root,
 		RestrictInfo *rinfo = lfirst_node(RestrictInfo, l);
 		Node	   *clause = (Node *) rinfo->clause;
 
+		/*
+		 * Do constant folding for indexquals before checking for duplicate
+		 * clauses.
+		 */
+		indexquals = (List *) eval_const_expressions(root, (Node *) indexquals);
+
 		if (rinfo->pseudoconstant)
 			continue;			/* we may drop pseudoconstants here */
 		if (list_member(indexquals, clause))
-- 
2.31.0