pub struct JoinAnalysis {Show 17 fields
pub join_type: JoinType,
pub left_table: String,
pub right_table: String,
pub left_key_column: String,
pub right_key_column: String,
pub time_bound: Option<Duration>,
pub is_lookup_join: bool,
pub left_alias: Option<String>,
pub right_alias: Option<String>,
pub is_asof_join: bool,
pub asof_direction: Option<AsofSqlDirection>,
pub left_time_column: Option<String>,
pub right_time_column: Option<String>,
pub asof_tolerance: Option<Duration>,
pub is_temporal_join: bool,
pub temporal_version_column: Option<String>,
pub additional_key_columns: Vec<(String, String)>,
}Expand description
Analysis result for a JOIN clause
Fields§
§join_type: JoinTypeType of join (inner, left, right, full)
left_table: StringLeft side table name
right_table: StringRight side table name
left_key_column: StringLeft side key column
right_key_column: StringRight side key column
time_bound: Option<Duration>Time bound for stream-stream joins (None for lookup joins)
is_lookup_join: boolWhether this is a lookup join (no time bound)
left_alias: Option<String>Left side alias (if any)
right_alias: Option<String>Right side alias (if any)
is_asof_join: boolWhether this is an ASOF join
asof_direction: Option<AsofSqlDirection>ASOF join direction (Backward or Forward)
left_time_column: Option<String>Left side time column for ASOF join
right_time_column: Option<String>Right side time column for ASOF join
asof_tolerance: Option<Duration>ASOF join tolerance (max time difference)
is_temporal_join: boolWhether this is a temporal join (FOR SYSTEM_TIME AS OF)
temporal_version_column: Option<String>The version column from FOR SYSTEM_TIME AS OF (e.g., order_time)
additional_key_columns: Vec<(String, String)>Additional key columns for composite join keys (beyond the primary key pair)
Implementations§
Source§impl JoinAnalysis
impl JoinAnalysis
Sourcepub fn stream_stream(
left_table: String,
right_table: String,
left_key: String,
right_key: String,
time_bound: Duration,
join_type: JoinType,
) -> Self
pub fn stream_stream( left_table: String, right_table: String, left_key: String, right_key: String, time_bound: Duration, join_type: JoinType, ) -> Self
Create a stream-stream join analysis
Sourcepub fn lookup(
left_table: String,
right_table: String,
left_key: String,
right_key: String,
join_type: JoinType,
) -> Self
pub fn lookup( left_table: String, right_table: String, left_key: String, right_key: String, join_type: JoinType, ) -> Self
Create a lookup join analysis
Sourcepub fn asof(
left_table: String,
right_table: String,
left_key: String,
right_key: String,
direction: AsofSqlDirection,
left_time_col: String,
right_time_col: String,
tolerance: Option<Duration>,
) -> Self
pub fn asof( left_table: String, right_table: String, left_key: String, right_key: String, direction: AsofSqlDirection, left_time_col: String, right_time_col: String, tolerance: Option<Duration>, ) -> Self
Create an ASOF join analysis
Sourcepub fn temporal(
left_table: String,
right_table: String,
left_key: String,
right_key: String,
version_column: String,
join_type: JoinType,
) -> Self
pub fn temporal( left_table: String, right_table: String, left_key: String, right_key: String, version_column: String, join_type: JoinType, ) -> Self
Create a temporal join analysis (FOR SYSTEM_TIME AS OF).
Sourcepub fn is_bounded(&self) -> bool
pub fn is_bounded(&self) -> bool
True if this step has any kind of temporal bound — a BETWEEN-derived
time bound, ASOF match condition, or FOR SYSTEM_TIME AS OF.
Trait Implementations§
Source§impl Clone for JoinAnalysis
impl Clone for JoinAnalysis
Source§fn clone(&self) -> JoinAnalysis
fn clone(&self) -> JoinAnalysis
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for JoinAnalysis
impl RefUnwindSafe for JoinAnalysis
impl Send for JoinAnalysis
impl Sync for JoinAnalysis
impl Unpin for JoinAnalysis
impl UnsafeUnpin for JoinAnalysis
impl UnwindSafe for JoinAnalysis
Blanket Implementations§
impl<T> Allocation for T
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].