pub struct VariableOrder {
pub leader_idx: u8,
pub lookup_perms: Vec<LookupPerm>,
pub kernel_output_cols: Vec<ProjectExpr>,
pub kclique: Option<KCliqueVariableOrder>,
}Expand description
Variable-ordering decision attached to a MultiWayJoin.
None on the parent variant preserves legacy triangle, 4-cycle, and
recursive dispatch behavior bit-identically (default leader, no col-swap,
no kernel projection — output_columns carries the binary-fallback
projection as before).
When Some, the dispatcher consumes leader_idx to rotate the
kernel inputs, applies any lookup_perms col-swaps, and
post-projects the kernel-direct output buffer through
kernel_output_cols. MultiWayJoin::output_columns stays untouched
so binary-fallback consumers continue reading it directly.
Fields§
§leader_idx: u8Selected leader’s index in the canonical promoter input order
(e.g., for triangle: 0=e_xy, 1=e_yz, 2=e_xz). 0 reproduces
the default leader.
lookup_perms: Vec<LookupPerm>One entry per non-leader lookup input, in dispatcher slot order.
kernel_output_cols: Vec<ProjectExpr>Permutation applied to the kernel-direct output buffer to
produce head-ordered columns. For default leader this would be
identity but the field is omitted (var_order = None) — the legacy
triangle/4-cycle path keeps using MultiWayJoin::output_columns
directly.
kclique: Option<KCliqueVariableOrder>Full K-clique variable-order plan for K=5..K=8. None
preserves the legacy triangle/4-cycle leader-permutation path.
Implementations§
Source§impl VariableOrder
impl VariableOrder
Sourcepub fn legacy(
leader_idx: u8,
lookup_perms: Vec<LookupPerm>,
kernel_output_cols: Vec<ProjectExpr>,
) -> Self
pub fn legacy( leader_idx: u8, lookup_perms: Vec<LookupPerm>, kernel_output_cols: Vec<ProjectExpr>, ) -> Self
Creates the legacy triangle/4-cycle leader-permutation form.
Sourcepub fn kclique(kclique: KCliqueVariableOrder) -> Self
pub fn kclique(kclique: KCliqueVariableOrder) -> Self
Creates the full K-clique variable-order form.
Trait Implementations§
Source§impl Clone for VariableOrder
impl Clone for VariableOrder
Source§fn clone(&self) -> VariableOrder
fn clone(&self) -> VariableOrder
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more