MCPcopy Create free account
hub / github.com/TileDB-Inc/TileDB / split_top_single_range

Method split_top_single_range

tiledb/sm/subarray/subarray_partitioner.cc:1247–1282  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1245}
1246
1247Status SubarrayPartitioner::split_top_single_range(bool* unsplittable) {
1248 // For easy reference
1249 const auto& range = state_.single_range_.front();
1250
1251 // Check if unsplittable
1252 if (range.is_unary()) {
1253 *unsplittable = true;
1254 return Status::Ok();
1255 }
1256
1257 // Finding splitting value
1258 ByteVecValue splitting_value;
1259 unsigned splitting_dim;
1260 bool normal_order;
1261 compute_splitting_value_single_range(
1262 range, &splitting_dim, &splitting_value, &normal_order, unsplittable);
1263
1264 if (*unsplittable)
1265 return Status::Ok();
1266
1267 // Split remaining range into two ranges
1268 Subarray r1, r2;
1269 range.split(splitting_dim, splitting_value, &r1, &r2);
1270
1271 // Update list
1272 state_.single_range_.pop_front();
1273 if (normal_order) {
1274 state_.single_range_.push_front(std::move(r2));
1275 state_.single_range_.push_front(std::move(r1));
1276 } else {
1277 state_.single_range_.push_front(std::move(r1));
1278 state_.single_range_.push_front(std::move(r2));
1279 }
1280
1281 return Status::Ok();
1282}
1283
1284Status SubarrayPartitioner::split_top_multi_range(bool* unsplittable) {
1285 // For easy reference

Callers

nothing calls this directly

Calls 2

is_unaryMethod · 0.80
splitMethod · 0.80

Tested by

no test coverage detected