diff options
author | Tor Egge <Tor.Egge@online.no> | 2023-01-09 22:30:53 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2023-01-09 22:30:53 +0100 |
commit | 3081c121c2e06d50a04f31287813893574b4f310 (patch) | |
tree | 310ccdc21f8fbc78fe64e81f62f6bfa7bb80d761 /searchlib | |
parent | 57a96d0006038bec9a35ab42ed761ccf1b198bf2 (diff) |
Add field length asserts.
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/vespa/searchlib/memoryindex/field_inverter.cpp | 4 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/memoryindex/ordered_field_index_inserter.cpp | 1 |
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()), |