Skip to content

Commit 739aa5b

Browse files
Remove Status from Query. (#5781)
This PR updates all methods of the `tiledb::sm::Query` class that return `Status`, to return `void` or another appropriate type, and communicate errors by throwing exceptions. --- TYPE: NO_HISTORY
1 parent 8110ddd commit 739aa5b

File tree

15 files changed

+415
-526
lines changed

15 files changed

+415
-526
lines changed

test/src/unit-cppapi-partial-attribute-write.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ TEST_CASE_METHOD(
315315
// Try to rewrite an attribute, will throw an exception.
316316
CHECK_THROWS_WITH(
317317
write_sparse_a1(*query, {8, 9, 10, 11, 12, 13, 14, 15}),
318-
"[TileDB::Query] Error: Buffer a1 was already written");
318+
"Query: Buffer a1 was already written");
319319

320320
write_sparse_a2(*query, {8, 9, 10, 11, 12, 13, 14, 15});
321321

test/src/unit-enumerations.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2488,7 +2488,7 @@ TEST_CASE_METHOD(
24882488
ctx_.cancellation_source(),
24892489
ctx_.storage_manager(),
24902490
array);
2491-
throw_if_not_ok(q1.set_condition(qc1));
2491+
q1.set_condition(qc1);
24922492

24932493
Query q2(
24942494
ctx_.resources(),
@@ -2532,7 +2532,7 @@ TEST_CASE_METHOD(
25322532
ctx_.cancellation_source(),
25332533
ctx_.storage_manager(),
25342534
array);
2535-
throw_if_not_ok(q1.set_condition(qc3));
2535+
q1.set_condition(qc3);
25362536

25372537
Query q2(
25382538
ctx_.resources(),

test/src/unit-sparse-global-order-reader.cc

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3603,9 +3603,7 @@ void CSparseGlobalOrderFx::run_execute(Instance& instance) {
36033603

36043604
if (instance.condition.has_value()) {
36053605
tiledb::sm::QueryCondition qc(instance.condition->get()->clone());
3606-
const auto rc =
3607-
query->query_->set_condition(qc); // SAFETY: this performs a deep copy
3608-
ASSERTER(rc.to_string() == "Ok");
3606+
query->query_->set_condition(qc); // SAFETY: this performs a deep copy
36093607
}
36103608

36113609
// Prepare output buffer

tiledb/sm/c_api/tiledb.cc

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ int32_t tiledb_query_set_data_buffer(
470470
return TILEDB_ERR;
471471

472472
// Set attribute buffer
473-
throw_if_not_ok(query->query_->set_data_buffer(name, buffer, buffer_size));
473+
query->query_->set_data_buffer(name, buffer, buffer_size);
474474

475475
return TILEDB_OK;
476476
}
@@ -485,8 +485,7 @@ int32_t tiledb_query_set_offsets_buffer(
485485
return TILEDB_ERR;
486486

487487
// Set attribute buffer
488-
throw_if_not_ok(query->query_->set_offsets_buffer(
489-
name, buffer_offsets, buffer_offsets_size));
488+
query->query_->set_offsets_buffer(name, buffer_offsets, buffer_offsets_size);
490489

491490
return TILEDB_OK;
492491
}
@@ -501,8 +500,8 @@ int32_t tiledb_query_set_validity_buffer(
501500
return TILEDB_ERR;
502501

503502
// Set attribute buffer
504-
throw_if_not_ok(query->query_->set_validity_buffer(
505-
name, buffer_validity, buffer_validity_size));
503+
query->query_->set_validity_buffer(
504+
name, buffer_validity, buffer_validity_size);
506505

507506
return TILEDB_OK;
508507
}
@@ -518,7 +517,7 @@ int32_t tiledb_query_get_data_buffer(
518517
return TILEDB_ERR;
519518

520519
// Get attribute buffer
521-
throw_if_not_ok(query->query_->get_data_buffer(name, buffer, buffer_size));
520+
std::tie(*buffer, *buffer_size) = query->query_->get_data_buffer(name);
522521

523522
return TILEDB_OK;
524523
}
@@ -534,7 +533,7 @@ int32_t tiledb_query_get_offsets_buffer(
534533
return TILEDB_ERR;
535534

536535
// Get attribute buffer
537-
throw_if_not_ok(query->query_->get_offsets_buffer(name, buffer, buffer_size));
536+
std::tie(*buffer, *buffer_size) = query->query_->get_offsets_buffer(name);
538537

539538
return TILEDB_OK;
540539
}
@@ -550,8 +549,7 @@ int32_t tiledb_query_get_validity_buffer(
550549
return TILEDB_ERR;
551550

552551
// Get attribute buffer
553-
throw_if_not_ok(
554-
query->query_->get_validity_buffer(name, buffer, buffer_size));
552+
std::tie(*buffer, *buffer_size) = query->query_->get_validity_buffer(name);
555553

556554
return TILEDB_OK;
557555
}
@@ -563,8 +561,7 @@ int32_t tiledb_query_set_layout(
563561
return TILEDB_ERR;
564562

565563
// Set layout
566-
throw_if_not_ok(
567-
query->query_->set_layout(static_cast<tiledb::sm::Layout>(layout)));
564+
query->query_->set_layout(static_cast<tiledb::sm::Layout>(layout));
568565

569566
return TILEDB_OK;
570567
}
@@ -579,7 +576,7 @@ int32_t tiledb_query_set_condition(
579576
return TILEDB_ERR;
580577

581578
// Set layout
582-
throw_if_not_ok(query->query_->set_condition(*cond->query_condition_));
579+
query->query_->set_condition(*cond->query_condition_);
583580

584581
return TILEDB_OK;
585582
}
@@ -594,7 +591,7 @@ int32_t tiledb_query_finalize(tiledb_ctx_t* ctx, tiledb_query_t* query) {
594591
return TILEDB_ERR;
595592

596593
// Flush query
597-
throw_if_not_ok(query->query_->finalize());
594+
query->query_->finalize();
598595

599596
return TILEDB_OK;
600597
}
@@ -609,7 +606,7 @@ int32_t tiledb_query_submit_and_finalize(
609606
if (sanity_check(ctx, query) == TILEDB_ERR)
610607
return TILEDB_ERR;
611608

612-
throw_if_not_ok(query->query_->submit_and_finalize());
609+
query->query_->submit_and_finalize();
613610

614611
return TILEDB_OK;
615612
}
@@ -627,7 +624,7 @@ int32_t tiledb_query_submit(tiledb_ctx_t* ctx, tiledb_query_t* query) {
627624
if (sanity_check(ctx, query) == TILEDB_ERR)
628625
return TILEDB_ERR;
629626

630-
throw_if_not_ok(query->query_->submit());
627+
query->query_->submit();
631628

632629
return TILEDB_OK;
633630
}
@@ -786,7 +783,7 @@ int32_t tiledb_query_get_fragment_num(
786783
if (sanity_check(ctx, query) == TILEDB_ERR)
787784
return TILEDB_ERR;
788785

789-
throw_if_not_ok(query->query_->get_written_fragment_num(num));
786+
*num = query->query_->get_written_fragment_num();
790787

791788
return TILEDB_OK;
792789
}
@@ -799,7 +796,7 @@ int32_t tiledb_query_get_fragment_uri(
799796
if (sanity_check(ctx, query) == TILEDB_ERR)
800797
return TILEDB_ERR;
801798

802-
throw_if_not_ok(query->query_->get_written_fragment_uri(idx, uri));
799+
*uri = query->query_->get_written_fragment_uri(idx).c_str();
803800

804801
return TILEDB_OK;
805802
}
@@ -813,8 +810,7 @@ int32_t tiledb_query_get_fragment_timestamp_range(
813810
if (sanity_check(ctx, query) == TILEDB_ERR)
814811
return TILEDB_ERR;
815812

816-
throw_if_not_ok(
817-
query->query_->get_written_fragment_timestamp_range(idx, t1, t2));
813+
std::tie(*t1, *t2) = query->query_->get_written_fragment_timestamp_range(idx);
818814

819815
return TILEDB_OK;
820816
}
@@ -855,13 +851,7 @@ int32_t tiledb_query_add_update_value(
855851
return TILEDB_ERR;
856852
}
857853

858-
// Add update value.
859-
if (SAVE_ERROR_CATCH(
860-
ctx,
861-
query->query_->add_update_value(
862-
field_name, update_value, update_value_size))) {
863-
return TILEDB_ERR;
864-
}
854+
query->query_->add_update_value(field_name, update_value, update_value_size);
865855

866856
// Success
867857
return TILEDB_OK;

tiledb/sm/c_api/tiledb_filestore.cc

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ int32_t tiledb_filestore_uri_import(
263263
context.cancellation_source(),
264264
context.storage_manager(),
265265
array);
266-
throw_if_not_ok(query.set_layout(tiledb::sm::Layout::GLOBAL_ORDER));
266+
query.set_layout(tiledb::sm::Layout::GLOBAL_ORDER);
267267
std::vector<std::byte> buffer(buffer_size);
268268

269269
tiledb::sm::Subarray subarray(
@@ -289,7 +289,7 @@ int32_t tiledb_filestore_uri_import(
289289
context.cancellation_source(),
290290
context.storage_manager(),
291291
array);
292-
throw_if_not_ok(query.set_layout(tiledb::sm::Layout::ROW_MAJOR));
292+
query.set_layout(tiledb::sm::Layout::ROW_MAJOR);
293293
tiledb::sm::Subarray subarray_cloud_fix(
294294
array.get(), nullptr, context.resources().logger(), true);
295295

@@ -299,11 +299,11 @@ int32_t tiledb_filestore_uri_import(
299299
subarray_cloud_fix.add_range(0, std::move(subarray_range_cloud_fix));
300300
query.set_subarray(subarray_cloud_fix);
301301
uint64_t data_buff_len = end - start + 1;
302-
throw_if_not_ok(query.set_data_buffer(
302+
query.set_data_buffer(
303303
tiledb::sm::constants::filestore_attribute_name,
304304
buffer.data(),
305-
&data_buff_len));
306-
throw_if_not_ok(query.submit());
305+
&data_buff_len);
306+
query.submit();
307307
};
308308

309309
auto read_wrapper =
@@ -336,11 +336,11 @@ int32_t tiledb_filestore_uri_import(
336336
if (is_tiledb_uri) {
337337
tiledb_cloud_fix(start_range, end_cloud_fix);
338338
} else {
339-
throw_if_not_ok(query.set_data_buffer(
339+
query.set_data_buffer(
340340
tiledb::sm::constants::filestore_attribute_name,
341341
buffer.data(),
342-
&query_buffer_len));
343-
throw_if_not_ok(query.submit());
342+
&query_buffer_len);
343+
query.submit();
344344
}
345345

346346
start_range += readlen;
@@ -355,7 +355,7 @@ int32_t tiledb_filestore_uri_import(
355355

356356
if (!is_tiledb_uri) {
357357
// Dump the fragment on disk
358-
throw_if_not_ok(query.finalize());
358+
query.finalize();
359359
}
360360
throw_if_not_ok(vfs.close_file(tiledb::sm::URI(file_uri)));
361361

@@ -422,7 +422,7 @@ int32_t tiledb_filestore_uri_export(
422422
context.cancellation_source(),
423423
context.storage_manager(),
424424
array);
425-
throw_if_not_ok(query.set_layout(tiledb::sm::Layout::ROW_MAJOR));
425+
query.set_layout(tiledb::sm::Layout::ROW_MAJOR);
426426
query.set_subarray(subarray);
427427

428428
// Cloud compatibility hack. Currently stored tiledb file arrays have a
@@ -435,17 +435,17 @@ int32_t tiledb_filestore_uri_export(
435435
->attribute(tiledb::sm::constants::filestore_attribute_name)
436436
->type();
437437
if (attr_type == tiledb::sm::Datatype::UINT8) {
438-
throw_if_not_ok(query.set_data_buffer(
438+
query.set_data_buffer(
439439
tiledb::sm::constants::filestore_attribute_name,
440440
reinterpret_cast<uint8_t*>(data.data()),
441-
&write_size));
441+
&write_size);
442442
} else {
443-
throw_if_not_ok(query.set_data_buffer(
443+
query.set_data_buffer(
444444
tiledb::sm::constants::filestore_attribute_name,
445445
data.data(),
446-
&write_size));
446+
&write_size);
447447
}
448-
throw_if_not_ok(query.submit());
448+
query.submit();
449449

450450
vfs.write(
451451
tiledb::sm::URI(file_uri),
@@ -528,7 +528,7 @@ int32_t tiledb_filestore_buffer_import(
528528
context.cancellation_source(),
529529
context.storage_manager(),
530530
array);
531-
throw_if_not_ok(query.set_layout(tiledb::sm::Layout::ROW_MAJOR));
531+
query.set_layout(tiledb::sm::Layout::ROW_MAJOR);
532532

533533
tiledb::sm::Subarray subarray(
534534
array.get(), nullptr, context.resources().logger(), true);
@@ -540,9 +540,9 @@ int32_t tiledb_filestore_buffer_import(
540540

541541
query.set_subarray(subarray);
542542
uint64_t size_tmp = size;
543-
throw_if_not_ok(query.set_data_buffer(
544-
tiledb::sm::constants::filestore_attribute_name, buf, &size_tmp));
545-
throw_if_not_ok(query.submit());
543+
query.set_data_buffer(
544+
tiledb::sm::constants::filestore_attribute_name, buf, &size_tmp);
545+
query.submit();
546546

547547
throw_if_not_ok(array->close());
548548

@@ -601,12 +601,12 @@ int32_t tiledb_filestore_buffer_export(
601601
context.cancellation_source(),
602602
context.storage_manager(),
603603
array);
604-
throw_if_not_ok(query.set_layout(tiledb::sm::Layout::ROW_MAJOR));
604+
query.set_layout(tiledb::sm::Layout::ROW_MAJOR);
605605
query.set_subarray(subarray);
606606
uint64_t size_tmp = size;
607-
throw_if_not_ok(query.set_data_buffer(
608-
tiledb::sm::constants::filestore_attribute_name, buf, &size_tmp));
609-
throw_if_not_ok(query.submit());
607+
query.set_data_buffer(
608+
tiledb::sm::constants::filestore_attribute_name, buf, &size_tmp);
609+
query.submit();
610610

611611
throw_if_not_ok(array->close());
612612

0 commit comments

Comments
 (0)