From e4fcc1c0502e8f284b5f001cc43796f387c8558f Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Fri, 16 Feb 2024 10:36:08 -0500 Subject: [PATCH] Use reserve for label_range_subset --- tiledb/sm/serialization/query.cc | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/tiledb/sm/serialization/query.cc b/tiledb/sm/serialization/query.cc index f8113b8189a6..1c010d12b33e 100644 --- a/tiledb/sm/serialization/query.cc +++ b/tiledb/sm/serialization/query.cc @@ -303,8 +303,9 @@ Subarray subarray_from_capnp( } } - std::vector> label_range_subset( - dim_num, nullopt); + std::vector> label_range_subset; + label_range_subset.reserve(dim_num); + uint32_t last_dim = 0; if (reader.hasLabelRanges()) { auto label_ranges_reader = reader.getLabelRanges(); uint32_t label_num = label_ranges_reader.size(); @@ -312,6 +313,11 @@ Subarray subarray_from_capnp( auto label_range_reader = label_ranges_reader[i]; auto dim_index = label_range_reader.getDimensionId(); auto dim = array->array_schema_latest().dimension_ptr(dim_index); + + // Fill in any missing dimensions with nullopt + for (; last_dim < dim_index; last_dim++) { + label_range_subset.emplace_back(std::nullopt); + } auto label_name = label_range_reader.getName(); // Deserialize ranges for this dim label @@ -319,11 +325,19 @@ Subarray subarray_from_capnp( auto label_ranges = range_buffers_from_capnp(range_reader); // Set ranges for this dim label on the subarray - label_range_subset[dim_index] = { - label_name, dim->type(), label_ranges, coalesce_ranges}; + label_range_subset.emplace_back( + std::in_place, + label_name, + dim->type(), + label_ranges, + coalesce_ranges); is_default[dim_index] = false; } } + // Fill in label ranges with nullopt for any remaining dimensions + for (; last_dim < dim_num; last_dim++) { + label_range_subset.emplace_back(std::nullopt); + } std::unordered_map> attr_range_subset; if (reader.hasAttributeRanges()) {