| 657 | } |
| 658 | |
| 659 | void StringDimsFx::read_array_1d( |
| 660 | tiledb_ctx_t* ctx, |
| 661 | tiledb_array_t* array, |
| 662 | tiledb_layout_t layout, |
| 663 | const std::string& start, |
| 664 | const std::string& end, |
| 665 | std::vector<uint64_t>* d_off, |
| 666 | std::string* d_val, |
| 667 | std::vector<int32_t>* a, |
| 668 | tiledb_query_status_t* status, |
| 669 | tiledb_query_status_details_t* details) { |
| 670 | // Create query |
| 671 | tiledb_query_t* query; |
| 672 | int rc = tiledb_query_alloc(ctx, array, TILEDB_READ, &query); |
| 673 | CHECK(rc == TILEDB_OK); |
| 674 | tiledb_subarray_t* subarray = nullptr; |
| 675 | rc = tiledb_subarray_alloc(ctx_, array, &subarray); |
| 676 | CHECK(rc == TILEDB_OK); |
| 677 | rc = tiledb_subarray_add_range_var( |
| 678 | ctx, subarray, 0, start.data(), start.size(), end.data(), end.size()); |
| 679 | CHECK(rc == TILEDB_OK); |
| 680 | rc = tiledb_query_set_subarray_t(ctx_, query, subarray); |
| 681 | CHECK(rc == TILEDB_OK); |
| 682 | |
| 683 | // Check range num |
| 684 | uint64_t range_num; |
| 685 | rc = tiledb_subarray_get_range_num(ctx_, subarray, 0, &range_num); |
| 686 | CHECK(rc == TILEDB_OK); |
| 687 | CHECK(range_num == 1); |
| 688 | |
| 689 | // Check getting range from an invalid range index |
| 690 | uint64_t start_size = 0, end_size = 0; |
| 691 | rc = tiledb_subarray_get_range_var_size( |
| 692 | ctx_, subarray, 0, 2, &start_size, &end_size); |
| 693 | CHECK(rc == TILEDB_ERR); |
| 694 | std::vector<char> start_data(start_size); |
| 695 | std::vector<char> end_data(end_size); |
| 696 | rc = tiledb_subarray_get_range_var( |
| 697 | ctx_, subarray, 0, 2, start_data.data(), end_data.data()); |
| 698 | CHECK(rc == TILEDB_ERR); |
| 699 | |
| 700 | // Check ranges |
| 701 | rc = tiledb_subarray_get_range_var_size( |
| 702 | ctx_, subarray, 0, 0, &start_size, &end_size); |
| 703 | CHECK(rc == TILEDB_OK); |
| 704 | start_data.resize(start_size); |
| 705 | end_data.resize(end_size); |
| 706 | rc = tiledb_subarray_get_range_var( |
| 707 | ctx_, subarray, 0, 0, start_data.data(), end_data.data()); |
| 708 | CHECK(rc == TILEDB_OK); |
| 709 | CHECK(std::string(start_data.data(), start_data.size()) == start); |
| 710 | CHECK(std::string(end_data.data(), end_data.size()) == end); |
| 711 | |
| 712 | // Set query buffers |
| 713 | uint64_t d_off_size = d_off->size() * sizeof(uint64_t); |
| 714 | uint64_t d_val_size = d_val->size(); |
| 715 | uint64_t a_size = a->size() * sizeof(int32_t); |
| 716 | rc = tiledb_query_set_data_buffer( |
nothing calls this directly
no test coverage detected