diff --git a/src/include/index/index_group.h b/src/include/index/index_group.h index 10d1b7468..f7ff07e42 100644 --- a/src/include/index/index_group.h +++ b/src/include/index/index_group.h @@ -318,6 +318,12 @@ class base_index_group { if (opened_for_ == TILEDB_WRITE) { set_dimensions(dimensions); } + if (empty(this->version_)) { + this->version_ = current_storage_version; + } + if (storage_formats.find(this->version_) == storage_formats.end()) { + throw std::runtime_error("Invalid storage version: " + this->version_); + } } /** diff --git a/src/include/index/ivf_flat_group.h b/src/include/index/ivf_flat_group.h index a70fdbccc..9fec52929 100644 --- a/src/include/index/ivf_flat_group.h +++ b/src/include/index/ivf_flat_group.h @@ -136,9 +136,6 @@ class ivf_flat_group : public base_index_group { } void create_default_impl() { - if (empty(this->version_)) { - this->version_ = current_storage_version; - } this->init_valid_array_names(); static const int32_t tile_size{ diff --git a/src/include/index/ivf_pq_group.h b/src/include/index/ivf_pq_group.h index b3ce93f0a..8d8b20b2e 100644 --- a/src/include/index/ivf_pq_group.h +++ b/src/include/index/ivf_pq_group.h @@ -245,9 +245,6 @@ class ivf_pq_group : public base_index_group { * Create a ready-to-use group with default arrays ****************************************************************************/ void create_default_impl() { - if (empty(this->version_)) { - this->version_ = current_storage_version; - } this->init_valid_array_names(); static const int32_t tile_size{ diff --git a/src/include/index/vamana_group.h b/src/include/index/vamana_group.h index b9a5482f6..a80b0b65b 100644 --- a/src/include/index/vamana_group.h +++ b/src/include/index/vamana_group.h @@ -198,9 +198,6 @@ class vamana_index_group : public base_index_group { } void create_default_impl() { - if (empty(this->version_)) { - this->version_ = current_storage_version; - } this->init_valid_array_names(); static const int32_t tile_size{ diff --git a/src/include/test/unit_api_ivf_pq_index.cc b/src/include/test/unit_api_ivf_pq_index.cc index bc2cda8df..9936248d1 100644 --- a/src/include/test/unit_api_ivf_pq_index.cc +++ b/src/include/test/unit_api_ivf_pq_index.cc @@ -658,7 +658,7 @@ TEST_CASE("storage_version", "[api_ivf_pq_index]") { // Throw with the wrong version. CHECK_THROWS_WITH( index.write_index(ctx, index_uri, std::nullopt, "0.4"), - "Version mismatch. Requested 0.4 but found 0.3"); + "Invalid storage version: 0.4"); // Succeed without a version. index.write_index(ctx, index_uri); // Succeed with the same version. diff --git a/src/include/test/unit_api_vamana_index.cc b/src/include/test/unit_api_vamana_index.cc index 96c84e281..cfb52ce01 100644 --- a/src/include/test/unit_api_vamana_index.cc +++ b/src/include/test/unit_api_vamana_index.cc @@ -476,7 +476,7 @@ TEST_CASE("storage_version", "[api_vamana_index]") { // Throw with the wrong version. CHECK_THROWS_WITH( index.write_index(ctx, index_uri, std::nullopt, "0.4"), - "Version mismatch. Requested 0.4 but found 0.3"); + "Invalid storage version: 0.4"); // Succeed without a version. index.write_index(ctx, index_uri); // Succeed with the same version. diff --git a/src/include/test/unit_ivf_flat_group.cc b/src/include/test/unit_ivf_flat_group.cc index 1f503cb15..699a224e4 100644 --- a/src/include/test/unit_ivf_flat_group.cc +++ b/src/include/test/unit_ivf_flat_group.cc @@ -444,7 +444,7 @@ TEST_CASE("mismatched storage version", "[ivf_flat_group]") { TemporalPolicy{TimeTravel, 0}, "different_version", 10), - "Version mismatch. Requested different_version but found 0.3"); + "Invalid storage version: different_version"); } TEST_CASE("clear history", "[ivf_flat_group]") { diff --git a/src/include/test/unit_ivf_pq_group.cc b/src/include/test/unit_ivf_pq_group.cc index 925a9026e..c029bd1d4 100644 --- a/src/include/test/unit_ivf_pq_group.cc +++ b/src/include/test/unit_ivf_pq_group.cc @@ -601,7 +601,7 @@ TEST_CASE("mismatched storage version", "[ivf_pq_group]") { TemporalPolicy{TimeTravel, 0}, "different_version", 10), - "Version mismatch. Requested different_version but found 0.3"); + "Invalid storage version: different_version"); } TEST_CASE("clear history", "[ivf_pq_group]") { diff --git a/src/include/test/unit_vamana_group.cc b/src/include/test/unit_vamana_group.cc index f3e5a976d..d5740f907 100644 --- a/src/include/test/unit_vamana_group.cc +++ b/src/include/test/unit_vamana_group.cc @@ -453,7 +453,7 @@ TEST_CASE("mismatched storage version", "[vamana_group]") { TemporalPolicy{TimeTravel, 0}, "different_version", 10), - "Version mismatch. Requested different_version but found 0.3"); + "Invalid storage version: different_version"); } TEST_CASE("clear history", "[vamana_group]") {