Expand description
Eligibility analysis: decide whether a HypergraphRule can be
planned as a multiway join, or must fall back to the existing
binary-join lowering.
“Eligible” here means could be planned as multiway — it does NOT mean “must use multiway”. A rule with exactly two positive atoms is eligible because the planner could legally choose either a multiway plan or a binary plan; the choice is the planner’s, not the analyzer’s. The CPU reference evaluator (PR 2) and later GPU kernels (PR 3) consume both shapes.
“Ineligible” means at least one Boundary makes multiway
planning either impossible (negation, aggregation in head) or
unsupported by the executor context under consideration. Each
boundary is reported separately so the explain output and tests
can lock in why a rule fell back.
Enums§
- Boundary
- One reason a rule is ineligible for multiway planning.
- Eligibility
- Verdict for a single rule.
- Executor
Context - Executor capability context for join-key width checks.
Constants§
- BINARY_
FALLBACK_ KEY_ LIMIT - The maximum number of distinct join-key variables supported by
the existing binary-fallback executor. Borrowed verbatim from the
pack_keys_gpu_on_streamconstraint inxlog-cuda/src/provider/relational.rs. - WCOJ_
ELIGIBLE_ KEY_ LIMIT - The widest K-clique shape the WCOJ planner architecture admits at the eligibility layer. K=7 and K=8 are accepted here so the Phase-2 templates can inherit the same planner contract.
- WCOJ_
SUPPORTED_ KEY_ TYPES - Scalar types that the WCOJ reference evaluator supports as
join-key types. Membership is checked by
analyze_typedwhen emittingBoundary::UnsupportedKeyType.
Functions§
- analyze
- Analyze a
HypergraphRuleand return the eligibility verdict. - analyze_
typed - Typed eligibility analysis.
- is_
eligible - Return true when
analyzesays the rule is eligible in the selected executor context.