Add CREATE INDEX deduplication assertions.
authorPeter Geoghegan <pg@bowt.ie>
Tue, 31 Mar 2020 21:38:39 +0000 (14:38 -0700)
committerPeter Geoghegan <pg@bowt.ie>
Tue, 31 Mar 2020 21:38:39 +0000 (14:38 -0700)
Add two assertions that verify the assumptions about posting list tuple
space accounting and suffix truncation made within nbtsort.c.

src/backend/access/nbtree/nbtsort.c

index e66cd36dfae55cc27a60397e032fe14d7a9e0346..3924945664a3bd6848b40f191982cbb3bc2ed206 100644 (file)
@@ -908,6 +908,7 @@ _bt_buildadd(BTWriteState *wstate, BTPageState *state, IndexTuple itup,
         * assume that suffix truncation neither enlarges nor shrinks new high key
         * when applying soft limit, except when last tuple has a posting list.)
         */
+       Assert(last_truncextra == 0 || isleaf);
        if (pgspc < itupsz + (isleaf ? MAXALIGN(sizeof(ItemPointerData)) : 0) ||
                (pgspc + last_truncextra < state->btps_full && last_off > P_FIRSTKEY))
        {
@@ -983,6 +984,7 @@ _bt_buildadd(BTWriteState *wstate, BTPageState *state, IndexTuple itup,
                        ii = PageGetItemId(opage, OffsetNumberPrev(last_off));
                        lastleft = (IndexTuple) PageGetItem(opage, ii);
 
+                       Assert(IndexTupleSize(oitup) > last_truncextra);
                        truncated = _bt_truncate(wstate->index, lastleft, oitup,
                                                                         wstate->inskey);
                        if (!PageIndexTupleOverwrite(opage, P_HIKEY, (Item) truncated,