diff --git a/src/backend/access/nbtree/nbtinsert.c b/src/backend/access/nbtree/nbtinsert.c index 03b7e45293..fb814ef722 100644 --- a/src/backend/access/nbtree/nbtinsert.c +++ b/src/backend/access/nbtree/nbtinsert.c @@ -1082,6 +1082,14 @@ _bt_insertonpg(Relation rel, IndexRelationGetNumberOfKeyAttributes(rel)); Assert(!BTreeTupleIsPosting(itup)); + /* + * Every internal page should have exactly one negative infinity item at + * all times. Only _bt_split() and _bt_newroot() should add items that + * become negative infinity items through truncation, since they're the + * only routines that allocate new internal pages. + */ + Assert(P_ISLEAF(lpageop) || newitemoff > P_FIRSTDATAKEY(lpageop)); + /* The caller should've finished any incomplete splits already. */ if (P_INCOMPLETE_SPLIT(lpageop)) elog(ERROR, "cannot insert to incompletely split page %u", @@ -1212,18 +1220,6 @@ _bt_insertonpg(Relation rel, } } - /* - * Every internal page should have exactly one negative infinity item - * at all times. Only _bt_split() and _bt_newroot() should add items - * that become negative infinity items through truncation, since - * they're the only routines that allocate new internal pages. Do not - * allow a retail insertion of a new item at the negative infinity - * offset. - */ - if (!P_ISLEAF(lpageop) && newitemoff == P_FIRSTDATAKEY(lpageop)) - elog(ERROR, "cannot insert second negative infinity item in block %u of index \"%s\"", - itup_blkno, RelationGetRelationName(rel)); - /* Do the update. No ereport(ERROR) until changes are logged */ START_CRIT_SECTION();