mirror of
https://github.com/postgres/postgres.git
synced 2025-07-03 20:02:46 +03:00
Convert gist to compute page level xid horizon on primary.
Due to parallel development, gist added the missing conflict information inc952eae52a
, while558a9165e0
moved that computation to the primary for the index types that already had it. Thus adapt gist to also compute on the primary, using index_compute_xid_horizon_for_tuples() instead of its own copy of the logic. This also adds pg_waldump support for XLOG_GIST_DELETE records, which previously was not properly present. Bumps WAL version. Author: Andres Freund Discussion: https://postgr.es/m/20190406050243.bszosdg4buvabfrt@alap3.anarazel.de
This commit is contained in:
@ -1616,6 +1616,7 @@ gistprunepage(Relation rel, Page page, Buffer buffer, Relation heapRel)
|
||||
int ndeletable = 0;
|
||||
OffsetNumber offnum,
|
||||
maxoff;
|
||||
TransactionId latestRemovedXid = InvalidTransactionId;
|
||||
|
||||
Assert(GistPageIsLeaf(page));
|
||||
|
||||
@ -1634,6 +1635,11 @@ gistprunepage(Relation rel, Page page, Buffer buffer, Relation heapRel)
|
||||
deletable[ndeletable++] = offnum;
|
||||
}
|
||||
|
||||
if (XLogStandbyInfoActive() && RelationNeedsWAL(rel))
|
||||
latestRemovedXid =
|
||||
index_compute_xid_horizon_for_tuples(rel, heapRel, buffer,
|
||||
deletable, ndeletable);
|
||||
|
||||
if (ndeletable > 0)
|
||||
{
|
||||
START_CRIT_SECTION();
|
||||
@ -1658,7 +1664,7 @@ gistprunepage(Relation rel, Page page, Buffer buffer, Relation heapRel)
|
||||
|
||||
recptr = gistXLogDelete(buffer,
|
||||
deletable, ndeletable,
|
||||
heapRel->rd_node);
|
||||
latestRemovedXid);
|
||||
|
||||
PageSetLSN(page, recptr);
|
||||
}
|
||||
|
Reference in New Issue
Block a user