pub struct SemiJoinInfo {
pub outer_column: String,
pub outer_table: Option<String>,
pub inner_column: String,
pub inner_table: String,
pub inner_alias: Option<String>,
pub non_correlated_where: Option<Arc<Expression>>,
pub is_negated: bool,
}Expand description
Information extracted from an EXISTS subquery for semi-join optimization. Example: EXISTS (SELECT 1 FROM orders o WHERE o.user_id = u.id AND o.amount > 500)
- outer_column: “u.id” (or “id” with outer table “u”)
- inner_column: “o.user_id” (or “user_id”)
- inner_table: “orders”
- inner_alias: Some(“o”)
- non_correlated_where: Some(“o.amount > 500”)
Fields§
§outer_column: StringThe outer column referenced in the correlation (e.g., “id” from “u.id”)
outer_table: Option<String>The outer table alias if qualified (e.g., “u” from “u.id”)
inner_column: StringThe inner column used in the correlation (e.g., “user_id” from “o.user_id”)
inner_table: StringThe inner table name
inner_alias: Option<String>The inner table alias if present
Non-correlated part of the WHERE clause (filters only on inner table) Uses Arc to avoid cloning expression trees during semi-join optimization
is_negated: boolWhether this is NOT EXISTS
Trait Implementations§
Auto Trait Implementations§
impl Freeze for SemiJoinInfo
impl RefUnwindSafe for SemiJoinInfo
impl Send for SemiJoinInfo
impl Sync for SemiJoinInfo
impl Unpin for SemiJoinInfo
impl UnsafeUnpin for SemiJoinInfo
impl UnwindSafe for SemiJoinInfo
Blanket Implementations§
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
Mutably borrows from an owned value. Read more