Remove WARNING message from brin_desummarize_range
authorAlvaro Herrera <[email protected]>
Fri, 10 Jul 2020 00:13:25 +0000 (20:13 -0400)
committerAlvaro Herrera <[email protected]>
Fri, 10 Jul 2020 00:13:25 +0000 (20:13 -0400)
This message was being emitted on the grounds that only crashed
summarization could cause it, but in reality even an aborted vacuum
could do it ... which makes it way too noisy, particularly since it
shows up in regression tests and makes them die.

Reported by Tom Lane.
Discussion: https://postgr.es/m/489091.1593534251@sss.pgh.pa.us

src/backend/access/brin/brin_revmap.c

index e2bfbf8a680e1b9c998349cd658e4a3be8baa818..7dcb1cd73ffc94b72ecab5664f01a83e63639c0f 100644 (file)
@@ -333,7 +333,6 @@ brinRevmapDesummarizeRange(Relation idxrel, BlockNumber heapBlk)
    OffsetNumber revmapOffset;
    OffsetNumber regOffset;
    ItemId      lp;
-   BrinTuple  *tup;
 
    revmap = brinRevmapInitialize(idxrel, &pagesPerRange, NULL);
 
@@ -365,6 +364,10 @@ brinRevmapDesummarizeRange(Relation idxrel, BlockNumber heapBlk)
    regBuf = ReadBuffer(idxrel, ItemPointerGetBlockNumber(iptr));
    LockBuffer(regBuf, BUFFER_LOCK_EXCLUSIVE);
    regPg = BufferGetPage(regBuf);
+   /*
+    * We're only removing data, not reading it, so there's no need to
+    * TestForOldSnapshot here.
+    */
 
    /* if this is no longer a regular page, tell caller to start over */
    if (!BRIN_IS_REGULAR_PAGE(regPg))
@@ -386,23 +389,13 @@ brinRevmapDesummarizeRange(Relation idxrel, BlockNumber heapBlk)
        ereport(ERROR,
                (errcode(ERRCODE_INDEX_CORRUPTED),
                 errmsg("corrupted BRIN index: inconsistent range map")));
-   tup = (BrinTuple *) PageGetItem(regPg, lp);
-   /* XXX apply sanity checks?  Might as well delete a bogus tuple ... */
-
-   /*
-    * We're only removing data, not reading it, so there's no need to
-    * TestForOldSnapshot here.
-    */
 
    /*
-    * Because of SUE lock, this function shouldn't run concurrently with
-    * summarization.  Placeholder tuples can only exist as leftovers from
-    * crashed summarization, so if we detect any, we complain but proceed.
+    * Placeholder tuples only appear during unfinished summarization, and we
+    * hold ShareUpdateExclusiveLock, so this function cannot run concurrently
+    * with that.  So any placeholder tuples that exist are leftovers from a
+    * crashed or aborted summarization; remove them silently.
     */
-   if (BrinTupleIsPlaceholder(tup))
-       ereport(WARNING,
-               (errmsg("leftover placeholder tuple detected in BRIN index \"%s\", deleting",
-                       RelationGetRelationName(idxrel))));
 
    START_CRIT_SECTION();