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

Method read_array_1d

test/src/unit-capi-string_dims.cc:659–753  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

657}
658
659void 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(

Callers

nothing calls this directly

Tested by

no test coverage detected