Repository navigation
Conversation
This was referenced Oct 2, 2026
zzylol
force-pushed
the
stack/528-06-native
branch
from
October 2, 2026 18:32
75903b5 to
b22fa53
Compare
zzylol
force-pushed
the
stack/528-07-planner
branch
2 times, most recently
from
October 2, 2026 19:40
2a3bcd0 to
a03efc2
Compare
zzylol
force-pushed
the
stack/528-06-native
branch
from
October 2, 2026 19:40
b22fa53 to
d82bcde
Compare
zzylol
force-pushed
the
stack/528-07-planner
branch
from
October 2, 2026 21:14
a03efc2 to
2c708f3
Compare
zzylol
force-pushed
the
stack/528-06-native
branch
2 times, most recently
from
October 2, 2026 21:22
337a0ff to
a94bd59
Compare
zzylol
force-pushed
the
stack/528-07-planner
branch
from
October 2, 2026 21:22
2c708f3 to
03166e7
Compare
zzylol
force-pushed
the
stack/528-06-native
branch
from
October 2, 2026 21:25
a94bd59 to
d84830e
Compare
zzylol
force-pushed
the
stack/528-07-planner
branch
2 times, most recently
from
October 2, 2026 21:56
4b84314 to
d9da0f9
Compare
zzylol
force-pushed
the
stack/528-06-native
branch
from
October 2, 2026 21:56
d84830e to
b631137
Compare
zzylol
force-pushed
the
stack/528-07-planner
branch
from
October 3, 2026 02:31
d9da0f9 to
ec9f8cb
Compare
zzylol
force-pushed
the
stack/528-06-native
branch
2 times, most recently
from
October 3, 2026 02:39
075d8e2 to
d9dc49c
Compare
zzylol
force-pushed
the
stack/528-07-planner
branch
from
October 3, 2026 02:39
ec9f8cb to
95eef55
Compare
zzylol
force-pushed
the
stack/528-06-native
branch
from
October 3, 2026 19:55
d9dc49c to
04f9db2
Compare
zzylol
marked this pull request as draft
October 3, 2026 20:02
zzylol
force-pushed
the
stack/528-06-native
branch
from
October 3, 2026 20:17
04f9db2 to
0ebce24
Compare
zzylol
added a commit
that referenced
this pull request
Oct 3, 2026
Cut today's planner over to the unified OperatorNode IR. Frontends return OperatorNode / QueryRoot, ParsedWorkload keeps scalar roots, Pass 1 (ASAPStrategies), the existing identical-sub-DAG sharing, selection, DAG assembly and lifecycle costing all run on OperatorNode, and PlanOutput exposes the whole workload DAG. The native compiler from #541 becomes the canonical physical_planner and consumes the PhysicalASAPDAG export. Ported from the earlier #542 (95eef55) without new #509 stage logic. Legacy QueryExpr/SummaryNode modules stay compiled for their own tests but are no longer re-exported from post_asap; the cleanup PR removes them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
zzylol
force-pushed
the
stack/528-07-planner
branch
from
October 3, 2026 20:31
95eef55 to
74b4884
Compare
zzylol
added a commit
that referenced
this pull request
Oct 3, 2026
Cut today's planner over to the unified OperatorNode IR. Frontends return OperatorNode / QueryRoot, ParsedWorkload keeps scalar roots, Pass 1 (ASAPStrategies), the existing identical-sub-DAG sharing, selection, DAG assembly and lifecycle costing all run on OperatorNode, and PlanOutput exposes the whole workload DAG. The native compiler from #541 becomes the canonical physical_planner and consumes the PhysicalASAPDAG export. Ported from the earlier #542 (95eef55) without new #509 stage logic. Legacy QueryExpr/SummaryNode modules stay compiled for their own tests but are no longer re-exported from post_asap; the cleanup PR removes them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
zzylol
force-pushed
the
stack/528-07-planner
branch
from
October 3, 2026 20:48
74b4884 to
e629370
Compare
zzylol
force-pushed
the
stack/528-06-native
branch
2 times, most recently
from
October 5, 2026 06:21
aaa8467 to
672a187
Compare
zzylol
force-pushed
the
stack/528-07-planner
branch
from
October 5, 2026 06:21
e629370 to
0c62c4a
Compare
zzylol
force-pushed
the
stack/528-07-planner
branch
from
October 6, 2026 17:47
0c62c4a to
e153234
Compare
zzylol
force-pushed
the
stack/528-06-native
branch
from
October 6, 2026 17:47
672a187 to
9cff08d
Compare
zzylol
added a commit
that referenced
this pull request
Oct 6, 2026
Cut today's planner over to the unified OperatorNode IR. Frontends return OperatorNode / QueryRoot, ParsedWorkload keeps scalar roots, Pass 1 (ASAPStrategies), the existing identical-sub-DAG sharing, selection, DAG assembly and lifecycle costing all run on OperatorNode, and PlanOutput exposes the whole workload DAG. The native compiler from #541 becomes the canonical physical_planner and consumes the PhysicalASAPDAG export. Ported from the earlier #542 (95eef55) without new #509 stage logic. Legacy QueryExpr/SummaryNode modules stay compiled for their own tests but are no longer re-exported from post_asap; the cleanup PR removes them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
zzylol
force-pushed
the
stack/528-06-native
branch
from
October 6, 2026 20:02
9cff08d to
adb9c9e
Compare
zzylol
force-pushed
the
stack/528-07-planner
branch
2 times, most recently
from
October 6, 2026 20:17
9d9bff2 to
dbbf4c7
Compare
zzylol
force-pushed
the
stack/528-06-native
branch
from
October 6, 2026 20:17
adb9c9e to
24b9baf
Compare
zzylol
force-pushed
the
stack/528-06-native
branch
from
October 6, 2026 20:48
24b9baf to
cb1022e
Compare
zzylol
force-pushed
the
stack/528-07-planner
branch
from
October 6, 2026 20:48
dbbf4c7 to
fa46076
Compare
Cut today's planner over to the unified OperatorNode IR. Frontends return OperatorNode / QueryRoot, ParsedWorkload keeps scalar roots, Pass 1 (ASAPStrategies), the existing identical-sub-DAG sharing, selection, DAG assembly and lifecycle costing all run on OperatorNode, and PlanOutput exposes the whole workload DAG. The native compiler from #541 becomes the canonical physical_planner and consumes the PhysicalASAPDAG export. Ported from the earlier #542 (95eef55) without new #509 stage logic. Legacy QueryExpr/SummaryNode modules stay compiled for their own tests but are no longer re-exported from post_asap; the cleanup PR removes them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SummaryAgg nodes require SummaryCoverage. Today's planner has no time or population evidence, so a SummaryAgg it builds declares the whole of the one source scanned beneath it (no time bound, empty population). The declaration is trusted, not derived from the scan (#570). Rebuilding the same state over a re-placed input or with a different grouping strategy keeps its coverage. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PlanOutput::execution_timed_dag times every plan root with one shared TimingMemo and compiles them with compile_physical_asap_workload, so a batch is one DAG with a root per operator query and shared sub-DAGs exported once. Lifecycle phases come from the deployments of every plan. The per-plan SummaryMaintenanceLifecyclePlan::execution_timed_dag is the batch of one. Standalone scalar roots have no physical form yet and are left out. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Follow #537 and #541: the physical DAG carries Operator<NodeId> instead of the removed wire mirror types. Port the moved physical_planner, the planner's lifecycle export and the tests that read or hand-build physical DAGs; hand-built nodes now name their children by id, matching their edges. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Coverage is now checked against the SummaryAgg's subtree, so the planner
can no longer declare an unrestricted population over a filtered scan (for
example a PromQL `{job="worker"}` selector). Build it with
SummaryCoverage::for_summary instead of the removed whole_source_coverage;
time bounds stay unset.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
zzylol
force-pushed
the
stack/528-06-native
branch
from
October 6, 2026 22:16
cb1022e to
24d2158
Compare
zzylol
force-pushed
the
stack/528-07-planner
branch
from
October 6, 2026 22:16
fa46076 to
67800ba
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rebased on main d4869a7 (DF 54). The conflict resolution carries DF 54 into the moved SQL lowering:
TypeCoercionruns after the temporal-subtraction check (DF 54's coercion otherwise rejectsCASE ... ELSE d - dwith a different error first); a cast toDecimal128(_, 0)(DF 54's coercion of a UInt64-vs-Int64 comparison such asapprox_distinct(x) >= 1000) lowers to its input; main's identity-projection skip for SQL top-k populations is ported to the unified IR; the bgp_jan2024 tally is now Lowered 106, InvalidRepresentation 54, Plan 40, UnsupportedFeature 0.Rebuilt on the revised stack (2026-10-03): cutover only
This PR was based on the old
stack/528-legacy-physical-basechain. It is now rebuilt on #541' (Phase A in #528) as three commits. Its scope is cutover only: today's planner (MajorPassand the existing Pass 1 strategies) emits the unifiedOperatorNodeDAG. It adds no new #509 stage logic.physical_planner, and readout becomes evaluation.SummaryAggdeclaresCoverageRegion { time_ms: None, population: {} }over theSourceof its single scan. The declaration is trusted (Check declared summary coverage population against subtree filters #570). Rebuilding a state over a re-placed input, or changing its Hydra grouping, keeps its coverage.PlanOutput::execution_timed_dag()times every query root with one sharedTimingMemoand exports a singlePhysicalASAPDAGwith one root per query. Shared states appear once.Left out of the old version:
asap-types(QueryExpr, resolve, canonicalize, cse, schema_resolver, theoperator_propertiesdefinitions) moves to the legacy-cleanup PR, refactor(ir): remove legacy scaffolding and finish tooling migration #543.Cargo.tomlreordering was not kept.Tests: the old PR deleted the
unified_*duplicate tests and some legacy tests. Each removed test was checked by name against the base: all but two are replaced by equivalent #539/#540 tests.subquery_time_shift_is_retainedwas ported to the unified IR, andplanning_subquery_bridge_reuses_canonical_promql_subqueryis covered by...rejects_a_relation_without_vector_conversion.Validation, independently re-run: clippy with
-D warningsis clean, andcargo test --workspacegives 1,717 passed, 0 failed, 2 ignored. The two ignored tests have stated reasons: splitting a multi-measure aggregate, and Avg having no summary realization.Revised Phase A stack (see #528): #567 → #560 → #537 → #539 → #540 → #541 → #542 → #543. The pre-rebuild description is in the PR history.
🤖 Generated with Claude Code