Commit 7dbe290d authored by Peter Geoghegan's avatar Peter Geoghegan

Add CREATE INDEX deduplication assertions.

Add two assertions that verify the assumptions about posting list tuple
space accounting and suffix truncation made within nbtsort.c.
parent c2da793f
...@@ -908,6 +908,7 @@ _bt_buildadd(BTWriteState *wstate, BTPageState *state, IndexTuple itup, ...@@ -908,6 +908,7 @@ _bt_buildadd(BTWriteState *wstate, BTPageState *state, IndexTuple itup,
* assume that suffix truncation neither enlarges nor shrinks new high key * assume that suffix truncation neither enlarges nor shrinks new high key
* when applying soft limit, except when last tuple has a posting list.) * 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) || if (pgspc < itupsz + (isleaf ? MAXALIGN(sizeof(ItemPointerData)) : 0) ||
(pgspc + last_truncextra < state->btps_full && last_off > P_FIRSTKEY)) (pgspc + last_truncextra < state->btps_full && last_off > P_FIRSTKEY))
{ {
...@@ -983,6 +984,7 @@ _bt_buildadd(BTWriteState *wstate, BTPageState *state, IndexTuple itup, ...@@ -983,6 +984,7 @@ _bt_buildadd(BTWriteState *wstate, BTPageState *state, IndexTuple itup,
ii = PageGetItemId(opage, OffsetNumberPrev(last_off)); ii = PageGetItemId(opage, OffsetNumberPrev(last_off));
lastleft = (IndexTuple) PageGetItem(opage, ii); lastleft = (IndexTuple) PageGetItem(opage, ii);
Assert(IndexTupleSize(oitup) > last_truncextra);
truncated = _bt_truncate(wstate->index, lastleft, oitup, truncated = _bt_truncate(wstate->index, lastleft, oitup,
wstate->inskey); wstate->inskey);
if (!PageIndexTupleOverwrite(opage, P_HIKEY, (Item) truncated, if (!PageIndexTupleOverwrite(opage, P_HIKEY, (Item) truncated,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment