mirror of
https://github.com/postgres/postgres.git
synced 2025-11-09 06:21:09 +03:00
Fix GiST index deletion assert issue.
Avoid calling heap_index_delete_tuples() with an empty deltids array to avoid an assertion failure. This issue was arguably an oversight in commitb5f58cf2, though the failing assert itself was added by my recent commitd168b666. No backpatch, though, since the oversight is harmless in the back branches. Author: Peter Geoghegan <pg@bowt.ie> Reported-By: Jaime Casanova <jcasanov@systemguards.com.ec> Discussion: https://postgr.es/m/CAJKUy5jscES84n3puE=sYngyF+zpb4wv8UMtuLnLPv5z=6yyNw@mail.gmail.com
This commit is contained in:
@@ -1645,7 +1645,6 @@ gistprunepage(Relation rel, Page page, Buffer buffer, Relation heapRel)
|
||||
int ndeletable = 0;
|
||||
OffsetNumber offnum,
|
||||
maxoff;
|
||||
TransactionId latestRemovedXid = InvalidTransactionId;
|
||||
|
||||
Assert(GistPageIsLeaf(page));
|
||||
|
||||
@@ -1664,13 +1663,15 @@ 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)
|
||||
{
|
||||
TransactionId latestRemovedXid = InvalidTransactionId;
|
||||
|
||||
if (XLogStandbyInfoActive() && RelationNeedsWAL(rel))
|
||||
latestRemovedXid =
|
||||
index_compute_xid_horizon_for_tuples(rel, heapRel, buffer,
|
||||
deletable, ndeletable);
|
||||
|
||||
START_CRIT_SECTION();
|
||||
|
||||
PageIndexMultiDelete(page, deletable, ndeletable);
|
||||
|
||||
Reference in New Issue
Block a user