aboutsummaryrefslogtreecommitdiff
path: root/src/backend/optimizer/plan/createplan.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2005-04-25 04:27:12 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2005-04-25 04:27:12 +0000
commita0ea71333a800f647179ff120f7bdee30b361ed5 (patch)
tree2e0a03ab97a7bfb1a7cbcd91f3d5c9e1751a2408 /src/backend/optimizer/plan/createplan.c
parent1fcd4b7a07a5cfb00e064c4bdd984e52cde71a5c (diff)
downloadpostgresql-a0ea71333a800f647179ff120f7bdee30b361ed5.tar.gz
postgresql-a0ea71333a800f647179ff120f7bdee30b361ed5.zip
Avoid rechecking lossy operators twice in a bitmap scan plan.
Diffstat (limited to 'src/backend/optimizer/plan/createplan.c')
-rw-r--r--src/backend/optimizer/plan/createplan.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c
index 3feff40423f..e042468c665 100644
--- a/src/backend/optimizer/plan/createplan.c
+++ b/src/backend/optimizer/plan/createplan.c
@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/optimizer/plan/createplan.c,v 1.187 2005/04/25 03:58:30 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/optimizer/plan/createplan.c,v 1.188 2005/04/25 04:27:12 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -889,6 +889,14 @@ create_bitmap_scan_plan(Query *root,
/* Sort clauses into best execution order */
qpqual = order_qual_clauses(root, qpqual);
+ /*
+ * When dealing with special or lossy operators, we will at this point
+ * have duplicate clauses in qpqual and bitmapqualorig. We may as well
+ * drop 'em from bitmapqualorig, since there's no point in making the
+ * tests twice.
+ */
+ bitmapqualorig = list_difference_ptr(bitmapqualorig, qpqual);
+
/* Finally ready to build the plan node */
scan_plan = make_bitmap_heapscan(tlist,
qpqual,