pgsql: Fix BRIN summarization concurrent with extension

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Fix BRIN summarization concurrent with extension
Date: 2017-11-03 16:23:42
Message-ID: E1eAekw-00022v-Iy@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

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

Branch
------
REL9_5_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/cf0612aa2c8fdc54bb98a13ef839f43cef5eadc5

Modified Files
--------------
src/backend/access/brin/brin.c | 57 ++++++++++++++++++++++++++++++++++++------
1 file changed, 49 insertions(+), 8 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Peter Eisentraut 2017-11-03 16:35:03 pgsql: Don't reset additional columns on subscriber to NULL on UPDATE
Previous Message Andres Freund 2017-11-03 14:53:30 Re: [HACKERS] pgsql: Fix freezing of a dead HOT-updated tuple