Skip to content

Commit a09a607

Browse files
committed
in work
1 parent 26eb833 commit a09a607

19 files changed

+55
-75
lines changed

rust/cubesqlplanner/cubesqlplanner/src/physical_plan_builder/builder.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,9 @@ impl PhysicalPlanBuilder {
7878
let mut select_builder = SelectBuilder::new(from);
7979
select_builder.add_count_all(TOTAL_COUNT.to_string());
8080
let context_factory = context.make_sql_nodes_factory()?;
81-
Ok(Rc::new(select_builder.build(context_factory)))
81+
Ok(Rc::new(
82+
select_builder.build(self.query_tools.clone(), context_factory),
83+
))
8284
}
8385

8486
fn build_impl(

rust/cubesqlplanner/cubesqlplanner/src/physical_plan_builder/processors/aggregate_multiplied_subquery.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
use super::super::{LogicalNodeProcessor, ProcessableNode, PushDownBuilderContext};
2-
use crate::logical_plan::{
3-
AggregateMultipliedSubquery, AggregateMultipliedSubquerySouce,
4-
};
2+
use crate::logical_plan::{AggregateMultipliedSubquery, AggregateMultipliedSubquerySouce};
53
use crate::physical_plan_builder::PhysicalPlanBuilder;
64
use crate::plan::{
7-
Expr, From, JoinBuilder, JoinCondition, MemberExpression, QualifiedColumnName, Select, SelectBuilder,
5+
Expr, From, JoinBuilder, JoinCondition, MemberExpression, QualifiedColumnName, Select,
6+
SelectBuilder,
87
};
98
use crate::planner::sql_evaluator::ReferencesBuilder;
109
use crate::planner::BaseMember;
@@ -178,7 +177,9 @@ impl<'a> LogicalNodeProcessor<'a, AggregateMultipliedSubquery>
178177
.multiplied_measures
179178
.clone(),
180179
);
181-
Ok(Rc::new(select_builder.build(context_factory)))
180+
Ok(Rc::new(
181+
select_builder.build(query_tools.clone(), context_factory),
182+
))
182183
}
183184
}
184185

rust/cubesqlplanner/cubesqlplanner/src/physical_plan_builder/processors/full_key_aggregate.rs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
use super::super::{LogicalNodeProcessor, ProcessableNode, PushDownBuilderContext};
2-
use crate::logical_plan::{
3-
pretty_print, FullKeyAggregate, ResolvedMultipliedMeasures,
4-
};
2+
use crate::logical_plan::{pretty_print, FullKeyAggregate, ResolvedMultipliedMeasures};
53
use crate::physical_plan_builder::PhysicalPlanBuilder;
64
use crate::plan::{
7-
Expr, From, FromSource, JoinBuilder, JoinCondition,
8-
QualifiedColumnName, SelectBuilder, SingleAliasedSource, Union,
5+
Expr, From, FromSource, JoinBuilder, JoinCondition, QualifiedColumnName, SelectBuilder,
6+
SingleAliasedSource, Union,
97
};
108
use crate::planner::sql_evaluator::sql_nodes::SqlNodesFactory;
119
use crate::planner::sql_evaluator::ReferencesBuilder;
@@ -95,12 +93,13 @@ impl<'a> FullKeyAggregateStrategy for KeysFullKeyAggregateStrategy<'a> {
9593
}
9694
let sql_context = SqlNodesFactory::new();
9795
keys_select_builder.set_distinct();
98-
let keys_select = Rc::new(keys_select_builder.build(sql_context.clone()));
96+
let keys_select =
97+
Rc::new(keys_select_builder.build(query_tools.clone(), sql_context.clone()));
9998
keys_queries.push(keys_select);
10099

101100
let data_select_builder =
102101
SelectBuilder::new(From::new(FromSource::Single(multi_stage_source)));
103-
let data_select = Rc::new(data_select_builder.build(sql_context));
102+
let data_select = Rc::new(data_select_builder.build(query_tools.clone(), sql_context));
104103
data_queries.push(data_select);
105104
}
106105
if data_queries.is_empty() {
@@ -138,7 +137,7 @@ impl<'a> FullKeyAggregateStrategy for KeysFullKeyAggregateStrategy<'a> {
138137
keys_select_builder.set_distinct();
139138

140139
let sql_context = SqlNodesFactory::new();
141-
let keys_select = Rc::new(keys_select_builder.build(sql_context));
140+
let keys_select = Rc::new(keys_select_builder.build(query_tools.clone(), sql_context));
142141

143142
let keys_alias = "fk_aggregate_keys".to_string();
144143

@@ -238,7 +237,7 @@ impl<'a> FullKeyAggregateStrategy for InnerJoinFullKeyAggregateStrategy<'a> {
238237

239238
let data_select_builder =
240239
SelectBuilder::new(From::new(FromSource::Single(multi_stage_source)));
241-
let data_select = Rc::new(data_select_builder.build(sql_context));
240+
let data_select = Rc::new(data_select_builder.build(query_tools.clone(), sql_context));
242241
data_queries.push(data_select);
243242
}
244243

rust/cubesqlplanner/cubesqlplanner/src/physical_plan_builder/processors/keys_sub_query.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ impl<'a> LogicalNodeProcessor<'a, KeysSubQuery> for KeysSubQueryProcessor<'a> {
5959
select_builder.set_filter(keys_subquery.filter.all_filters());
6060
let mut context_factory = context.make_sql_nodes_factory()?;
6161
context_factory.set_render_references(render_references);
62-
let res = Rc::new(select_builder.build(context_factory));
62+
let res = Rc::new(select_builder.build(query_tools.clone(), context_factory));
6363
Ok(res)
6464
}
6565
}

rust/cubesqlplanner/cubesqlplanner/src/physical_plan_builder/processors/measure_subquery.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ impl<'a> LogicalNodeProcessor<'a, MeasureSubquery> for MeasureSubqueryProcessor<
2222
measure_subquery: &MeasureSubquery,
2323
context: &PushDownBuilderContext,
2424
) -> Result<Self::PhysycalNode, CubeError> {
25-
let _query_tools = self.builder.query_tools();
25+
let query_tools = self.builder.query_tools();
2626
let mut render_references = HashMap::new();
2727
let from = self
2828
.builder
@@ -47,17 +47,17 @@ impl<'a> LogicalNodeProcessor<'a, MeasureSubquery> for MeasureSubqueryProcessor<
4747
)?;
4848
for dim in measure_subquery.schema.dimensions.iter() {
4949
select_builder
50-
.add_projection_member(&dim.clone().as_base_member(_query_tools.clone())?, None);
50+
.add_projection_member(&dim.clone().as_base_member(query_tools.clone())?, None);
5151
}
5252
for meas in measure_subquery.schema.measures.iter() {
5353
select_builder
54-
.add_projection_member(&meas.clone().as_base_member(_query_tools.clone())?, None);
54+
.add_projection_member(&meas.clone().as_base_member(query_tools.clone())?, None);
5555
}
5656

5757
context_factory.set_ungrouped_measure(true);
5858
context_factory.set_render_references(render_references);
5959

60-
let select = Rc::new(select_builder.build(context_factory));
60+
let select = Rc::new(select_builder.build(query_tools.clone(), context_factory));
6161
Ok(select)
6262
}
6363
}

rust/cubesqlplanner/cubesqlplanner/src/physical_plan_builder/processors/multi_stage_get_date_range.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ impl<'a> LogicalNodeProcessor<'a, MultiStageGetDateRange> for MultiStageGetDateR
5353
&mut render_references,
5454
)?;
5555
context_factory.set_render_references(render_references);
56-
let select = Rc::new(select_builder.build(context_factory));
56+
let select = Rc::new(select_builder.build(query_tools.clone(), context_factory));
5757
Ok(QueryPlan::Select(select))
5858
}
5959
}

rust/cubesqlplanner/cubesqlplanner/src/physical_plan_builder/processors/multi_stage_measure_calculation.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ impl<'a> LogicalNodeProcessor<'a, MultiStageMeasureCalculation>
105105
MultiStageCalculationWindowFunction::None => {}
106106
}
107107
context_factory.set_render_references(render_references);
108-
let select = Rc::new(select_builder.build(context_factory));
108+
let select = Rc::new(select_builder.build(query_tools.clone(), context_factory));
109109
Ok(QueryPlan::Select(select))
110110
}
111111
}

rust/cubesqlplanner/cubesqlplanner/src/physical_plan_builder/processors/multi_stage_rolling_window.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ impl<'a> LogicalNodeProcessor<'a, MultiStageRollingWindow>
165165
}
166166

167167
context_factory.set_render_references(render_references);
168-
let select = Rc::new(select_builder.build(context_factory));
168+
let select = Rc::new(select_builder.build(query_tools.clone(), context_factory));
169169
Ok(QueryPlan::Select(select))
170170
}
171171
}

rust/cubesqlplanner/cubesqlplanner/src/physical_plan_builder/processors/query.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ impl<'a> LogicalNodeProcessor<'a, Query> for QueryProcessor<'a> {
149149
.make_order_by(&logical_plan.schema, &logical_plan.modifers.order_by)?,
150150
);
151151

152-
let res = Rc::new(select_builder.build(context_factory));
152+
let res = Rc::new(select_builder.build(query_tools.clone(), context_factory));
153153
Ok(res)
154154
}
155155
}

rust/cubesqlplanner/cubesqlplanner/src/plan/builder/select.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use crate::plan::{
44
};
55

66
use crate::plan::expression::FunctionExpression;
7+
use crate::planner::query_tools::QueryTools;
78
use crate::planner::sql_evaluator::sql_nodes::SqlNodesFactory;
89
use crate::planner::{BaseMember, VisitorContext};
910
use cubenativeutils::CubeError;
@@ -299,7 +300,7 @@ impl SelectBuilder {
299300
schema
300301
}
301302

302-
pub fn build(self, mut nodes_factory: SqlNodesFactory) -> Select {
303+
pub fn build(self, query_tools: Rc<QueryTools>, mut nodes_factory: SqlNodesFactory) -> Select {
303304
let cube_references = Self::make_cube_references(self.from.clone());
304305
nodes_factory.set_cube_name_references(cube_references);
305306
let schema = if self.projection_columns.is_empty() {
@@ -314,7 +315,11 @@ impl SelectBuilder {
314315
group_by: self.group_by,
315316
having: self.having,
316317
order_by: self.order_by,
317-
context: Rc::new(VisitorContext::new(&nodes_factory, self.filter)),
318+
context: Rc::new(VisitorContext::new(
319+
query_tools,
320+
&nodes_factory,
321+
self.filter,
322+
)),
318323
ctes: self.ctes,
319324
is_distinct: self.is_distinct,
320325
limit: self.limit,

0 commit comments

Comments
 (0)