@@ -86,13 +86,20 @@ class FeatureVector {
8686 * @param ctx
8787 * @param uri
8888 */
89- FeatureVector (const tiledb::Context& ctx, const std::string& uri) {
90- auto array = tiledb_helpers::open_array (tdb_func__, ctx, uri, TILEDB_READ );
89+ FeatureVector (
90+ const tiledb::Context& ctx,
91+ const std::string& uri,
92+ size_t start = 0 ,
93+ size_t end = 0 ,
94+ std::optional<TemporalPolicy> temporal_policy_input = std::nullopt ) {
95+ auto temporal_policy = temporal_policy_input.value_or (TemporalPolicy{});
96+ auto array = tiledb_helpers::open_array (
97+ tdb_func__, ctx, uri, TILEDB_READ , temporal_policy);
9198
9299 feature_type_ = get_array_datatype (*array);
93100 array->close ();
94101
95- tdb_vector_from_datatype (ctx, uri);
102+ tdb_vector_from_datatype (ctx, uri, start, end, temporal_policy );
96103 }
97104
98105 /*
@@ -126,25 +133,35 @@ class FeatureVector {
126133 * Dispatch to the appropriate concrete class based on the datatype.
127134 */
128135 void tdb_vector_from_datatype (
129- const tiledb::Context& ctx, const std::string& uri) {
136+ const tiledb::Context& ctx,
137+ const std::string& uri,
138+ size_t start,
139+ size_t end,
140+ TemporalPolicy temporal_policy) {
130141 switch (feature_type_) {
131142 case TILEDB_FLOAT32 :
132- vector_ = std::make_unique<vector_impl<tdbVector<float >>>(ctx, uri);
143+ vector_ = std::make_unique<vector_impl<tdbVector<float >>>(
144+ ctx, uri, start, end, temporal_policy);
133145 break ;
134146 case TILEDB_INT8 :
135- vector_ = std::make_unique<vector_impl<tdbVector<int8_t >>>(ctx, uri);
147+ vector_ = std::make_unique<vector_impl<tdbVector<int8_t >>>(
148+ ctx, uri, start, end, temporal_policy);
136149 break ;
137150 case TILEDB_UINT8 :
138- vector_ = std::make_unique<vector_impl<tdbVector<uint8_t >>>(ctx, uri);
151+ vector_ = std::make_unique<vector_impl<tdbVector<uint8_t >>>(
152+ ctx, uri, start, end, temporal_policy);
139153 break ;
140154 case TILEDB_INT32 :
141- vector_ = std::make_unique<vector_impl<tdbVector<int32_t >>>(ctx, uri);
155+ vector_ = std::make_unique<vector_impl<tdbVector<int32_t >>>(
156+ ctx, uri, start, end, temporal_policy);
142157 break ;
143158 case TILEDB_UINT32 :
144- vector_ = std::make_unique<vector_impl<tdbVector<uint32_t >>>(ctx, uri);
159+ vector_ = std::make_unique<vector_impl<tdbVector<uint32_t >>>(
160+ ctx, uri, start, end, temporal_policy);
145161 break ;
146162 case TILEDB_UINT64 :
147- vector_ = std::make_unique<vector_impl<tdbVector<uint64_t >>>(ctx, uri);
163+ vector_ = std::make_unique<vector_impl<tdbVector<uint64_t >>>(
164+ ctx, uri, start, end, temporal_policy);
148165 break ;
149166 default :
150167 throw std::runtime_error (" Unsupported attribute type" );
@@ -202,8 +219,13 @@ class FeatureVector {
202219 explicit vector_impl (size_t size)
203220 : vector_(size) {
204221 }
205- vector_impl (const tiledb::Context& ctx, const std::string& uri)
206- : vector_(ctx, uri) {
222+ vector_impl (
223+ const tiledb::Context& ctx,
224+ const std::string& uri,
225+ size_t start,
226+ size_t end,
227+ TemporalPolicy temporal_policy)
228+ : vector_(ctx, uri, start, end, temporal_policy) {
207229 }
208230 // [[nodiscard]] void* data() override {
209231 // return _cpo::data(vector_);
0 commit comments