Skip to content

Commit 486bb31

Browse files
zzylolclaude
andcommitted
refactor: adopt Planner PostAsapDag names
ASAPPlanner #470 renamed ExecutableDag to PostAsapDag, and #462 was rebased onto it. Pin Planner to the rebased #462 head (76fbbf1) and apply the rename, including OwnedPostAsapDag::from_post_asap_dag. No serialized field or tag changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 618f5d1 commit 486bb31

24 files changed

Lines changed: 210 additions & 182 deletions

File tree

‎Cargo.lock‎

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Cargo.toml‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ version = "0.1.0"
1414
[workspace.dependencies]
1515
# Keep Planner frontends, selection, and IR on the same immutable revision.
1616
# Alias upstream asap-types because this workspace also defines asap_types.
17-
planner-types = { package = "asap-types", git = "https://github.com/ProjectASAP/ASAPPlanner", rev = "3bff87fe6ca816627232a66240e778a7016a60a3" }
18-
asap-aware-mapping = { git = "https://github.com/ProjectASAP/ASAPPlanner", rev = "3bff87fe6ca816627232a66240e778a7016a60a3" }
19-
asap-frontend-promql = { git = "https://github.com/ProjectASAP/ASAPPlanner", rev = "3bff87fe6ca816627232a66240e778a7016a60a3" }
20-
asap-frontend-sql = { git = "https://github.com/ProjectASAP/ASAPPlanner", rev = "3bff87fe6ca816627232a66240e778a7016a60a3" }
17+
planner-types = { package = "asap-types", git = "https://github.com/ProjectASAP/ASAPPlanner", rev = "76fbbf16cc44b19f56a780bfdb47a95327e84711" }
18+
asap-aware-mapping = { git = "https://github.com/ProjectASAP/ASAPPlanner", rev = "76fbbf16cc44b19f56a780bfdb47a95327e84711" }
19+
asap-frontend-promql = { git = "https://github.com/ProjectASAP/ASAPPlanner", rev = "76fbbf16cc44b19f56a780bfdb47a95327e84711" }
20+
asap-frontend-sql = { git = "https://github.com/ProjectASAP/ASAPPlanner", rev = "76fbbf16cc44b19f56a780bfdb47a95327e84711" }
2121

2222
# Shared external deps (used by 2+ crates)
2323
serde = { version = "1.0", features = ["derive"] }
@@ -37,8 +37,8 @@ arc-swap = "1.7"
3737
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }
3838

3939
# Internal crates
40-
asap-physical-operators = { git = "https://github.com/ProjectASAP/ASAPPlanner", rev = "3bff87fe6ca816627232a66240e778a7016a60a3" }
41-
asap_sketch_codec = { git = "https://github.com/ProjectASAP/ASAPPlanner", rev = "3bff87fe6ca816627232a66240e778a7016a60a3" }
40+
asap-physical-operators = { git = "https://github.com/ProjectASAP/ASAPPlanner", rev = "76fbbf16cc44b19f56a780bfdb47a95327e84711" }
41+
asap_sketch_codec = { git = "https://github.com/ProjectASAP/ASAPPlanner", rev = "76fbbf16cc44b19f56a780bfdb47a95327e84711" }
4242
asap_types = { path = "crates/asap_types" }
4343
asap_otel_proto = { path = "crates/asap_otel_proto" }
4444
indexmap = { version = "2.0", features = ["serde"] }

‎control_plane/src/clickhouse.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@ where
534534
"SQL did not produce a summary DAG".into(),
535535
));
536536
};
537-
let semantic = planner_types::post_asap::compile_executable_dag_with_node_ids(&root)
537+
let semantic = planner_types::post_asap::compile_post_asap_dag_with_node_ids(&root)
538538
.map_err(|error| ClickHousePlanningError::Lower(error.to_string()))?;
539539
let mut materialization_nodes = std::collections::BTreeMap::new();
540540
let mut query_nodes = std::collections::BTreeMap::new();

‎control_plane/src/physical/compiler.rs‎

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use asap_aware_mapping::{
1616
SummaryMaintenanceLifecycleCostInputs, WorkloadDemand,
1717
};
1818
use planner_types::post_asap::{
19-
CompositionOperator, EvaluationSchedule, ExecutableDagCompilation, OutputRepresentation,
19+
CompositionOperator, EvaluationSchedule, OutputRepresentation, PostAsapDagCompilation,
2020
PostAsapNodeId, SketchAlgorithm, SketchParams, SketchQuery, SummaryExpr, SummaryFamilyType,
2121
SummaryMaintenanceLifecycle, SummaryMaintenanceMode, SummaryNode, SummaryWindowFramework,
2222
};
@@ -1475,7 +1475,7 @@ impl DeploymentPlanCompiler {
14751475
// materializations, then consumed by QueryPlan lowering. The key is
14761476
// the planner DAG node identity across the workload; serving never scans
14771477
// downstream components to rediscover this decision.
1478-
let mut executable_dags = vec![None::<ExecutableDagCompilation>; request.queries.len()];
1478+
let mut executable_dags = vec![None::<PostAsapDagCompilation>; request.queries.len()];
14791479
let mut node_bindings =
14801480
BTreeMap::<(usize, PostAsapNodeId), asap_types::PolicyFingerprint>::new();
14811481
let mut query_node_bindings =
@@ -1575,7 +1575,7 @@ impl DeploymentPlanCompiler {
15751575
if selected.is_empty() && population_operators[query_index].is_none() {
15761576
continue;
15771577
}
1578-
let executable = planner_types::post_asap::compile_executable_dag_with_node_ids(
1578+
let executable = planner_types::post_asap::compile_post_asap_dag_with_node_ids(
15791579
&query.selected_plan_root,
15801580
)
15811581
.map_err(|error| CompileError::Query {
@@ -1894,14 +1894,15 @@ impl DeploymentPlanCompiler {
18941894
.node_ids
18951895
.node_id(child)
18961896
.expect("selected input node");
1897-
let document = asap_types::executable_plan::OwnedPostAsapDag::from_executable(
1898-
query.query_id.clone(),
1899-
&compiled.dag,
1900-
)
1901-
.map_err(|reason| CompileError::Query {
1902-
query_id: query.query_id.clone(),
1903-
reason,
1904-
})?;
1897+
let document =
1898+
asap_types::executable_plan::OwnedPostAsapDag::from_post_asap_dag(
1899+
query.query_id.clone(),
1900+
&compiled.dag,
1901+
)
1902+
.map_err(|reason| CompileError::Query {
1903+
query_id: query.query_id.clone(),
1904+
reason,
1905+
})?;
19051906
runtime_materialization.derived_input = Some(
19061907
asap_types::derived_input::DerivedInputIdentity::from_dag(
19071908
&document, input_node, &frontiers,
@@ -4081,7 +4082,7 @@ struct SelectedMaterialization {
40814082
}
40824083

40834084
fn validate_executable_subdag(node: &Rc<SummaryNode>) -> Result<(), String> {
4084-
let executable = planner_types::post_asap::compile_executable_dag(node)
4085+
let executable = planner_types::post_asap::compile_post_asap_dag(node)
40854086
.map_err(|error| format!("invalid executable subDAG: {error}"))?;
40864087
if let Some(edge) = executable.edges.iter().find(|edge| {
40874088
edge.grouping == planner_types::post_asap::GroupingEdgeCompatibility::Incompatible
@@ -4099,7 +4100,7 @@ fn reject_uncertified_readouts(
40994100
root: &Rc<SummaryNode>,
41004101
accuracy: &AccuracyTarget,
41014102
) -> Result<(), CompileError> {
4102-
let dag = planner_types::post_asap::compile_executable_dag(root).map_err(|error| {
4103+
let dag = planner_types::post_asap::compile_post_asap_dag(root).map_err(|error| {
41034104
CompileError::Query {
41044105
query_id: query_id.into(),
41054106
reason: format!("invalid executable subDAG: {error}"),
@@ -4108,7 +4109,7 @@ fn reject_uncertified_readouts(
41084109
for node in &dag.nodes {
41094110
if matches!(
41104111
node.payload,
4111-
planner_types::post_asap::ExecutableOperatorPayload::SummaryEstimate { .. }
4112+
planner_types::post_asap::PostAsapOperatorPayload::SummaryEstimate { .. }
41124113
) && node
41134114
.guarantee
41144115
.as_ref()
@@ -4125,7 +4126,7 @@ fn reject_uncertified_readouts(
41254126
if dag.nodes.iter().any(|node| {
41264127
matches!(
41274128
node.payload,
4128-
planner_types::post_asap::ExecutableOperatorPayload::SummaryEstimate { .. }
4129+
planner_types::post_asap::PostAsapOperatorPayload::SummaryEstimate { .. }
41294130
)
41304131
}) && root.guarantee.as_ref().is_none_or(|guarantee| {
41314132
!asap_aware_mapping::accuracy::AccuracyModel::satisfies(
@@ -4883,7 +4884,7 @@ pub(crate) mod tests {
48834884
std::slice::from_ref(&root),
48844885
);
48854886
let candidate = rule.candidate(&root).unwrap();
4886-
planner_types::post_asap::compile_executable_dag(&candidate).unwrap();
4887+
planner_types::post_asap::compile_post_asap_dag(&candidate).unwrap();
48874888
assert!(!super::super::maintained_population::supported_node(
48884889
&candidate
48894890
));
@@ -5185,17 +5186,16 @@ pub(crate) mod tests {
51855186
.find(|node| {
51865187
matches!(
51875188
node.payload,
5188-
planner_types::post_asap::ExecutableOperatorPayload::SummaryAgg { .. }
5189+
planner_types::post_asap::PostAsapOperatorPayload::SummaryAgg { .. }
51895190
)
51905191
})
51915192
.unwrap();
5192-
if let planner_types::post_asap::ExecutableOperatorPayload::SummaryAgg {
5193-
reduction, ..
5194-
} = &mut node.payload
5193+
if let planner_types::post_asap::PostAsapOperatorPayload::SummaryAgg { reduction, .. } =
5194+
&mut node.payload
51955195
{
51965196
*reduction = planner_types::pre_asap::Reduction::by(vec![]);
51975197
}
5198-
installed.document = asap_types::executable_plan::OwnedPostAsapDag::from_executable(
5198+
installed.document = asap_types::executable_plan::OwnedPostAsapDag::from_post_asap_dag(
51995199
installed.document.query_id.clone(),
52005200
&dag,
52015201
)
@@ -7118,19 +7118,19 @@ pub(crate) mod tests {
71187118
}],
71197119
time_index: None,
71207120
};
7121-
let dag = ExecutableDag {
7121+
let dag = PostAsapDag {
71227122
nodes: (1..=5)
7123-
.map(|id| ExecutableDagNode {
7123+
.map(|id| PostAsapDagNode {
71247124
id: PostAsapNodeId(id),
7125-
payload: ExecutableOperatorPayload::SummaryMerge,
7125+
payload: PostAsapOperatorPayload::SummaryMerge,
71267126
output_state: ExecutionDataState::INGESTION_SUMMARY,
71277127
output_schema: schema.clone(),
71287128
guarantee: None,
71297129
})
71307130
.collect(),
71317131
edges: [(1, 2), (2, 3), (2, 4), (3, 5), (4, 5)]
71327132
.into_iter()
7133-
.map(|(a, b)| ExecutableDagEdge {
7133+
.map(|(a, b)| PostAsapDagEdge {
71347134
producer: PostAsapNodeId(a),
71357135
consumer: PostAsapNodeId(b),
71367136
role: EdgeRole::Input,
@@ -7143,7 +7143,7 @@ pub(crate) mod tests {
71437143
root: PostAsapNodeId(5),
71447144
};
71457145
let mut installed = InstalledPostAsapDag {
7146-
document: OwnedPostAsapDag::from_executable("shared".into(), &dag).unwrap(),
7146+
document: OwnedPostAsapDag::from_post_asap_dag("shared".into(), &dag).unwrap(),
71477147
native_programs: BTreeMap::new(),
71487148
binding: BackendExecutableBinding {
71497149
nodes: (1..=5)

‎control_plane/src/physical/executable_binding.rs‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ enum OperatorExecution {
1010

1111
/// Every physical operator uses its node's placement; payload kind does not
1212
/// restrict execution phase. Runtime capability is checked separately.
13-
fn operator_execution(node: &planner_types::post_asap::ExecutableDagNode) -> OperatorExecution {
13+
fn operator_execution(node: &planner_types::post_asap::PostAsapDagNode) -> OperatorExecution {
1414
match node.output_state.timing {
1515
planner_types::post_asap::ExecutionTiming::IngestionTime => OperatorExecution::Ingestion,
1616
planner_types::post_asap::ExecutionTiming::QueryTime => OperatorExecution::Query,
@@ -20,7 +20,7 @@ fn operator_execution(node: &planner_types::post_asap::ExecutableDagNode) -> Ope
2020
/// Assign backend phases to a selected semantic DAG without changing its nodes.
2121
pub fn install_selected_dag(
2222
query_id: String,
23-
dag: &planner_types::post_asap::ExecutableDag,
23+
dag: &planner_types::post_asap::PostAsapDag,
2424
query_plan_sink: QueryNodeId,
2525
materialization: impl Fn(
2626
planner_types::post_asap::PostAsapNodeId,
@@ -30,7 +30,7 @@ pub fn install_selected_dag(
3030
let mut nodes = std::collections::BTreeMap::new();
3131
let mut precompute_sinks = Vec::new();
3232
for node in &dag.nodes {
33-
if let planner_types::post_asap::ExecutableOperatorPayload::SummaryAgg {
33+
if let planner_types::post_asap::PostAsapOperatorPayload::SummaryAgg {
3434
family,
3535
input,
3636
grouping,
@@ -56,7 +56,7 @@ pub fn install_selected_dag(
5656
precompute_sinks.sort();
5757
let installed = InstalledPostAsapDag {
5858
native_programs: std::collections::BTreeMap::new(),
59-
document: OwnedPostAsapDag::from_executable(query_id, dag)?,
59+
document: OwnedPostAsapDag::from_post_asap_dag(query_id, dag)?,
6060
binding: BackendExecutableBinding {
6161
nodes,
6262
query_sink: dag.root,

‎control_plane/src/physical/maintained_population.rs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,12 @@ fn selected(node: &SummaryNode) -> Option<(MaintainedPopulation, PopulationReado
3535
return None;
3636
};
3737
let dag =
38-
planner_types::post_asap::compile_executable_dag(&std::rc::Rc::new(node.clone())).ok()?;
38+
planner_types::post_asap::compile_post_asap_dag(&std::rc::Rc::new(node.clone())).ok()?;
3939
let populations = dag
4040
.nodes
4141
.iter()
4242
.filter_map(|node| match &node.payload {
43-
planner_types::post_asap::ExecutableOperatorPayload::Value {
43+
planner_types::post_asap::PostAsapOperatorPayload::Value {
4444
operation: ValueOperation::MaintainPopulation { population },
4545
} => Some(population),
4646
_ => None,

‎control_plane/src/physical/post_asap/cost_model.rs‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ use asap_aware_mapping::{
2020
SummaryMaintenanceLifecycleCostInputs, TargetSubDAG, ValueOperationCapabilities,
2121
};
2222
use planner_types::post_asap::{
23-
ExecutableOperatorPayload, GroupingStrategy, SketchAlgorithm, SketchParams, SketchQuery,
23+
GroupingStrategy, PostAsapOperatorPayload, SketchAlgorithm, SketchParams, SketchQuery,
2424
SummaryFamilyType, SummaryWindowFramework,
2525
};
2626
use planner_types::pre_asap::expr_ir::ColumnRef;
@@ -190,13 +190,13 @@ impl ControlPlaneCostModel {
190190
// Exact compositions have a separate measured rate model.
191191
return None;
192192
};
193-
let dag = planner_types::post_asap::compile_executable_dag(root).ok()?;
193+
let dag = planner_types::post_asap::compile_post_asap_dag(root).ok()?;
194194
let mut value = 0.0;
195195
let mut states = 0;
196196
for node in &dag.nodes {
197197
let family = match &node.payload {
198-
ExecutableOperatorPayload::SummaryAgg { family, .. }
199-
| ExecutableOperatorPayload::SummaryJoin { family, .. } => family,
198+
PostAsapOperatorPayload::SummaryAgg { family, .. }
199+
| PostAsapOperatorPayload::SummaryJoin { family, .. } => family,
200200
_ => continue,
201201
};
202202
states += 1;
@@ -527,12 +527,12 @@ impl CostModel for ControlPlaneCostModel {
527527
) -> Option<bool> {
528528
use planner_types::post_asap::{NonNegativeWeightProof, WeightDomain};
529529
let dag =
530-
planner_types::post_asap::compile_executable_dag(&std::rc::Rc::new(summary.clone()))
530+
planner_types::post_asap::compile_post_asap_dag(&std::rc::Rc::new(summary.clone()))
531531
.ok()?;
532532
// Counter-weighted heaps now consume explicit rate values. The raw
533533
// ingestion adapter cannot bind that frontier as counter deltas.
534534
let requires_rate_values = dag.nodes.iter().any(|node| matches!(&node.payload,
535-
ExecutableOperatorPayload::SummaryAgg { input, family: SummaryFamilyType::Sketch(kind, _), .. }
535+
PostAsapOperatorPayload::SummaryAgg { input, family: SummaryFamilyType::Sketch(kind, _), .. }
536536
if matches!(kind.algorithm(), SketchAlgorithm::CmsWithHeap | SketchAlgorithm::CountSketchWithHeap)
537537
&& matches!(input.weight_domain, WeightDomain::NonNegative { proof: NonNegativeWeightProof::ResetAwareCounterDerivative })));
538538
requires_rate_values.then_some(false)

‎control_plane/src/planner_selection.rs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,10 @@ fn target_identity(target: &QueryExpr, accuracy: &AccuracyTarget) -> Option<Stri
7777
fn summary_identity(node: &SummaryNode) -> Option<String> {
7878
// Canonical exporter owns operator payloads and edge semantics. Hash its
7979
// structure, not assigned node IDs or the incidental sharing of Rc values.
80-
let dag = planner_types::post_asap::compile_executable_dag(&Rc::new(node.clone())).ok()?;
80+
let dag = planner_types::post_asap::compile_post_asap_dag(&Rc::new(node.clone())).ok()?;
8181
lossless_json(&dag)?;
8282
fn visit(
83-
dag: &planner_types::post_asap::ExecutableDag,
83+
dag: &planner_types::post_asap::PostAsapDag,
8484
id: planner_types::post_asap::PostAsapNodeId,
8585
memo: &mut std::collections::HashMap<planner_types::post_asap::PostAsapNodeId, String>,
8686
) -> String {

0 commit comments

Comments
 (0)