Skip to content

Commit d52804a

Browse files
committed
evaluation_node refactoring
1 parent eef6fb7 commit d52804a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+612
-769
lines changed

rust/cubesqlplanner/cubesqlplanner/src/planner/base_cube.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
use super::query_tools::QueryTools;
2-
use super::sql_evaluator::EvaluationNode;
2+
use super::sql_evaluator::MemberSymbol;
33
use super::{evaluate_with_context, VisitorContext};
44
use crate::plan::Schema;
55
use cubenativeutils::CubeError;
66
use std::rc::Rc;
77

88
pub struct BaseCube {
99
cube_name: String,
10-
member_evaluator: Rc<EvaluationNode>,
10+
member_evaluator: Rc<MemberSymbol>,
1111
query_tools: Rc<QueryTools>,
1212
}
1313
impl BaseCube {
1414
pub fn try_new(
1515
cube_name: String,
1616
query_tools: Rc<QueryTools>,
17-
member_evaluator: Rc<EvaluationNode>,
17+
member_evaluator: Rc<MemberSymbol>,
1818
) -> Result<Rc<Self>, CubeError> {
1919
Ok(Rc::new(Self {
2020
cube_name,

rust/cubesqlplanner/cubesqlplanner/src/planner/base_dimension.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use super::query_tools::QueryTools;
2-
use super::sql_evaluator::{EvaluationNode, MemberSymbol, MemberSymbolType};
2+
use super::sql_evaluator::MemberSymbol;
33
use super::{evaluate_with_context, BaseMember, VisitorContext};
44
use crate::plan::Schema;
55
use cubenativeutils::CubeError;
@@ -8,7 +8,7 @@ use std::rc::Rc;
88
pub struct BaseDimension {
99
dimension: String,
1010
query_tools: Rc<QueryTools>,
11-
member_evaluator: Rc<EvaluationNode>,
11+
member_evaluator: Rc<MemberSymbol>,
1212
cube_name: String,
1313
name: String,
1414
}
@@ -28,7 +28,7 @@ impl BaseMember for BaseDimension {
2828
.escape_column_name(&self.unescaped_alias_name())
2929
}
3030

31-
fn member_evaluator(&self) -> Rc<EvaluationNode> {
31+
fn member_evaluator(&self) -> Rc<MemberSymbol> {
3232
self.member_evaluator.clone()
3333
}
3434

@@ -47,11 +47,11 @@ impl BaseMember for BaseDimension {
4747

4848
impl BaseDimension {
4949
pub fn try_new(
50-
evaluation_node: Rc<EvaluationNode>,
50+
evaluation_node: Rc<MemberSymbol>,
5151
query_tools: Rc<QueryTools>,
5252
) -> Result<Option<Rc<Self>>, CubeError> {
53-
let result = match evaluation_node.symbol() {
54-
MemberSymbolType::Dimension(s) => Some(Rc::new(Self {
53+
let result = match evaluation_node.as_ref() {
54+
MemberSymbol::Dimension(s) => Some(Rc::new(Self {
5555
dimension: s.full_name(),
5656
query_tools: query_tools.clone(),
5757
member_evaluator: evaluation_node.clone(),
@@ -64,7 +64,7 @@ impl BaseDimension {
6464
}
6565

6666
pub fn try_new_required(
67-
evaluation_node: Rc<EvaluationNode>,
67+
evaluation_node: Rc<MemberSymbol>,
6868
query_tools: Rc<QueryTools>,
6969
) -> Result<Rc<Self>, CubeError> {
7070
if let Some(result) = Self::try_new(evaluation_node, query_tools)? {
@@ -76,7 +76,7 @@ impl BaseDimension {
7676
}
7777
}
7878

79-
pub fn member_evaluator(&self) -> Rc<EvaluationNode> {
79+
pub fn member_evaluator(&self) -> Rc<MemberSymbol> {
8080
self.member_evaluator.clone()
8181
}
8282

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,30 @@
11
use super::query_tools::QueryTools;
2-
use super::sql_evaluator::EvaluationNode;
3-
use super::{evaluate_with_context, VisitorContext};
2+
use super::sql_evaluator::SqlCall;
3+
use super::{evaluate_sql_call_with_context, evaluate_with_context, VisitorContext};
44
use crate::plan::Schema;
55
use cubenativeutils::CubeError;
66
use std::rc::Rc;
77
pub trait BaseJoinCondition {
88
fn to_sql(&self, context: Rc<VisitorContext>, schema: Rc<Schema>) -> Result<String, CubeError>;
99
}
1010
pub struct SqlJoinCondition {
11-
member_evaluator: Rc<EvaluationNode>,
11+
sql_call: Rc<SqlCall>,
1212
query_tools: Rc<QueryTools>,
1313
}
1414
impl SqlJoinCondition {
1515
pub fn try_new(
1616
query_tools: Rc<QueryTools>,
17-
member_evaluator: Rc<EvaluationNode>,
17+
sql_call: Rc<SqlCall>,
1818
) -> Result<Rc<Self>, CubeError> {
1919
Ok(Rc::new(Self {
20-
member_evaluator,
20+
sql_call,
2121
query_tools,
2222
}))
2323
}
2424
}
2525

2626
impl BaseJoinCondition for SqlJoinCondition {
2727
fn to_sql(&self, context: Rc<VisitorContext>, schema: Rc<Schema>) -> Result<String, CubeError> {
28-
evaluate_with_context(
29-
&self.member_evaluator,
30-
self.query_tools.clone(),
31-
context,
32-
schema,
33-
)
28+
evaluate_sql_call_with_context(&self.sql_call, self.query_tools.clone(), context, schema)
3429
}
3530
}

rust/cubesqlplanner/cubesqlplanner/src/planner/base_measure.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use super::query_tools::QueryTools;
2-
use super::sql_evaluator::{EvaluationNode, MemberSymbol, MemberSymbolType};
2+
use super::sql_evaluator::MemberSymbol;
33
use super::{evaluate_with_context, BaseMember, VisitorContext};
44
use crate::cube_bridge::measure_definition::{
55
MeasureDefinition, RollingWindow, TimeShiftReference,
@@ -65,7 +65,7 @@ impl MeasureTimeShift {
6565
pub struct BaseMeasure {
6666
measure: String,
6767
query_tools: Rc<QueryTools>,
68-
member_evaluator: Rc<EvaluationNode>,
68+
member_evaluator: Rc<MemberSymbol>,
6969
definition: Rc<dyn MeasureDefinition>,
7070
time_shifts: Vec<MeasureTimeShift>,
7171
cube_name: String,
@@ -87,7 +87,7 @@ impl BaseMember for BaseMeasure {
8787
.escape_column_name(&self.unescaped_alias_name())
8888
}
8989

90-
fn member_evaluator(&self) -> Rc<EvaluationNode> {
90+
fn member_evaluator(&self) -> Rc<MemberSymbol> {
9191
self.member_evaluator.clone()
9292
}
9393

@@ -106,11 +106,11 @@ impl BaseMember for BaseMeasure {
106106

107107
impl BaseMeasure {
108108
pub fn try_new(
109-
evaluation_node: Rc<EvaluationNode>,
109+
evaluation_node: Rc<MemberSymbol>,
110110
query_tools: Rc<QueryTools>,
111111
) -> Result<Option<Rc<Self>>, CubeError> {
112-
let res = match evaluation_node.symbol() {
113-
MemberSymbolType::Measure(s) => {
112+
let res = match evaluation_node.as_ref() {
113+
MemberSymbol::Measure(s) => {
114114
let time_shifts = Self::parse_time_shifts(&s.definition())?;
115115
Some(Rc::new(Self {
116116
measure: s.full_name(),
@@ -128,7 +128,7 @@ impl BaseMeasure {
128128
}
129129

130130
pub fn try_new_required(
131-
evaluation_node: Rc<EvaluationNode>,
131+
evaluation_node: Rc<MemberSymbol>,
132132
query_tools: Rc<QueryTools>,
133133
) -> Result<Rc<Self>, CubeError> {
134134
if let Some(result) = Self::try_new(evaluation_node, query_tools)? {
@@ -153,7 +153,7 @@ impl BaseMeasure {
153153
}
154154
}
155155

156-
pub fn member_evaluator(&self) -> &Rc<EvaluationNode> {
156+
pub fn member_evaluator(&self) -> &Rc<MemberSymbol> {
157157
&self.member_evaluator
158158
}
159159

rust/cubesqlplanner/cubesqlplanner/src/planner/base_member.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use super::sql_evaluator::EvaluationNode;
1+
use super::sql_evaluator::MemberSymbol;
22
use super::VisitorContext;
33
use crate::plan::Schema;
44
use cubenativeutils::CubeError;
@@ -9,7 +9,7 @@ use std::rc::Rc;
99
pub trait BaseMember {
1010
fn to_sql(&self, context: Rc<VisitorContext>, schema: Rc<Schema>) -> Result<String, CubeError>;
1111
fn alias_name(&self) -> String;
12-
fn member_evaluator(&self) -> Rc<EvaluationNode>;
12+
fn member_evaluator(&self) -> Rc<MemberSymbol>;
1313
fn full_name(&self) -> String {
1414
self.member_evaluator().full_name()
1515
}

rust/cubesqlplanner/cubesqlplanner/src/planner/base_time_dimension.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use super::query_tools::QueryTools;
2-
use super::sql_evaluator::EvaluationNode;
2+
use super::sql_evaluator::MemberSymbol;
33
use super::BaseDimension;
44
use super::{BaseMember, VisitorContext};
55
use crate::plan::Schema;
@@ -39,7 +39,7 @@ impl BaseMember for BaseTimeDimension {
3939
.escape_column_name(&self.unescaped_alias_name())
4040
}
4141

42-
fn member_evaluator(&self) -> Rc<EvaluationNode> {
42+
fn member_evaluator(&self) -> Rc<MemberSymbol> {
4343
self.dimension.member_evaluator()
4444
}
4545

@@ -63,7 +63,7 @@ impl BaseMember for BaseTimeDimension {
6363
impl BaseTimeDimension {
6464
pub fn try_new_required(
6565
query_tools: Rc<QueryTools>,
66-
member_evaluator: Rc<EvaluationNode>,
66+
member_evaluator: Rc<MemberSymbol>,
6767
granularity: Option<String>,
6868
date_range: Option<Vec<String>>,
6969
) -> Result<Rc<Self>, CubeError> {
@@ -107,7 +107,7 @@ impl BaseTimeDimension {
107107
self.dimension.clone()
108108
}
109109

110-
pub fn member_evaluator(&self) -> Rc<EvaluationNode> {
110+
pub fn member_evaluator(&self) -> Rc<MemberSymbol> {
111111
self.dimension.member_evaluator()
112112
}
113113

rust/cubesqlplanner/cubesqlplanner/src/planner/filter/base_filter.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use super::filter_operator::FilterOperator;
22
use crate::plan::Schema;
33
use crate::planner::query_tools::QueryTools;
4-
use crate::planner::sql_evaluator::EvaluationNode;
4+
use crate::planner::sql_evaluator::MemberSymbol;
55
use crate::planner::sql_templates::filter::FilterTemplates;
66
use crate::planner::{evaluate_with_context, VisitorContext};
77
use cubenativeutils::CubeError;
@@ -17,7 +17,7 @@ pub enum FilterType {
1717

1818
pub struct BaseFilter {
1919
query_tools: Rc<QueryTools>,
20-
member_evaluator: Rc<EvaluationNode>,
20+
member_evaluator: Rc<MemberSymbol>,
2121
#[allow(dead_code)]
2222
filter_type: FilterType,
2323
filter_operator: FilterOperator,
@@ -44,7 +44,7 @@ lazy_static! {
4444
impl BaseFilter {
4545
pub fn try_new(
4646
query_tools: Rc<QueryTools>,
47-
member_evaluator: Rc<EvaluationNode>,
47+
member_evaluator: Rc<MemberSymbol>,
4848
filter_type: FilterType,
4949
filter_operator: FilterOperator,
5050
values: Option<Vec<Option<String>>>,

rust/cubesqlplanner/cubesqlplanner/src/planner/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,4 @@ pub use base_time_dimension::BaseTimeDimension;
2626
pub use granularity_helper::GranularityHelper;
2727
pub use params_allocator::ParamsAllocator;
2828
pub use query_properties::{FullKeyAggregateMeasures, OrderByItem, QueryProperties};
29-
pub use visitor_context::{evaluate_with_context, VisitorContext};
29+
pub use visitor_context::{evaluate_sql_call_with_context, evaluate_with_context, VisitorContext};

rust/cubesqlplanner/cubesqlplanner/src/planner/planners/join_planner.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use crate::cube_bridge::join_definition::JoinDefinition;
33
use crate::cube_bridge::memeber_sql::MemberSql;
44
use crate::plan::{From, JoinBuilder, JoinCondition};
55
use crate::planner::query_tools::QueryTools;
6-
use crate::planner::sql_evaluator::EvaluationNode;
6+
use crate::planner::sql_evaluator::SqlCall;
77
use crate::planner::SqlJoinCondition;
88
use cubenativeutils::CubeError;
99
use std::rc::Rc;
@@ -58,11 +58,11 @@ impl JoinPlanner {
5858
);
5959
for join in joins.items().iter() {
6060
let definition = join.join()?;
61-
let evaluator = self
61+
let sql_call = self
6262
.compile_join_condition(&join.static_data().original_from, definition.sql()?)?;
6363
let on = JoinCondition::new_base_join(SqlJoinCondition::try_new(
6464
self.query_tools.clone(),
65-
evaluator,
65+
sql_call,
6666
)?);
6767
let cube = self
6868
.utils
@@ -82,9 +82,9 @@ impl JoinPlanner {
8282
&self,
8383
cube_name: &String,
8484
sql: Rc<dyn MemberSql>,
85-
) -> Result<Rc<EvaluationNode>, CubeError> {
85+
) -> Result<Rc<SqlCall>, CubeError> {
8686
let evaluator_compiler_cell = self.query_tools.evaluator_compiler().clone();
8787
let mut evaluator_compiler = evaluator_compiler_cell.borrow_mut();
88-
evaluator_compiler.add_join_condition_evaluator(cube_name.clone(), sql)
88+
evaluator_compiler.compile_sql_call(&cube_name, sql)
8989
}
9090
}

rust/cubesqlplanner/cubesqlplanner/src/planner/planners/multi_stage/member.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::cube_bridge::measure_definition::TimeShiftReference;
2-
use crate::planner::sql_evaluator::EvaluationNode;
2+
use crate::planner::sql_evaluator::MemberSymbol;
33
use crate::planner::BaseMember;
44
use crate::planner::BaseTimeDimension;
55
use cubenativeutils::CubeError;
@@ -149,11 +149,11 @@ pub enum MultiStageMemberType {
149149

150150
pub struct MultiStageMember {
151151
member_type: MultiStageMemberType,
152-
evaluation_node: Rc<EvaluationNode>,
152+
evaluation_node: Rc<MemberSymbol>,
153153
}
154154

155155
impl MultiStageMember {
156-
pub fn new(member_type: MultiStageMemberType, evaluation_node: Rc<EvaluationNode>) -> Rc<Self> {
156+
pub fn new(member_type: MultiStageMemberType, evaluation_node: Rc<MemberSymbol>) -> Rc<Self> {
157157
Rc::new(Self {
158158
member_type,
159159
evaluation_node,
@@ -164,7 +164,7 @@ impl MultiStageMember {
164164
&self.member_type
165165
}
166166

167-
pub fn evaluation_node(&self) -> &Rc<EvaluationNode> {
167+
pub fn evaluation_node(&self) -> &Rc<MemberSymbol> {
168168
&self.evaluation_node
169169
}
170170

0 commit comments

Comments
 (0)