Add assertions to _bt_update_posting().
authorPeter Geoghegan <pg@bowt.ie>
Mon, 2 Mar 2020 16:07:16 +0000 (08:07 -0800)
committerPeter Geoghegan <pg@bowt.ie>
Mon, 2 Mar 2020 16:07:16 +0000 (08:07 -0800)
Copy some assertions from _bt_form_posting() to its sibling function,
_bt_update_posting().

Discussion: https://postgr.es/m/CAH2-WzkPR8KMwkL0ap976kmXwBCeukTeHz6fB-U__wvuP1S9Zg@mail.gmail.com

src/backend/access/nbtree/nbtdedup.c

index 3175d6fdd1d83b08617336b5b9459d9edacf1418..2434ce134bf696f2b3c2bb8a32fc8122b63062c7 100644 (file)
@@ -688,6 +688,9 @@ _bt_update_posting(BTVacuumPosting vacposting)
        else
                newsize = keysize;
 
+       Assert(newsize <= INDEX_SIZE_MASK);
+       Assert(newsize == MAXALIGN(newsize));
+
        /* Allocate memory using palloc0() (matches index_form_tuple()) */
        itup = palloc0(newsize);
        memcpy(itup, origtuple, keysize);
@@ -721,6 +724,7 @@ _bt_update_posting(BTVacuumPosting vacposting)
        Assert(ui == nhtids);
        Assert(d == vacposting->ndeletedtids);
        Assert(nhtids == 1 || _bt_posting_valid(itup));
+       Assert(nhtids > 1 || ItemPointerIsValid(&itup->t_tid));
 
        /* vacposting arg's itup will now point to updated version */
        vacposting->itup = itup;