@@ -291,11 +291,11 @@ Subarray subarray_from_capnp(
291291 // Edge case for dimension labels where there are only label ranges set.
292292 if (ranges.empty ()) {
293293 range_subset[i] = RangeSetAndSuperset (
294- dim->type (), dim->domain (), false , coalesce_ranges);
295- }
296- // Add custom ranges, clearing any implicit ranges previously set.
297- for ( const auto & range : ranges) {
298- throw_if_not_ok (range_subset[i]. add_range_unrestricted (range) );
294+ dim->type (), dim->domain (), {dim-> domain ()} , coalesce_ranges);
295+ } else {
296+ // Add custom ranges, clearing any implicit ranges previously set.
297+ range_subset[i] = RangeSetAndSuperset (
298+ dim-> type (), dim-> domain (), ranges, coalesce_ranges );
299299 }
300300 }
301301 } else {
@@ -320,11 +320,13 @@ Subarray subarray_from_capnp(
320320
321321 // Deserialize ranges for this dim label
322322 auto range_reader = label_range_reader.getRanges ();
323- auto ranges = range_buffers_from_capnp (range_reader);
323+ auto label_ranges = range_buffers_from_capnp (range_reader);
324324
325325 // Set ranges for this dim label on the subarray
326326 label_range_subset[dim_index] = {
327- label_name, dim->type (), coalesce_ranges};
327+ label_name, dim->type (), label_ranges, coalesce_ranges};
328+ range_subset[dim_index].clear ();
329+ is_default[dim_index] = false ;
328330 }
329331 }
330332
0 commit comments