Add _bt_binsrch() scantid assertion to nbtree.
Assert that _bt_binsrch() binary searches with scantid set in insertion scankey cannot be performed on leaf pages. Leaf-level binary searches where scantid is set must use _bt_binsrch_insert() instead. _bt_binsrch_insert() is likely to have additional responsibilities in the future, such as searching within GIN-style posting lists using scantid. It seems like a good idea to tighten things up now.
This commit is contained in:
parent
3146f5257f
commit
55d015bde0
@ -347,12 +347,14 @@ _bt_binsrch(Relation rel,
|
|||||||
int32 result,
|
int32 result,
|
||||||
cmpval;
|
cmpval;
|
||||||
|
|
||||||
/* Requesting nextkey semantics while using scantid seems nonsensical */
|
|
||||||
Assert(!key->nextkey || key->scantid == NULL);
|
|
||||||
|
|
||||||
page = BufferGetPage(buf);
|
page = BufferGetPage(buf);
|
||||||
opaque = (BTPageOpaque) PageGetSpecialPointer(page);
|
opaque = (BTPageOpaque) PageGetSpecialPointer(page);
|
||||||
|
|
||||||
|
/* Requesting nextkey semantics while using scantid seems nonsensical */
|
||||||
|
Assert(!key->nextkey || key->scantid == NULL);
|
||||||
|
/* scantid-set callers must use _bt_binsrch_insert() on leaf pages */
|
||||||
|
Assert(!P_ISLEAF(opaque) || key->scantid == NULL);
|
||||||
|
|
||||||
low = P_FIRSTDATAKEY(opaque);
|
low = P_FIRSTDATAKEY(opaque);
|
||||||
high = PageGetMaxOffsetNumber(page);
|
high = PageGetMaxOffsetNumber(page);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user