Fix BRIN summarization concurrent with extension
authorAlvaro Herrera
Fri, 3 Nov 2017 16:23:13 +0000 (17:23 +0100)
committerAlvaro Herrera
Fri, 3 Nov 2017 16:23:13 +0000 (17:23 +0100)
commitcf0612aa2c8fdc54bb98a13ef839f43cef5eadc5
tree0fc62c04c028700d9e586c5827196ede85e979b6
parent90d61bd1d16bb51d9bbc07e2e345e49bed7310fe
Fix BRIN summarization concurrent with extension

If a process is extending a table concurrently with some BRIN
summarization process, it is possible for the latter to miss pages added
by the former because the number of pages is computed ahead of time.

Fix by determining a fresh relation size after inserting the placeholder
tuple: any process that further extends the table concurrently will
update the placeholder tuple, while previous pages will be processed by
the heap scan.

Reported-by: Tomas Vondra
Reviewed-by: Tom Lane
Author: Álvaro Herrera
Discussion: https://postgr.es/m/083d996a-4a8a-0e13-800a-851dd09ad8cc@2ndquadrant.com
Backpatch-to: 9.5
src/backend/access/brin/brin.c