Bedrock.Internal.TransactionBuilder.RangeReads (bedrock v0.5.2)
View SourceRange read operations for the Transaction Builder.
This module handles all range-related fetching operations, including version management, storage coordination, and result processing for both regular key ranges and key selector ranges.
Summary
Functions
Execute a range batch query against storage servers.
Fetch a KeySelector range within the transaction context.
Types
@type range_fn() :: ([Bedrock.key_value()] -> Bedrock.key_range())
@type storage_get_range_fn() :: (pid(), binary(), binary(), Bedrock.version(), keyword() -> {:ok, {[Bedrock.key_value()], more :: boolean()}} | {:error, atom()})
@type storage_get_range_selector_fn() :: (pid(), Bedrock.KeySelector.t(), Bedrock.KeySelector.t(), Bedrock.version(), keyword() -> {:ok, {[Bedrock.key_value()], more :: boolean()}} | {:error, atom()})
Functions
@spec get_range( Bedrock.Internal.TransactionBuilder.State.t(), Bedrock.key_range(), batch_size :: pos_integer(), opts :: [storage_get_range_fn: storage_get_range_fn(), snapshot: boolean()] ) :: {Bedrock.Internal.TransactionBuilder.State.t(), {:ok, {[{binary(), Bedrock.value()}], more :: boolean()}} | {:error, :timeout | :unavailable | :version_too_new} | {:failure, %{ required( :timeout | :unavailable | :version_too_old | :no_servers_to_race | :layout_lookup_failed ) => [pid()] }}}
Execute a range batch query against storage servers.
This function handles version initialization, storage team coordination, and result processing for range queries with regular keys.
@spec get_range_selectors( Bedrock.Internal.TransactionBuilder.State.t(), Bedrock.KeySelector.t(), Bedrock.KeySelector.t(), batch_size :: pos_integer(), opts :: [ storage_get_range_fn: storage_get_range_selector_fn(), snapshot: boolean() ] ) :: {Bedrock.Internal.TransactionBuilder.State.t(), {:ok, {[Bedrock.key_value()], more :: boolean()}} | {:error, :timeout | :unavailable | :version_too_new} | {:failure, %{ required( :timeout | :unavailable | :version_too_old | :no_servers_to_race | :layout_lookup_failed ) => [pid()] }}}
Fetch a KeySelector range within the transaction context.
This handles the transaction state management in addition to KeySelector range resolution.