Skip to content

Commit bd22702

Browse files
authored
Remove b_backtrack from Vamana index (#428)
1 parent 173a5fb commit bd22702

File tree

8 files changed

+31
-96
lines changed

8 files changed

+31
-96
lines changed

src/include/api/ivf_pq_index.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -393,16 +393,16 @@ class IndexIVFPQ {
393393
}
394394

395395
index_impl(
396-
size_t num_vectors,
397-
size_t l_build,
398-
size_t r_max_degree,
399-
size_t b_backtrack,
396+
size_t n_list,
397+
size_t num_subspaces,
398+
size_t max_iterations,
399+
size_t convergence_tolerance,
400400
std::optional<TemporalPolicy> temporal_policy)
401401
: impl_index_(
402-
num_vectors,
403-
l_build,
404-
r_max_degree,
405-
b_backtrack,
402+
n_list,
403+
num_subspaces,
404+
max_iterations,
405+
convergence_tolerance,
406406
temporal_policy) {
407407
}
408408

src/include/api/vamana_index.h

Lines changed: 15 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,6 @@ class IndexVamana {
100100
l_build_ = std::stol(value);
101101
} else if (key == "r_max_degree") {
102102
r_max_degree_ = std::stol(value);
103-
} else if (key == "b_backtrack") {
104-
b_backtrack_ = std::stol(value);
105103
} else if (key == "feature_type") {
106104
feature_datatype_ = string_to_datatype(value);
107105
} else if (key == "id_type") {
@@ -111,10 +109,6 @@ class IndexVamana {
111109
}
112110
}
113111
}
114-
115-
if (b_backtrack_ == 0) {
116-
b_backtrack_ = l_build_;
117-
}
118112
}
119113

120114
/**
@@ -141,7 +135,6 @@ class IndexVamana {
141135
index_ = uri_dispatch_table.at(type)(ctx, group_uri, temporal_policy);
142136
l_build_ = index_->l_build();
143137
r_max_degree_ = index_->r_max_degree();
144-
b_backtrack_ = index_->b_backtrack();
145138

146139
if (dimensions_ != 0 && dimensions_ != index_->dimensions()) {
147140
throw std::runtime_error(
@@ -175,13 +168,12 @@ class IndexVamana {
175168

176169
// Create a new index. Note that we may have already loaded an existing
177170
// index by URI. In that case, we have updated our local state (i.e.
178-
// l_build_, r_max_degree_, b_backtrack_), but we should also use the
171+
// l_build_, r_max_degree_), but we should also use the
179172
// timestamp from that already loaded index.
180173
index_ = dispatch_table.at(type)(
181174
training_set.num_vectors(),
182175
l_build_,
183176
r_max_degree_,
184-
b_backtrack_,
185177
index_ ? std::make_optional<TemporalPolicy>(index_->temporal_policy()) :
186178
std::nullopt);
187179

@@ -272,10 +264,6 @@ class IndexVamana {
272264
return r_max_degree_;
273265
}
274266

275-
constexpr auto b_backtrack() const {
276-
return b_backtrack_;
277-
}
278-
279267
constexpr auto feature_type() const {
280268
return feature_datatype_;
281269
}
@@ -347,7 +335,6 @@ class IndexVamana {
347335
[[nodiscard]] virtual size_t dimensions() const = 0;
348336
[[nodiscard]] virtual size_t l_build() const = 0;
349337
[[nodiscard]] virtual size_t r_max_degree() const = 0;
350-
[[nodiscard]] virtual size_t b_backtrack() const = 0;
351338
[[nodiscard]] virtual TemporalPolicy temporal_policy() const = 0;
352339
};
353340

@@ -365,14 +352,8 @@ class IndexVamana {
365352
size_t num_vectors,
366353
size_t l_build,
367354
size_t r_max_degree,
368-
size_t b_backtrack,
369355
std::optional<TemporalPolicy> temporal_policy)
370-
: impl_index_(
371-
num_vectors,
372-
l_build,
373-
r_max_degree,
374-
b_backtrack,
375-
temporal_policy) {
356+
: impl_index_(num_vectors, l_build, r_max_degree, temporal_policy) {
376357
}
377358

378359
index_impl(
@@ -474,10 +455,6 @@ class IndexVamana {
474455
return impl_index_.r_max_degree();
475456
}
476457

477-
size_t b_backtrack() const override {
478-
return impl_index_.b_backtrack();
479-
}
480-
481458
TemporalPolicy temporal_policy() const override {
482459
return impl_index_.temporal_policy();
483460
}
@@ -490,7 +467,7 @@ class IndexVamana {
490467
};
491468

492469
// clang-format off
493-
using constructor_function = std::function<std::unique_ptr<index_base>(size_t, size_t, size_t, size_t, std::optional<TemporalPolicy>)>;
470+
using constructor_function = std::function<std::unique_ptr<index_base>(size_t, size_t, size_t, std::optional<TemporalPolicy>)>;
494471
using table_type = std::map<std::tuple<tiledb_datatype_t, tiledb_datatype_t, tiledb_datatype_t>, constructor_function>;
495472
static const table_type dispatch_table;
496473

@@ -506,7 +483,6 @@ class IndexVamana {
506483
size_t dimensions_ = 0;
507484
size_t l_build_ = 100;
508485
size_t r_max_degree_ = 64;
509-
size_t b_backtrack_ = 0;
510486
tiledb_datatype_t feature_datatype_{TILEDB_ANY};
511487
tiledb_datatype_t id_datatype_{TILEDB_ANY};
512488
static constexpr tiledb_datatype_t adjacency_row_index_datatype_{
@@ -516,18 +492,18 @@ class IndexVamana {
516492

517493
// clang-format off
518494
const IndexVamana::table_type IndexVamana::dispatch_table = {
519-
{{TILEDB_INT8, TILEDB_UINT32, TILEDB_UINT32}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, size_t b_backtrack, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<int8_t, uint32_t, uint32_t>>>(num_vectors, l_build, r_max_degree, b_backtrack, temporal_policy); }},
520-
{{TILEDB_UINT8, TILEDB_UINT32, TILEDB_UINT32}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, size_t b_backtrack, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<uint8_t, uint32_t, uint32_t>>>(num_vectors, l_build, r_max_degree, b_backtrack, temporal_policy); }},
521-
{{TILEDB_FLOAT32, TILEDB_UINT32, TILEDB_UINT32}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, size_t b_backtrack, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<float, uint32_t, uint32_t>>>(num_vectors, l_build, r_max_degree, b_backtrack, temporal_policy); }},
522-
{{TILEDB_INT8, TILEDB_UINT32, TILEDB_UINT64}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, size_t b_backtrack, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<int8_t, uint32_t, uint64_t>>>(num_vectors, l_build, r_max_degree, b_backtrack, temporal_policy); }},
523-
{{TILEDB_UINT8, TILEDB_UINT32, TILEDB_UINT64}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, size_t b_backtrack, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<uint8_t, uint32_t, uint64_t>>>(num_vectors, l_build, r_max_degree, b_backtrack, temporal_policy); }},
524-
{{TILEDB_FLOAT32, TILEDB_UINT32, TILEDB_UINT64}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, size_t b_backtrack, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<float, uint32_t, uint64_t>>>(num_vectors, l_build, r_max_degree, b_backtrack, temporal_policy); }},
525-
{{TILEDB_INT8, TILEDB_UINT64, TILEDB_UINT32}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, size_t b_backtrack, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<int8_t, uint64_t, uint32_t>>>(num_vectors, l_build, r_max_degree, b_backtrack, temporal_policy); }},
526-
{{TILEDB_UINT8, TILEDB_UINT64, TILEDB_UINT32}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, size_t b_backtrack, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<uint8_t, uint64_t, uint32_t>>>(num_vectors, l_build, r_max_degree, b_backtrack, temporal_policy); }},
527-
{{TILEDB_FLOAT32, TILEDB_UINT64, TILEDB_UINT32}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, size_t b_backtrack, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<float, uint64_t, uint32_t>>>(num_vectors, l_build, r_max_degree, b_backtrack, temporal_policy); }},
528-
{{TILEDB_INT8, TILEDB_UINT64, TILEDB_UINT64}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, size_t b_backtrack, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<int8_t, uint64_t, uint64_t>>>(num_vectors, l_build, r_max_degree, b_backtrack, temporal_policy); }},
529-
{{TILEDB_UINT8, TILEDB_UINT64, TILEDB_UINT64}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, size_t b_backtrack, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<uint8_t, uint64_t, uint64_t>>>(num_vectors, l_build, r_max_degree, b_backtrack, temporal_policy); }},
530-
{{TILEDB_FLOAT32, TILEDB_UINT64, TILEDB_UINT64}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, size_t b_backtrack, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<float, uint64_t, uint64_t>>>(num_vectors, l_build, r_max_degree, b_backtrack, temporal_policy); }},
495+
{{TILEDB_INT8, TILEDB_UINT32, TILEDB_UINT32}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<int8_t, uint32_t, uint32_t>>>(num_vectors, l_build, r_max_degree, temporal_policy); }},
496+
{{TILEDB_UINT8, TILEDB_UINT32, TILEDB_UINT32}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<uint8_t, uint32_t, uint32_t>>>(num_vectors, l_build, r_max_degree, temporal_policy); }},
497+
{{TILEDB_FLOAT32, TILEDB_UINT32, TILEDB_UINT32}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<float, uint32_t, uint32_t>>>(num_vectors, l_build, r_max_degree, temporal_policy); }},
498+
{{TILEDB_INT8, TILEDB_UINT32, TILEDB_UINT64}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<int8_t, uint32_t, uint64_t>>>(num_vectors, l_build, r_max_degree, temporal_policy); }},
499+
{{TILEDB_UINT8, TILEDB_UINT32, TILEDB_UINT64}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<uint8_t, uint32_t, uint64_t>>>(num_vectors, l_build, r_max_degree, temporal_policy); }},
500+
{{TILEDB_FLOAT32, TILEDB_UINT32, TILEDB_UINT64}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<float, uint32_t, uint64_t>>>(num_vectors, l_build, r_max_degree, temporal_policy); }},
501+
{{TILEDB_INT8, TILEDB_UINT64, TILEDB_UINT32}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<int8_t, uint64_t, uint32_t>>>(num_vectors, l_build, r_max_degree, temporal_policy); }},
502+
{{TILEDB_UINT8, TILEDB_UINT64, TILEDB_UINT32}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<uint8_t, uint64_t, uint32_t>>>(num_vectors, l_build, r_max_degree, temporal_policy); }},
503+
{{TILEDB_FLOAT32, TILEDB_UINT64, TILEDB_UINT32}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<float, uint64_t, uint32_t>>>(num_vectors, l_build, r_max_degree, temporal_policy); }},
504+
{{TILEDB_INT8, TILEDB_UINT64, TILEDB_UINT64}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<int8_t, uint64_t, uint64_t>>>(num_vectors, l_build, r_max_degree, temporal_policy); }},
505+
{{TILEDB_UINT8, TILEDB_UINT64, TILEDB_UINT64}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<uint8_t, uint64_t, uint64_t>>>(num_vectors, l_build, r_max_degree, temporal_policy); }},
506+
{{TILEDB_FLOAT32, TILEDB_UINT64, TILEDB_UINT64}, [](size_t num_vectors, size_t l_build, size_t r_max_degree, std::optional<TemporalPolicy> temporal_policy) { return std::make_unique<index_impl<vamana_index<float, uint64_t, uint64_t>>>(num_vectors, l_build, r_max_degree, temporal_policy); }},
531507
};
532508

533509
const IndexVamana::uri_table_type IndexVamana::uri_dispatch_table = {

src/include/index/vamana_group.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -154,12 +154,6 @@ class vamana_index_group : public base_index_group<index_type> {
154154
auto set_r_max_degree(size_t size) {
155155
metadata_.r_max_degree_ = size;
156156
}
157-
auto get_b_backtrack() const {
158-
return metadata_.b_backtrack_;
159-
}
160-
auto set_b_backtrack(size_t size) {
161-
metadata_.b_backtrack_ = size;
162-
}
163157
auto get_alpha_min() const {
164158
return metadata_.alpha_min_;
165159
}

src/include/index/vamana_index.h

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,6 @@ class vamana_index {
156156
*/
157157
uint64_t l_build_{0}; // diskANN paper says default = 100
158158
uint64_t r_max_degree_{0}; // diskANN paper says default = 64
159-
uint64_t b_backtrack_{0}; //
160159
float alpha_min_{1.0}; // per diskANN paper
161160
float alpha_max_{1.2}; // per diskANN paper
162161

@@ -180,16 +179,14 @@ class vamana_index {
180179
size_t num_nodes,
181180
size_t l_build,
182181
size_t r_max_degree,
183-
size_t b_backtrack,
184182
std::optional<TemporalPolicy> temporal_policy = std::nullopt)
185183
: temporal_policy_{
186184
temporal_policy.has_value() ? *temporal_policy :
187185
TemporalPolicy{TimeTravel, static_cast<uint64_t>(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count())}}
188186
, num_vectors_{num_nodes}
189187
, graph_{num_vectors_}
190188
, l_build_{l_build}
191-
, r_max_degree_{r_max_degree}
192-
, b_backtrack_{b_backtrack} {
189+
, r_max_degree_{r_max_degree} {
193190
}
194191

195192
/**
@@ -210,7 +207,6 @@ class vamana_index {
210207
num_edges_ = group_->get_num_edges();
211208
l_build_ = group_->get_l_build();
212209
r_max_degree_ = group_->get_r_max_degree();
213-
b_backtrack_ = group_->get_b_backtrack();
214210
alpha_min_ = group_->get_alpha_min();
215211
alpha_max_ = group_->get_alpha_max();
216212
medoid_ = group_->get_medoid();
@@ -683,10 +679,6 @@ class vamana_index {
683679
return r_max_degree_;
684680
}
685681

686-
constexpr auto b_backtrack() const {
687-
return b_backtrack_;
688-
}
689-
690682
/**
691683
* @brief Write the index to a TileDB group. The group consists of the
692684
* original feature vectors, and the graph index, which comprises the
@@ -728,7 +720,6 @@ class vamana_index {
728720
write_group.set_dimensions(dimensions_);
729721
write_group.set_l_build(l_build_);
730722
write_group.set_r_max_degree(r_max_degree_);
731-
write_group.set_b_backtrack(b_backtrack_);
732723
write_group.set_alpha_min(alpha_min_);
733724
write_group.set_alpha_max(alpha_max_);
734725
write_group.set_medoid(medoid_);
@@ -905,11 +896,6 @@ class vamana_index {
905896
<< " ! = " << rhs.r_max_degree_ << std::endl;
906897
return false;
907898
}
908-
if (b_backtrack_ != rhs.b_backtrack_) {
909-
std::cout << "b_backtrack_ != rhs.b_backtrack_" << b_backtrack_
910-
<< " ! = " << rhs.b_backtrack_ << std::endl;
911-
return false;
912-
}
913899
if (alpha_min_ != rhs.alpha_min_) {
914900
std::cout << "alpha_min_ != rhs.alpha_min_" << alpha_min_
915901
<< " ! = " << rhs.alpha_min_ << std::endl;

src/include/index/vamana_metadata.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ class vamana_index_metadata
8686

8787
uint64_t l_build_{0};
8888
uint64_t r_max_degree_{0};
89-
uint64_t b_backtrack_{0};
9089
float alpha_min_{1.0};
9190
float alpha_max_{1.2};
9291
uint64_t medoid_{0};
@@ -113,7 +112,6 @@ class vamana_index_metadata
113112
false},
114113
{"l_build", &l_build_, TILEDB_UINT64, false},
115114
{"r_max_degree", &r_max_degree_, TILEDB_UINT64, false},
116-
{"b_backtrack", &b_backtrack_, TILEDB_UINT64, false},
117115
{"alpha_min", &alpha_min_, TILEDB_FLOAT32, false},
118116
{"alpha_max", &alpha_max_, TILEDB_FLOAT32, false},
119117
{"medoid", &medoid_, TILEDB_UINT64, false},

src/include/test/unit_api_vamana_index.cc

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -291,8 +291,6 @@ TEST_CASE(
291291
{
292292
auto index = IndexVamana(ctx, index_uri);
293293

294-
// If we do not specify b_backtrack, it will be equal to l_build.
295-
CHECK(index.l_build() == index.b_backtrack());
296294
CHECK(index.feature_type_string() == feature_type);
297295
CHECK(index.id_type_string() == id_type);
298296

@@ -483,7 +481,6 @@ TEST_CASE("write and load index with timestamps", "[api_vamana_index]") {
483481
size_t dimensions = 3;
484482
size_t l_build = 100;
485483
size_t r_max_degree = 64;
486-
size_t b_backtrack = 50;
487484

488485
std::string index_uri =
489486
(std::filesystem::temp_directory_path() / "api_vamana_index").string();
@@ -499,8 +496,7 @@ TEST_CASE("write and load index with timestamps", "[api_vamana_index]") {
499496
{{"feature_type", feature_type},
500497
{"id_type", id_type},
501498
{"l_build", std::to_string(l_build)},
502-
{"r_max_degree", std::to_string(r_max_degree)},
503-
{"b_backtrack", std::to_string(b_backtrack)}}));
499+
{"r_max_degree", std::to_string(r_max_degree)}}));
504500

505501
size_t num_vectors = 0;
506502
auto empty_training_vector_array =
@@ -512,7 +508,6 @@ TEST_CASE("write and load index with timestamps", "[api_vamana_index]") {
512508
CHECK(index.temporal_policy().timestamp_end() == 0);
513509
CHECK(index.l_build() == l_build);
514510
CHECK(index.r_max_degree() == r_max_degree);
515-
CHECK(index.b_backtrack() == b_backtrack);
516511
CHECK(index.feature_type_string() == feature_type);
517512
CHECK(index.id_type_string() == id_type);
518513

@@ -548,7 +543,6 @@ TEST_CASE("write and load index with timestamps", "[api_vamana_index]") {
548543
std::numeric_limits<uint64_t>::max());
549544
CHECK(index.l_build() == l_build);
550545
CHECK(index.r_max_degree() == r_max_degree);
551-
CHECK(index.b_backtrack() == b_backtrack);
552546
CHECK(index.feature_type_string() == feature_type);
553547
CHECK(index.id_type_string() == id_type);
554548

@@ -565,7 +559,6 @@ TEST_CASE("write and load index with timestamps", "[api_vamana_index]") {
565559
CHECK(index.temporal_policy().timestamp_end() == 99);
566560
CHECK(index.l_build() == l_build);
567561
CHECK(index.r_max_degree() == r_max_degree);
568-
CHECK(index.b_backtrack() == b_backtrack);
569562
CHECK(index.feature_type_string() == feature_type);
570563
CHECK(index.id_type_string() == id_type);
571564

@@ -613,7 +606,6 @@ TEST_CASE("write and load index with timestamps", "[api_vamana_index]") {
613606
std::numeric_limits<uint64_t>::max());
614607
CHECK(index.l_build() == l_build);
615608
CHECK(index.r_max_degree() == r_max_degree);
616-
CHECK(index.b_backtrack() == b_backtrack);
617609
CHECK(index.feature_type_string() == feature_type);
618610
CHECK(index.id_type_string() == id_type);
619611

@@ -686,7 +678,6 @@ TEST_CASE("write and load index with timestamps", "[api_vamana_index]") {
686678
CHECK(index.temporal_policy().timestamp_end() == 99);
687679
CHECK(index.l_build() == l_build);
688680
CHECK(index.r_max_degree() == r_max_degree);
689-
CHECK(index.b_backtrack() == b_backtrack);
690681
CHECK(index.feature_type_string() == feature_type);
691682
CHECK(index.id_type_string() == id_type);
692683

@@ -745,7 +736,6 @@ TEST_CASE("write and load index with timestamps", "[api_vamana_index]") {
745736
CHECK(index.temporal_policy().timestamp_end() == 0);
746737
CHECK(index.l_build() == l_build);
747738
CHECK(index.r_max_degree() == r_max_degree);
748-
CHECK(index.b_backtrack() == b_backtrack);
749739
CHECK(index.feature_type_string() == feature_type);
750740
CHECK(index.id_type_string() == id_type);
751741

@@ -809,7 +799,6 @@ TEST_CASE("write and load index with timestamps", "[api_vamana_index]") {
809799
CHECK(index.temporal_policy().timestamp_end() == 99);
810800
CHECK(index.l_build() == l_build);
811801
CHECK(index.r_max_degree() == r_max_degree);
812-
CHECK(index.b_backtrack() == b_backtrack);
813802
CHECK(index.feature_type_string() == feature_type);
814803
CHECK(index.id_type_string() == id_type);
815804

0 commit comments

Comments
 (0)