summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Geoghegan <pg@bowt.ie>2020-11-15 11:53:37 -0800
committerPeter Geoghegan <pg@bowt.ie>2020-11-15 11:53:37 -0800
commit46cf3c72c36fef8c623b4b97d8720321d8ad7507 (patch)
tree51b87d938137f9345d5ab151986abee27effe2be
parentff94205787244ace8ce63e3d9eb98338c59ac215 (diff)
downloadpostgresql-46cf3c72c36fef8c623b4b97d8720321d8ad7507.tar.gz
nbtree: Demote incomplete split "can't happen" error.
Only a basic logic bug in a _bt_insertonpg() caller could lead to a violation of this invariant (index corruption won't do it). A "can't happen" error seems inappropriate (it is arbitrary at best). Demote the error to a simple assertion. This matches similar nearby sanity checks.
-rw-r--r--src/backend/access/nbtree/nbtinsert.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/src/backend/access/nbtree/nbtinsert.c b/src/backend/access/nbtree/nbtinsert.c
index d36f7557c8..1c4b0fd4b8 100644
--- a/src/backend/access/nbtree/nbtinsert.c
+++ b/src/backend/access/nbtree/nbtinsert.c
@@ -1129,6 +1129,8 @@ _bt_insertonpg(Relation rel,
IndexRelationGetNumberOfKeyAttributes(rel));
Assert(!BTreeTupleIsPosting(itup));
Assert(MAXALIGN(IndexTupleSize(itup)) == itemsz);
+ /* Caller must always finish incomplete split for us */
+ Assert(!P_INCOMPLETE_SPLIT(lpageop));
/*
* Every internal page should have exactly one negative infinity item at
@@ -1138,11 +1140,6 @@ _bt_insertonpg(Relation rel,
*/
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",
- BufferGetBlockNumber(buf));
-
/*
* Do we need to split an existing posting list item?
*/