Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 49 additions & 42 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 5 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@ members = [
"crates/types",
"crates/frontend-common",
"crates/sql-function-catalog",
"crates/logical-asap-optimization",
"crates/physical-asap-optimization",
"crates/stage0-memo",
"crates/stage1-pass1-per-computation-candidates",
"crates/stage1-pass2-reuse-candidates",
"crates/stage2-physical-optimization",
"crates/accuracy",
"crates/cost",
"crates/plan-selection",
"crates/stage3-plan-selection",
"crates/frontend-promql",
"crates/frontend-metricsql",
"crates/metricsql-common-parser-support",
Expand Down
5 changes: 0 additions & 5 deletions crates/cost/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,3 @@ serde_json = "1"
# The executor's charge for each summary state, checked against the bytes
# the state byte models give for it plus the accumulator's own fields (#947).
asap-executor = { path = "../executor" }
# Physical plans of PromQL queries for the plan cost tests (tests/), built
# by the stages above this crate; `tests/held_memory.rs` builds them with
# the reference pricer's `optimize_physical_asap`.
asap-logical-asap-optimization = { path = "../logical-asap-optimization", features = ["test-support"] }
asap-physical-asap-optimization = { path = "../physical-asap-optimization" }
2 changes: 1 addition & 1 deletion crates/cost/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
//! [`NodeUsage`]; [`plan_cost`] the whole plan's [`PlanCost`]. Stage 3
//! computes no cost of its own.
//!
//! Plan selection (Stage 3, `asap-plan-selection`) documents how it prices
//! Plan selection (Stage 3, `asap-stage3-plan-selection`) documents how it prices
//! a candidate with these.
use std::collections::BTreeMap;

Expand Down
2 changes: 1 addition & 1 deletion crates/cost/src/usage.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//! Costing a physical plan DAG node by node: each node's resource usage
//! ([`node_usage`]), then the plan's usage, latency, retention, retained tumbling window
//! chains and cost ([`plan_cost`]). Moved from Stage 3 (`asap-plan-selection`,
//! chains and cost ([`plan_cost`]). Moved from Stage 3 (`asap-stage3-plan-selection`,
//! whose module doc, "Cost model", describes the model), so Stage 3 computes
//! no cost of its own.

Expand Down
12 changes: 7 additions & 5 deletions crates/devtools/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@ edition = "2021"
asap-frontend-promql = { path = "../frontend-promql" }
asap-frontend-sql = { path = "../frontend-sql" }
asap-accuracy = { path = "../accuracy" }
asap-logical-asap-optimization = { path = "../logical-asap-optimization" }
asap-physical-asap-optimization = { path = "../physical-asap-optimization" }
asap-stage0-memo = { path = "../stage0-memo" }
asap-stage1-pass1-per-computation-candidates = { path = "../stage1-pass1-per-computation-candidates" }
asap-stage1-pass2-reuse-candidates = { path = "../stage1-pass2-reuse-candidates" }
asap-stage2-physical-optimization = { path = "../stage2-physical-optimization" }
asap-cost = { path = "../cost" }
asap-plan-selection = { path = "../plan-selection" }
asap-stage3-plan-selection = { path = "../stage3-plan-selection" }
# The installable plan of the selected candidate (`installable_plan_of`),
# whose stored outputs `asap_planner` writes.
asap-planner = { path = "../planner" }
Expand All @@ -34,9 +36,9 @@ tokio = { version = "1", features = ["rt", "macros", "rt-multi-thread"] }

[dev-dependencies]
asap-types = { path = "../types", features = ["test-support"] }
asap-physical-asap-optimization = { path = "../physical-asap-optimization" }
asap-stage2-physical-optimization = { path = "../stage2-physical-optimization" }
# Pass 1's target list (`per_computation_candidates`) for the tests.
asap-logical-asap-optimization = { path = "../logical-asap-optimization", features = ["test-support"] }
asap-stage1-pass1-per-computation-candidates = { path = "../stage1-pass1-per-computation-candidates", features = ["test-support"] }


[[test]]
Expand Down
4 changes: 2 additions & 2 deletions crates/devtools/src/bin/asap_planner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -108,9 +108,9 @@ use asap_devtools::planning_stages::{
use asap_devtools::planning_stages_text::planning_stages_text;
use asap_devtools::SqlCatalog;
use asap_frontend_promql::{metric_type_warnings, promql_metric_names};
use asap_logical_asap_optimization::DeploymentCapabilities;
use asap_plan_selection::{large_peak_memory_warning, AcceptedAccuracy, Selection};
use asap_planner::{installable_plan_of, PlanningModels, SelectionError};
use asap_stage3_plan_selection::{large_peak_memory_warning, AcceptedAccuracy, Selection};
use asap_types::deployment_capabilities::DeploymentCapabilities;
use asap_types::ir::flat::{flatten, FlatDag, FlatNode};
use asap_types::ir::properties::{default_metric_for_root, AccuracyTarget};
use asap_types::ir::QueryRoot;
Expand Down
4 changes: 2 additions & 2 deletions crates/devtools/src/bin/sketch_coverage.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ use asap_devtools::corpora::{
};
use asap_devtools::{lower_promql_with_sample_interval, SqlCatalog};
use asap_frontend_sql::lower_sql_dialect;
use asap_logical_asap_optimization::memo_of_queries;
use asap_logical_asap_optimization::pass1_memo;
use asap_stage0_memo::memo_of_queries;
use asap_stage1_pass1_per_computation_candidates::pass1_memo;
use asap_types::ir::properties::AccuracyTarget;
use asap_types::ir::schema::FieldDataType;
use asap_types::ir::{ASAPOp, Operator, OperatorNode, QueryRoot};
Expand Down
12 changes: 3 additions & 9 deletions crates/devtools/src/candidate_labels.rs
Original file line number Diff line number Diff line change
Expand Up @@ -390,7 +390,7 @@ mod tests {
use super::*;
use crate::planner_layering_examples::example1;
use crate::planning_stages::lower_promql_roots;
use asap_logical_asap_optimization::test_support::{
use asap_stage1_pass1_per_computation_candidates::test_support::{
compose_logical_candidate, generate_per_computation_candidates,
};

Expand All @@ -399,10 +399,7 @@ mod tests {
fn connected_labels_describe_selected_states() {
let workload = example1();
let inventory = generate_per_computation_candidates(
&asap_logical_asap_optimization::memo_of_queries(
&lower_promql_roots(&workload).unwrap(),
)
.unwrap(),
&asap_stage0_memo::memo_of_queries(&lower_promql_roots(&workload).unwrap()).unwrap(),
)
.unwrap();
let choice = vec![0; inventory.targets.len()];
Expand All @@ -417,10 +414,7 @@ mod tests {
fn connected_labels_name_actual_shared_state() {
let workload = example1();
let inventory = generate_per_computation_candidates(
&asap_logical_asap_optimization::memo_of_queries(
&lower_promql_roots(&workload).unwrap(),
)
.unwrap(),
&asap_stage0_memo::memo_of_queries(&lower_promql_roots(&workload).unwrap()).unwrap(),
)
.unwrap();
let roots =
Expand Down
2 changes: 1 addition & 1 deletion crates/devtools/src/planner_fuzz/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ use serde::{Deserialize, Serialize};
use serde_json::{json, Value};

use asap_cost::CostInputs;
use asap_logical_asap_optimization::DeploymentCapabilities;
use asap_planner::{PlanSearchSettings, PlanningModels};
use asap_types::deployment_capabilities::DeploymentCapabilities;
use asap_types::ir::properties::AccuracyTarget;
use asap_types::ir::schema::sketch::SketchAlgorithm;
use asap_types::ir::QueryRoot;
Expand Down
17 changes: 9 additions & 8 deletions crates/devtools/src/planning_stages.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,18 @@
//! [`run_stages_until`] for `asap_planner`.

use asap_frontend_sql::SqlCatalog;
use asap_logical_asap_optimization::{
memo_of_queries, pass1_memo, pass2_after_local_window_composition,
pass2_local_window_composition, Pass1Error,
};
use asap_physical_asap_optimization::{
generate_physical_asap_memo_candidates, Stage2AssignmentRealizer,
};
use asap_plan_selection::select_plan;
use asap_planner::{
run_planning, PlanSearchSettings, PlanningModels, PlanningReport, PlanningRun, SelectionError,
};
use asap_stage0_memo::memo_of_queries;
use asap_stage1_pass1_per_computation_candidates::{pass1_memo, Pass1Error};
use asap_stage1_pass2_reuse_candidates::{
pass2_after_local_window_composition, pass2_local_window_composition,
};
use asap_stage2_physical_optimization::{
generate_physical_asap_memo_candidates, Stage2AssignmentRealizer,
};
use asap_stage3_plan_selection::select_plan;
use asap_types::ir::schema::schema_support::with_promql_series_identity;
use asap_types::ir::schema::{DataType, Field, Schema};
use asap_types::ir::{OperatorNode, QueryRoot};
Expand Down
2 changes: 1 addition & 1 deletion crates/devtools/tests/asap_planner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1131,7 +1131,7 @@ fn workload_set_index_and_files_validate() {
);
}
if let Some(capabilities) = set.get("deployment_capabilities") {
serde_json::from_value::<asap_logical_asap_optimization::DeploymentCapabilities>(
serde_json::from_value::<asap_types::deployment_capabilities::DeploymentCapabilities>(
capabilities.clone(),
)
.unwrap();
Expand Down
2 changes: 1 addition & 1 deletion crates/devtools/tests/viewer_contract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -326,8 +326,8 @@ fn wire_name<T: serde::Serialize>(value: T) -> String {
/// `RejectionCause::failed_a_check` does.
#[test]
fn viewer_knows_every_view_refresh_and_rejection_cause() {
use asap_plan_selection::RejectionCause as C;
use asap_planner::MaterializedViewRefresh as R;
use asap_stage3_plan_selection::RejectionCause as C;
let refreshes = [R::AtIngestion, R::OnFirstRead];
for refresh in refreshes {
// A new variant fails to compile here until it is listed above.
Expand Down
3 changes: 2 additions & 1 deletion crates/executor/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ test-support = ["planner-types/test-support"]
[dev-dependencies]
asap-executor = { path = ".", features = ["test-support"] }
rmp-serde = "1"
asap-logical-asap-optimization = { path = "../logical-asap-optimization", features = ["test-support"] }
asap-stage0-memo = { path = "../stage0-memo" }
asap-stage1-pass1-per-computation-candidates = { path = "../stage1-pass1-per-computation-candidates", features = ["test-support"] }
# The planning stages through the facade (a dev-dependency cycle, for
# integration tests only).
asap-planner = { path = "../planner" }
Expand Down
4 changes: 2 additions & 2 deletions crates/executor/tests/common/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@ pub fn selected_dag(
/// computations at their default choice. A bounded solver archive need not
/// contain every algorithm that executor binding tests need to exercise.
pub fn computation_candidates(root: Rc<OperatorNode>) -> Vec<Rc<OperatorNode>> {
use asap_logical_asap_optimization::test_support::{
use asap_stage1_pass1_per_computation_candidates::test_support::{
compose_logical_candidate, generate_per_computation_candidates,
};
let inventory = generate_per_computation_candidates(
&asap_logical_asap_optimization::memo_of_queries(&[QueryRoot::Operator(root)]).unwrap(),
&asap_stage0_memo::memo_of_queries(&[QueryRoot::Operator(root)]).unwrap(),
)
.expect("Pass 1 accepts the query");
let mut choices = vec![vec![0; inventory.targets.len()]];
Expand Down
Loading