@@ -491,11 +491,11 @@ DescriptorItem LocalVersionedEngine::read_descriptor_internal(
491491
492492std::vector<std::variant<DescriptorItem, DataError>> LocalVersionedEngine::batch_read_descriptor_internal (
493493 const std::vector<StreamId>& stream_ids, const std::vector<VersionQuery>& version_queries,
494- const ReadOptions& read_options
494+ const BatchReadOptions& batch_read_options
495495) {
496496
497497 internal::check<ErrorCode::E_ASSERTION_FAILURE>(
498- read_options .batch_throw_on_error ().has_value (),
498+ batch_read_options .batch_throw_on_error ().has_value (),
499499 " ReadOptions::batch_throw_on_error_ should always be set here"
500500 );
501501
@@ -508,7 +508,7 @@ std::vector<std::variant<DescriptorItem, DataError>> LocalVersionedEngine::batch
508508 }
509509 auto descriptors = folly::collectAll (descriptor_futures).get ();
510510 TransformBatchResultsFlags flags;
511- flags.throw_on_error_ = *read_options .batch_throw_on_error ();
511+ flags.throw_on_error_ = *batch_read_options .batch_throw_on_error ();
512512 return transform_batch_items_or_throw (std::move (descriptors), stream_ids, flags, version_queries);
513513}
514514
@@ -1242,12 +1242,16 @@ std::vector<ReadVersionOutput> LocalVersionedEngine::batch_read_keys(
12421242
12431243std::vector<std::variant<ReadVersionOutput, DataError>> LocalVersionedEngine::batch_read_internal (
12441244 const std::vector<StreamId>& stream_ids, const std::vector<VersionQuery>& version_queries,
1245- std::vector<std::shared_ptr<ReadQuery>>& read_queries, const ReadOptions& read_options, std::any& handler_data
1245+ std::vector<std::shared_ptr<ReadQuery>>& read_queries, const BatchReadOptions& batch_read_options,
1246+ std::any& handler_data
12461247) {
12471248 py::gil_scoped_release release_gil;
1249+ if (stream_ids.empty ()) {
1250+ return {};
1251+ }
12481252 // This read option should always be set when calling batch_read
12491253 internal::check<ErrorCode::E_ASSERTION_FAILURE>(
1250- read_options .batch_throw_on_error ().has_value (),
1254+ batch_read_options .batch_throw_on_error ().has_value (),
12511255 " ReadOptions::batch_throw_on_error_ should always be set here"
12521256 );
12531257 auto opt_index_key_futs = batch_get_versions_async (store (), version_map (), stream_ids, version_queries);
@@ -1267,7 +1271,7 @@ std::vector<std::variant<ReadVersionOutput, DataError>> LocalVersionedEngine::ba
12671271 &version_queries,
12681272 read_query =
12691273 read_queries.empty () ? std::make_shared<ReadQuery>() : read_queries[idx],
1270- & read_options,
1274+ read_options = batch_read_options. at (idx) ,
12711275 &handler_data](auto && opt_index_key) {
12721276 auto version_info = get_version_identifier (
12731277 stream_ids[idx],
@@ -1303,7 +1307,7 @@ std::vector<std::variant<ReadVersionOutput, DataError>> LocalVersionedEngine::ba
13031307
13041308 TransformBatchResultsFlags flags;
13051309 flags.convert_no_data_found_to_key_not_found_ = true ;
1306- flags.throw_on_error_ = *read_options .batch_throw_on_error ();
1310+ flags.throw_on_error_ = *batch_read_options .batch_throw_on_error ();
13071311 return transform_batch_items_or_throw (std::move (all_results), stream_ids, flags, version_queries);
13081312}
13091313
@@ -2033,11 +2037,11 @@ folly::Future<std::pair<VariantKey, std::optional<google::protobuf::Any>>> Local
20332037std::vector<std::variant<std::pair<VariantKey, std::optional<google::protobuf::Any>>, DataError>> LocalVersionedEngine::
20342038 batch_read_metadata_internal (
20352039 const std::vector<StreamId>& stream_ids, const std::vector<VersionQuery>& version_queries,
2036- const ReadOptions& read_options
2040+ const BatchReadOptions& batch_read_options
20372041 ) {
20382042 // This read option should always be set when calling batch_read_metadata
20392043 internal::check<ErrorCode::E_ASSERTION_FAILURE>(
2040- read_options .batch_throw_on_error ().has_value (),
2044+ batch_read_options .batch_throw_on_error ().has_value (),
20412045 " ReadOptions::batch_throw_on_error_ should always be set here"
20422046 );
20432047 auto opt_index_key_futs = batch_get_versions_async (store (), version_map (), stream_ids, version_queries);
@@ -2052,7 +2056,7 @@ std::vector<std::variant<std::pair<VariantKey, std::optional<google::protobuf::A
20522056 // For legacy reason read_metadata_batch is not throwing if the symbol is missing
20532057 TransformBatchResultsFlags flags;
20542058 flags.throw_on_missing_symbol_ = false ;
2055- flags.throw_on_error_ = *read_options .batch_throw_on_error ();
2059+ flags.throw_on_error_ = *batch_read_options .batch_throw_on_error ();
20562060 return transform_batch_items_or_throw (std::move (metadatas), stream_ids, flags, version_queries);
20572061}
20582062
0 commit comments