On 9/4/2015 9:22 AM, Tatsuo Ishii wrote:
>>
>> In this case, scan->rs_startblock is 384 set by IndexBuildHeapRangeScan()
>> using heap_setscanlimits(). One can imagine how the above heap finish
>> criteria might not work as expected.
>
> What scares me is:
>
> 1) the bug will not be found unless someone inspects the internal data
> of BRIN. Regression test is useless here.
>
> 2) the bug effectively causes vacuum scans the heap *twice*, which
> will produce lots of I/O if the heap is not small.
>
> 3) I wonder if other index type is suffered by this type of bug.
>
About 3, it seems unlikely. Both the IndexBuildHeapRangeScan() and
heap_setscanlimits() were introduced by the BRIN patch and I didn't find
anything else using it, yet.
Thanks,
Amit