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;