@@ -1791,10 +1791,12 @@ class MultiScanArgs {
17911791 original_ranges_ = other.original_ranges_ ;
17921792 io_coalesce_threshold = other.io_coalesce_threshold ;
17931793 max_prefetch_size = other.max_prefetch_size ;
1794+ use_async_io = other.use_async_io ;
17941795 }
17951796 MultiScanArgs (MultiScanArgs&& other) noexcept
17961797 : io_coalesce_threshold(other.io_coalesce_threshold),
17971798 max_prefetch_size (other.max_prefetch_size),
1799+ use_async_io(other.use_async_io),
17981800 comp_(other.comp_),
17991801 original_ranges_(std::move(other.original_ranges_)) {}
18001802
@@ -1803,6 +1805,7 @@ class MultiScanArgs {
18031805 original_ranges_ = other.original_ranges_ ;
18041806 io_coalesce_threshold = other.io_coalesce_threshold ;
18051807 max_prefetch_size = other.max_prefetch_size ;
1808+ use_async_io = other.use_async_io ;
18061809 return *this ;
18071810 }
18081811
@@ -1812,6 +1815,7 @@ class MultiScanArgs {
18121815 original_ranges_ = std::move (other.original_ranges_ );
18131816 io_coalesce_threshold = other.io_coalesce_threshold ;
18141817 max_prefetch_size = other.max_prefetch_size ;
1818+ use_async_io = other.use_async_io ;
18151819 }
18161820 return *this ;
18171821 }
@@ -1865,6 +1869,11 @@ class MultiScanArgs {
18651869 // Note that this limit is per file and applies to compressed block size.
18661870 uint64_t max_prefetch_size = 0 ;
18671871
1872+ // Enable async I/O for multi-scan operations
1873+ // When true, BlockBasedTableIterator will use ReadAsync() for reading blocks
1874+ // When false, it will use synchronous MultiRead().
1875+ bool use_async_io = false ;
1876+
18681877 private:
18691878 // The comparator used for ordering ranges
18701879 const Comparator* comp_;
0 commit comments