summaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/memoryindex/field_index/field_index_test.cpp
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2019-06-24 15:18:28 +0200
committerTor Egge <Tor.Egge@broadpark.no>2019-06-24 15:18:28 +0200
commit14e53ea2cfa51ecb2a7863c2d641632a2d08fbc2 (patch)
treebd24d356e08971d9330e5d95e3107e2e1e255693 /searchlib/src/tests/memoryindex/field_index/field_index_test.cpp
parentd3fc7d9efbf656ec9a5623084fc91be0c79789e8 (diff)
Cap interleaved features in memory index (field_length, num_occs) to prevent
them wrapping around to low values. Cap reconstucted interleaved features the same way. Use interleaved features from memory index when writing disk index.
Diffstat (limited to 'searchlib/src/tests/memoryindex/field_index/field_index_test.cpp')
-rw-r--r--searchlib/src/tests/memoryindex/field_index/field_index_test.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/searchlib/src/tests/memoryindex/field_index/field_index_test.cpp b/searchlib/src/tests/memoryindex/field_index/field_index_test.cpp
index 7f2014a2207..ac1735e0549 100644
--- a/searchlib/src/tests/memoryindex/field_index/field_index_test.cpp
+++ b/searchlib/src/tests/memoryindex/field_index/field_index_test.cpp
@@ -679,6 +679,17 @@ TEST_F(FieldIndexInterleavedFeaturesTest, no_features_are_unpacked)
expect_features_unpacked("{1000000:}", 0, 0);
}
+TEST_F(FieldIndexInterleavedFeaturesTest, interleaved_features_are_capped)
+{
+ FeatureStore::DecodeContextCooked decoder(nullptr);
+ WrapInserter(idx).word("b").add(11, getFeatures(66001, 66000)).flush();
+ auto itr = this->idx.find("b");
+ EXPECT_EQ(11, itr.getKey());
+ auto &entry = itr.getData();
+ EXPECT_EQ(std::numeric_limits<uint16_t>::max(), entry.get_num_occs());
+ EXPECT_EQ(std::numeric_limits<uint16_t>::max(), entry.get_field_length());
+}
+
Schema
make_multi_field_schema()
{