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

Method split_top_multi_range

tiledb/sm/subarray/subarray_partitioner.cc:1284–1325  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1282}
1283
1284Status SubarrayPartitioner::split_top_multi_range(bool* unsplittable) {
1285 // For easy reference
1286 const auto& partition = state_.multi_range_.front();
1287
1288 // Check if unsplittable
1289 if (partition.is_unary()) {
1290 *unsplittable = true;
1291 return Status::Ok();
1292 }
1293
1294 // Finding splitting value
1295 unsigned splitting_dim;
1296 uint64_t splitting_range = UINT64_MAX;
1297 ByteVecValue splitting_value;
1298 bool normal_order;
1299 RETURN_NOT_OK(compute_splitting_value_multi_range(
1300 &splitting_dim,
1301 &splitting_range,
1302 &splitting_value,
1303 &normal_order,
1304 unsplittable));
1305
1306 if (*unsplittable)
1307 return Status::Ok();
1308
1309 // Split partition into two partitions
1310 Subarray p1;
1311 Subarray p2;
1312 partition.split(splitting_range, splitting_dim, splitting_value, &p1, &p2);
1313
1314 // Update list
1315 state_.multi_range_.pop_front();
1316 if (normal_order) {
1317 state_.multi_range_.push_front(std::move(p2));
1318 state_.multi_range_.push_front(std::move(p1));
1319 } else {
1320 state_.multi_range_.push_front(std::move(p1));
1321 state_.multi_range_.push_front(std::move(p2));
1322 }
1323
1324 return Status::Ok();
1325}
1326
1327void SubarrayPartitioner::swap(SubarrayPartitioner& partitioner) {
1328 std::swap(stats_, partitioner.stats_);

Callers

nothing calls this directly

Calls 2

is_unaryMethod · 0.80
splitMethod · 0.80

Tested by

no test coverage detected