git.postgresql.org Git - postgresql.git/commitdiff

git projects / postgresql.git / commitdiff
? search:
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: bc843d3)
Fix bogus EXPLAIN display of rowcount estimates for BitmapAnd and
2005年4月23日 01:29:15 +0000 (01:29 +0000)
2005年4月23日 01:29:15 +0000 (01:29 +0000)
BitmapOr nodes.


diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c
index e7a695e57253b6591f02bb5a87000223414b6ddd..21af9f7e3e2504975dc3dfab277db016c4675386 100644 (file)
--- 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.183 2005年04月22日 21:58:31 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/optimizer/plan/createplan.c,v 1.184 2005年04月23日 01:29:15 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -941,7 +941,10 @@ create_bitmap_subplan(Query *root, Path *bitmapqual)
newlist = lappend(newlist, subplan);
}
plan = (Plan *) make_bitmap_and(newlist);
- copy_path_costsize(plan, bitmapqual);
+ plan->startup_cost = apath->path.startup_cost;
+ plan->total_cost = apath->path.total_cost;
+ plan->plan_rows =
+ clamp_row_est(apath->bitmapselectivity * apath->path.parent->tuples);
plan->plan_width = 0; /* meaningless */
}
else if (IsA(bitmapqual, BitmapOrPath))
@@ -957,31 +960,32 @@ create_bitmap_subplan(Query *root, Path *bitmapqual)
newlist = lappend(newlist, subplan);
}
plan = (Plan *) make_bitmap_or(newlist);
- copy_path_costsize(plan, bitmapqual);
+ plan->startup_cost = opath->path.startup_cost;
+ plan->total_cost = opath->path.total_cost;
+ plan->plan_rows =
+ clamp_row_est(opath->bitmapselectivity * opath->path.parent->tuples);
plan->plan_width = 0; /* meaningless */
}
else if (IsA(bitmapqual, IndexPath))
{
IndexPath *ipath = (IndexPath *) bitmapqual;
IndexScan *iscan;
- BitmapIndexScan *bscan;
/* Use the regular indexscan plan build machinery... */
iscan = create_indexscan_plan(root, ipath, NIL, NIL);
Assert(list_length(iscan->indxid) == 1);
/* then convert to a bitmap indexscan */
- bscan = make_bitmap_indexscan(iscan->scan.scanrelid,
- linitial_oid(iscan->indxid),
- linitial(iscan->indxqual),
- linitial(iscan->indxqualorig),
- linitial(iscan->indxstrategy),
- linitial(iscan->indxsubtype));
- bscan->scan.plan.startup_cost = 0.0;
- bscan->scan.plan.total_cost = ipath->indextotalcost;
- bscan->scan.plan.plan_rows =
+ plan = (Plan *) make_bitmap_indexscan(iscan->scan.scanrelid,
+ linitial_oid(iscan->indxid),
+ linitial(iscan->indxqual),
+ linitial(iscan->indxqualorig),
+ linitial(iscan->indxstrategy),
+ linitial(iscan->indxsubtype));
+ plan->startup_cost = 0.0;
+ plan->total_cost = ipath->indextotalcost;
+ plan->plan_rows =
clamp_row_est(ipath->indexselectivity * ipath->path.parent->tuples);
- bscan->scan.plan.plan_width = 0; /* meaningless */
- plan = (Plan *) bscan;
+ plan->plan_width = 0; /* meaningless */
}
else
{
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /