@@ -80,7 +80,7 @@ inline constexpr bool is_sort_key_v = is_sort_key<std::decay_t<D>>::value;
8080class CoordinateSelector {
8181 public:
8282 // / Construct from an existing Dataset (captures its full domain).
83- explicit CoordinateSelector (const Dataset& dataset)
83+ explicit CoordinateSelector (Dataset& dataset)
8484 : dataset_(dataset), base_domain_(dataset.domain) {}
8585
8686 template <typename OutT, typename ... Ops>
@@ -117,14 +117,13 @@ class CoordinateSelector {
117117#ifdef MDIO_INTERNAL_PROFILING
118118 auto start = std::chrono::high_resolution_clock::now ();
119119#endif
120- auto non_const_ds = dataset_;
121120 const size_t n = kept_runs_.size ();
122121
123122 // 1) Fire off all reads in parallel and gather the key values
124123 std::vector<Future<VariableData<T>>> reads;
125124 reads.reserve (n);
126125 for (auto const & desc : kept_runs_) {
127- MDIO_ASSIGN_OR_RETURN (auto ds, non_const_ds .isel (desc));
126+ MDIO_ASSIGN_OR_RETURN (auto ds, dataset_ .isel (desc));
128127 MDIO_ASSIGN_OR_RETURN (auto var, ds.variables .get <T>(sort_key));
129128 reads.push_back (var.Read ());
130129 }
@@ -186,13 +185,12 @@ class CoordinateSelector {
186185#ifdef MDIO_INTERNAL_PROFILING
187186 auto start = std::chrono::high_resolution_clock::now ();
188187#endif
189- auto non_const_ds = dataset_;
190188 std::vector<Future<VariableData<T>>> reads;
191189 reads.reserve (kept_runs_.size ());
192190 std::vector<T> ret;
193191
194192 for (const auto & desc : kept_runs_) {
195- MDIO_ASSIGN_OR_RETURN (auto ds, non_const_ds .isel (desc));
193+ MDIO_ASSIGN_OR_RETURN (auto ds, dataset_ .isel (desc));
196194 MDIO_ASSIGN_OR_RETURN (auto var, ds.variables .get <T>(output_variable));
197195 auto fut = var.Read ();
198196 reads.push_back (fut);
@@ -226,7 +224,7 @@ class CoordinateSelector {
226224 }
227225
228226 private:
229- const Dataset& dataset_;
227+ Dataset& dataset_;
230228 tensorstore::IndexDomain<> base_domain_;
231229 std::vector<std::vector<mdio::RangeDescriptor<mdio::Index>>> kept_runs_;
232230
@@ -365,12 +363,11 @@ class CoordinateSelector {
365363 // until the Intervals are no longer needed.
366364 stored_intervals.reserve (kept_runs_.size ());
367365
368- auto non_const_ds = dataset_;
369366
370367 bool is_first_run = true ;
371368
372369 for (const auto & desc : kept_runs_) {
373- MDIO_ASSIGN_OR_RETURN (auto ds, non_const_ds .isel (desc));
370+ MDIO_ASSIGN_OR_RETURN (auto ds, dataset_ .isel (desc));
374371 MDIO_ASSIGN_OR_RETURN (
375372 auto var, ds.variables .get <T>(std::string (descriptor.label .label ())));
376373 auto fut = var.Read ();
0 commit comments