Skip to content

Commit 8f4ca06

Browse files
committed
Make where method async
1 parent f220d36 commit 8f4ca06

2 files changed

Lines changed: 28 additions & 20 deletions

File tree

mdio/dataset.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -998,7 +998,7 @@ class Dataset {
998998
}
999999

10001000
template <typename T>
1001-
Result<Dataset> where(const ValueDescriptor<T>& coord_desc) {
1001+
Future<Dataset> where(const ValueDescriptor<T>& coord_desc) {
10021002
// 1) Lookup the coordinate Variable<T>
10031003
auto varRes =
10041004
variables.get<T>(std::string(coord_desc.label.label()));
@@ -1044,7 +1044,9 @@ class Dataset {
10441044
std::string(coord_desc.label.label()) + "'");
10451045
}
10461046

1047-
return isel(elementwiseSlices);
1047+
MDIO_ASSIGN_OR_RETURN(auto ds, isel(elementwiseSlices));
1048+
return tensorstore::ReadyFuture<Dataset>(std::move(ds));
1049+
// return isel(elementwiseSlices);
10481050
}
10491051

10501052
/**

mdio/dataset_test.cc

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -674,19 +674,21 @@ TEST(Dataset, where) {
674674
std::cout << ds.variables.at("inline").value() << std::endl;
675675
std::cout << ds.variables.at("data").value() << std::endl;
676676
std::cout << "=================Picked inline spec=================" << std::endl;
677-
auto sliceRes2 = sliceRes.value().where(ilValue);
678-
std::cout << sliceRes.value().variables.at("data").value().get_spec().value()["transform"].dump(4) << std::endl;
679-
auto il = sliceRes.value().variables.get<mdio::dtypes::int32_t>("inline").value();
677+
auto sliceFut = sliceRes.value().where(ilValue);
678+
ASSERT_TRUE(sliceFut.status().ok()) << sliceFut.status();
679+
auto slicedDs = sliceFut.value();
680+
std::cout << slicedDs.variables.at("data").value().get_spec().value()["transform"].dump(4) << std::endl;
681+
auto il = slicedDs.variables.get<mdio::dtypes::int32_t>("inline").value();
680682
std::cout << il << std::endl;
681-
std::cout << sliceRes.value().variables.at("data").value() << std::endl;
683+
std::cout << slicedDs.variables.at("data").value() << std::endl;
682684
auto ilr = il.Read().value();
683685
for (auto i=0; i < il.num_samples(); i++) {
684686
std::cout << "[" << i << "]: " << ilr.get_data_accessor().data()[i+ilr.get_flattened_offset()] << std::endl;
685687
}
686-
std::cout << "=================Picked inline spec=================" << std::endl;
687-
// ASSERT_TRUE(sliceRes.ok()) << sliceRes.status();
688-
ASSERT_FALSE(sliceRes1.status().ok());
689-
ASSERT_FALSE(sliceRes2.status().ok()) << sliceRes2.status();
688+
// std::cout << "=================Picked inline spec=================" << std::endl;
689+
// // ASSERT_TRUE(sliceRes.ok()) << sliceRes.status();
690+
// ASSERT_FALSE(sliceRes1.status().ok());
691+
// ASSERT_FALSE(sliceRes2.status().ok()) << sliceRes2.status();
690692
}
691693

692694
TEST(Dataset, where2) {
@@ -701,16 +703,20 @@ TEST(Dataset, where2) {
701703
ASSERT_TRUE(sliceRes.ok()) << sliceRes.status();
702704
auto slicedDs = sliceRes.value();
703705
std::cout << slicedDs.variables.at("data").value() << std::endl;
704-
auto sliceRes2 = slicedDs.where(ilValue);
706+
auto sliceFut = slicedDs.where(ilValue);
707+
ASSERT_TRUE(sliceFut.status().ok()) << sliceFut.status();
708+
auto slicedDs2 = sliceFut.value();
705709
ilRange.start = 2;
706710
ilRange.stop = 4;
707711
ilRange.step = 1;
708-
auto sliceRes3 = slicedDs.isel(ilRange);
709-
std::cout << sliceRes3.value().variables.at("data").value() << std::endl;
710-
auto sliceRes4 = sliceRes3.value().where(ilValue);
711-
// std::cout << "===================Sliced Data=================" << std::endl;
712-
// std::cout << "===================Whered Data=================" << std::endl;
713-
// std::cout << sliceRes2.value().variables.at("data").value() << std::endl;
712+
auto sliceFut2 = slicedDs2.isel(ilRange);
713+
ASSERT_TRUE(sliceFut2.status().ok()) << sliceFut2.status();
714+
auto slicedDs3 = sliceFut2.value();
715+
std::cout << slicedDs3.variables.at("data").value() << std::endl;
716+
auto sliceFut3 = slicedDs3.where(ilValue);
717+
ASSERT_TRUE(sliceFut3.status().ok()) << sliceFut3.status();
718+
auto slicedDs4 = sliceFut3.value();
719+
std::cout << slicedDs4.variables.at("data").value() << std::endl;
714720
}
715721

716722
TEST(Dataset, where3) {
@@ -720,9 +726,9 @@ TEST(Dataset, where3) {
720726
auto ds = dsRes.value();
721727

722728
mdio::ValueDescriptor<mdio::dtypes::int32_t> ilValue = {"inline", 3};
723-
auto sliceRes = ds.where(ilValue);
724-
ASSERT_TRUE(sliceRes.ok()) << sliceRes.status();
725-
auto slicedDs = sliceRes.value();
729+
auto sliceFut = ds.where(ilValue);
730+
ASSERT_TRUE(sliceFut.status().ok()) << sliceFut.status();
731+
auto slicedDs = sliceFut.value();
726732
std::cout << slicedDs << std::endl;
727733

728734
}

0 commit comments

Comments
 (0)