Commit 6393613b authored by Robert Haas's avatar Robert Haas

Fix possible crash with Parallel Bitmap Heap Scan.

If a Parallel Bitmap Heap scan's chain of leftmost descendents
includes a BitmapOr whose first child is a BitmapAnd, the prior coding
would mistakenly create a non-shared TIDBitmap and then try to perform
shared iteration.

Report by Tomas Vondra.  Patch by Dilip Kumar.

Discussion: http://postgr.es/m/50e89684-8ad9-dead-8767-c9545bafd3b6@2ndquadrant.com
parent 73937119
...@@ -4933,7 +4933,11 @@ bitmap_subplan_mark_shared(Plan *plan) ...@@ -4933,7 +4933,11 @@ bitmap_subplan_mark_shared(Plan *plan)
bitmap_subplan_mark_shared( bitmap_subplan_mark_shared(
linitial(((BitmapAnd *) plan)->bitmapplans)); linitial(((BitmapAnd *) plan)->bitmapplans));
else if (IsA(plan, BitmapOr)) else if (IsA(plan, BitmapOr))
{
((BitmapOr *) plan)->isshared = true; ((BitmapOr *) plan)->isshared = true;
bitmap_subplan_mark_shared(
linitial(((BitmapOr *) plan)->bitmapplans));
}
else if (IsA(plan, BitmapIndexScan)) else if (IsA(plan, BitmapIndexScan))
((BitmapIndexScan *) plan)->isshared = true; ((BitmapIndexScan *) plan)->isshared = true;
else else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment