summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2023-01-09 22:30:53 +0100
committerTor Egge <Tor.Egge@online.no>2023-01-09 22:30:53 +0100
commit3081c121c2e06d50a04f31287813893574b4f310 (patch)
tree310ccdc21f8fbc78fe64e81f62f6bfa7bb80d761 /searchlib
parent57a96d0006038bec9a35ab42ed761ccf1b198bf2 (diff)
Add field length asserts.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/field_inverter.cpp4
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/ordered_field_index_inserter.cpp1
2 files changed, 5 insertions, 0 deletions
diff --git a/searchlib/src/vespa/searchlib/memoryindex/field_inverter.cpp b/searchlib/src/vespa/searchlib/memoryindex/field_inverter.cpp
index e8d9259ad20..a05b39a74a9 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/field_inverter.cpp
+++ b/searchlib/src/vespa/searchlib/memoryindex/field_inverter.cpp
@@ -543,6 +543,7 @@ FieldInverter::pushDocuments()
uint32_t lastDocId = 0;
vespalib::stringref word;
bool emptyFeatures = true;
+ uint32_t last_field_length = 0;
_inserter.rewind();
@@ -574,12 +575,15 @@ FieldInverter::pushDocuments()
lastWordPos = NO_WORD_POS;
const ElemInfo &elem = _elems[i._elemRef];
_features.set_field_length(elem.get_field_length());
+ last_field_length = elem.get_field_length();
} else {
continue; // ignore dup remove
}
} else {
// removes must come before non-removes
assert(!i.removed());
+ const ElemInfo &elem = _elems[i._elemRef];
+ assert(last_field_length == elem.get_field_length());
}
const ElemInfo &elem = _elems[i._elemRef];
if (i._wordPos != lastWordPos || i._elemId != lastElemId) {
diff --git a/searchlib/src/vespa/searchlib/memoryindex/ordered_field_index_inserter.cpp b/searchlib/src/vespa/searchlib/memoryindex/ordered_field_index_inserter.cpp
index a6bb45620e4..1f2f660b0e6 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/ordered_field_index_inserter.cpp
+++ b/searchlib/src/vespa/searchlib/memoryindex/ordered_field_index_inserter.cpp
@@ -145,6 +145,7 @@ OrderedFieldIndexInserter<interleaved_features>::add(uint32_t docId,
assert(docId != noDocId);
assert(_prevDocId == noDocId || _prevDocId < docId ||
(_prevDocId == docId && !_prevAdd));
+ assert(features.num_occs() <= features.field_length());
vespalib::datastore::EntryRef featureRef = _fieldIndex.addFeatures(features);
_adds.push_back(PostingListKeyDataType(docId, PostingListEntryType(featureRef,
cap_u16(features.num_occs()),