Skip to content

Commit 60cb96b

Browse files
zzylolclaude
andcommitted
refactor(planner): port the plan-selection crate split to flat DAGs and Operator<NodeId> payloads
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W7qG9aFyPij5uWsyAJCxDW
1 parent 301e578 commit 60cb96b

4 files changed

Lines changed: 47 additions & 14 deletions

File tree

‎crates/devtools/src/bin/stage_pipeline.rs‎

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525

2626
use std::rc::Rc;
2727

28-
use asap_logical_optimizer::pass1::logical_candidates::{choice_index, enumerate_local_logical_candidates, LocalLogicalCandidates};
28+
use asap_logical_optimizer::pass1::logical_candidates::{
29+
choice_index, enumerate_local_logical_candidates, LocalLogicalCandidates,
30+
};
2931
use asap_logical_optimizer::Realization;
3032
use asap_plan_selection::PlanningModels;
3133
use asap_plan_selection::{select_exhaustive, Selection, MAX_ENUMERATED_CANDIDATES};
@@ -34,7 +36,12 @@ use asap_types::ir::schema::SketchAlgorithm;
3436
use asap_types::ir::schema_support::with_promql_series_identity;
3537
use asap_types::ir::{OperatorNode, QueryRoot};
3638
use asap_types::types::AccuracyTarget;
37-
use asap_types::workload::{AccuracyRequirement, BatchEntry, DataArrival, DataDistribution, DataWorkload, DurationMs, Evidence, EvidenceSource, LatencyRequirement, PlanningWorkload, Predictability, Query, QueryLanguage, QueryRecurrence, QueryRequirements, QueryTimeScope, QueryWorkload, Rate, RepeatedDemand, RepeatingEntry, RepetitionInterval, TimeSelection};
39+
use asap_types::workload::{
40+
AccuracyRequirement, BatchEntry, DataArrival, DataDistribution, DataWorkload, DurationMs,
41+
Evidence, EvidenceSource, LatencyRequirement, PlanningWorkload, Predictability, Query,
42+
QueryLanguage, QueryRecurrence, QueryRequirements, QueryTimeScope, QueryWorkload, Rate,
43+
RepeatedDemand, RepeatingEntry, RepetitionInterval, TimeSelection,
44+
};
3845
use serde_json::{json, Value};
3946

4047
const USAGE: &str = "usage: stage_pipeline (--example planner-layering-1 | --promql <query>... \

‎crates/integration-tests/tests/planner_layering_example1.rs‎

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,17 @@
1515
use std::collections::{BTreeMap, BTreeSet, HashSet};
1616

1717
use asap_plan_selection::PlanningModels;
18-
use asap_types::ir::schema::state_type::{GroupingStrategy, HydraKind, SketchAlgorithm};
1918
use asap_types::ir::flat::{flatten, FlatDag, NodeId};
19+
use asap_types::ir::schema::state_type::{GroupingStrategy, HydraKind, SketchAlgorithm};
2020
use asap_types::ir::schema::FieldDataType;
2121
use asap_types::ir::{ASAPOp, Operator};
2222
use asap_types::types::AccuracyTarget;
23-
use asap_types::workload::{AccuracyRequirement, DataArrival, DataDistribution, DataWorkload, DurationMs, Evidence, EvidenceSource, LatencyRequirement, PlanningWorkload, Predictability, Query, QueryLanguage, QueryRequirements, QueryTimeScope, QueryWorkload, Rate, RepeatedDemand, RepeatingEntry, RepetitionInterval, TimeSelection};
23+
use asap_types::workload::{
24+
AccuracyRequirement, DataArrival, DataDistribution, DataWorkload, DurationMs, Evidence,
25+
EvidenceSource, LatencyRequirement, PlanningWorkload, Predictability, Query, QueryLanguage,
26+
QueryRequirements, QueryTimeScope, QueryWorkload, Rate, RepeatedDemand, RepeatingEntry,
27+
RepetitionInterval, TimeSelection,
28+
};
2429

2530
type Payload = Operator<NodeId>;
2631

@@ -31,7 +36,9 @@ mod stages {
3136
use std::rc::Rc;
3237

3338
use super::*;
34-
use asap_logical_optimizer::pass1::logical_candidates::{compose_logical_candidate, enumerate_local_logical_candidates};
39+
use asap_logical_optimizer::pass1::logical_candidates::{
40+
compose_logical_candidate, enumerate_local_logical_candidates,
41+
};
3542
use asap_types::ir::{OperatorNode, QueryRoot};
3643

3744
/// One whole-workload candidate. `query_roots` holds one root per

‎crates/integration-tests/tests/promql_to_post_asap.rs‎

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,31 @@
99
use std::rc::Rc;
1010

1111
use asap_integration_tests::fixtures::lower_promql;
12-
use asap_integration_tests::post_asap::{maintained, maintained_post_asap_dag, post_asap_dag, timed};
13-
use asap_logical_optimizer::accuracy::{AccuracyEvidenceProvider, DefaultAccuracyModel, EqualSplitAllocator, PropagationStats, QuantileInputDomain};
14-
use asap_logical_optimizer::pass1::replacement::{is_logical_rewrite, retain_exact, RealizationError};
15-
use asap_logical_optimizer::{search_workload, search_workload_with_targets, ASAPStrategies, AccuracyModel, Replacement, ReplacementStrategy, ReplacementSubDAG, TargetSubDAG};
12+
use asap_integration_tests::post_asap::{
13+
maintained, maintained_post_asap_dag, post_asap_dag, timed,
14+
};
15+
use asap_logical_optimizer::accuracy::{
16+
AccuracyEvidenceProvider, DefaultAccuracyModel, EqualSplitAllocator, PropagationStats,
17+
QuantileInputDomain,
18+
};
19+
use asap_logical_optimizer::pass1::replacement::{
20+
is_logical_rewrite, retain_exact, RealizationError,
21+
};
22+
use asap_logical_optimizer::{
23+
search_workload, search_workload_with_targets, ASAPStrategies, AccuracyModel, Replacement,
24+
ReplacementStrategy, ReplacementSubDAG, TargetSubDAG,
25+
};
1626
use asap_plan_selection::candidate_selection::global_selection;
1727
use asap_plan_selection::cost::cost_model::DefaultCostModel;
18-
use asap_types::ir::physical_export::{PhysicalASAPOperatorPayload};
1928
use asap_types::ir::operator::operator_properties::Reduction;
29+
use asap_types::ir::physical_export::PhysicalASAPOperatorPayload;
2030
use asap_types::ir::properties::CompositionOperator;
2131
use asap_types::ir::scalar::ColumnRef;
2232
use asap_types::ir::schema::DataType;
23-
use asap_types::ir::schema::{EntityIdentity, ExactKind, ExactParams, FieldDataType, GroupingStrategy, Schema, SketchAlgorithm, SketchKind, SketchParams, SketchStatistic, SummaryInputExpr, SummaryUpdate};
33+
use asap_types::ir::schema::{
34+
EntityIdentity, ExactKind, ExactParams, FieldDataType, GroupingStrategy, Schema,
35+
SketchAlgorithm, SketchKind, SketchParams, SketchStatistic, SummaryInputExpr, SummaryUpdate,
36+
};
2437
use asap_types::ir::{ASAPOp, NonASAPOp, Operator, OperatorNode, ScalarExpr};
2538
use asap_types::types::AccuracyTarget;
2639

‎crates/integration-tests/tests/sql_to_post_asap.rs‎

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,20 @@ use std::rc::Rc;
2222
use asap_frontend_sql::{lower_sql, lower_sql_dialect, SqlCatalog};
2323
use asap_integration_tests::post_asap::post_asap_dag;
2424
use asap_logical_optimizer::pass1::replacement::{retain_exact, RealizationError};
25-
use asap_logical_optimizer::{search_workload, ASAPStrategies, Replacement, ReplacementStrategy, ReplacementSubDAG, TargetSubDAG};
25+
use asap_logical_optimizer::{
26+
search_workload, ASAPStrategies, Replacement, ReplacementStrategy, ReplacementSubDAG,
27+
TargetSubDAG,
28+
};
2629
use asap_plan_selection::candidate_selection::global_selection;
2730
use asap_plan_selection::DefaultCostModel;
28-
use asap_types::ir::physical_export::{EdgeRole, PhysicalASAPNodeId, PhysicalASAPOperatorPayload};
2931
use asap_types::ir::operator::operator_properties::Reduction;
32+
use asap_types::ir::physical_export::{EdgeRole, PhysicalASAPNodeId, PhysicalASAPOperatorPayload};
3033
use asap_types::ir::scalar::ColumnRef;
3134
use asap_types::ir::schema::{DataType, Field, Schema};
32-
use asap_types::ir::schema::{ExactKind, ExactParams, FieldDataType, GroupingStrategy, SketchAlgorithm, SketchKind, SketchParams, SketchStatistic, SummaryUpdate};
35+
use asap_types::ir::schema::{
36+
ExactKind, ExactParams, FieldDataType, GroupingStrategy, SketchAlgorithm, SketchKind,
37+
SketchParams, SketchStatistic, SummaryUpdate,
38+
};
3339
use asap_types::ir::{ASAPOp, NonASAPOp, Operator, OperatorNode, Predicate, ScalarExpr};
3440
use asap_types::types::AccuracyTarget;
3541
use asap_types::workload::SqlDialect;

0 commit comments

Comments
 (0)