You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
PhysicalASAPDAG::validate does not check per-operator timing #656
PhysicalASAPDAG::validate (and with_execution_phases) checks edge roles and the query-time → ingestion-time edge rule, but not the timing each operator kind requires. For example, it accepts:
Scan → SummaryAgg → Finalize with every node at ingestion time, which the timing pass rejects as MaintenanceRowsAtRoot;
a SummaryAgg whose output_state.primitive is Raw.
It doesn't check:
that SummaryEstimate / EvaluatePopulation run at query time and MaintainPopulation at ingestion time;
the ingestion-time BinaryOp rules;
that primitive equals what data_state derives.
Today only the compiler produces these DAGs, from plans the timing pass has already checked, so nothing invalid reaches the runtime. It matters once a DAG is deserialized or re-phased, as in the backend stack. The runtime branches on output_state.timing: an ingestion-time BinaryOp compiles to aligned_binary, which ignores vector_match.
Possible fix
In validate, check each node's timing and primitive against its operator kind, reusing the rules in ir/timing.rs and data_state rather than copying them.
Activity