Skip to content

Commit f31b5e6

Browse files
committed
Use CubeRewrite type alias in common rules
1 parent e671659 commit f31b5e6

File tree

8 files changed

+46
-57
lines changed

8 files changed

+46
-57
lines changed

rust/cubesql/cubesql/src/compile/rewrite/rules/case.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use egg::{Rewrite, Subst};
1+
use egg::Subst;
22

33
use crate::{
44
compile::rewrite::{
@@ -8,17 +8,17 @@ use crate::{
88
case_expr_when_then_expr_empty_tail, column_expr, group_aggregate_split_replacer,
99
group_expr_split_replacer, inner_aggregate_split_replacer, is_not_null_expr, is_null_expr,
1010
literal_expr, outer_aggregate_split_replacer, rewrite,
11-
rewriter::{CubeEGraph, RewriteRules},
11+
rewriter::{CubeEGraph, CubeRewrite, RewriteRules},
1212
transforming_rewrite, CaseExprReplacerAliasToCube, InnerAggregateSplitReplacerAliasToCube,
13-
LogicalPlanAnalysis, LogicalPlanLanguage,
13+
LogicalPlanLanguage,
1414
},
1515
var, var_iter,
1616
};
1717

1818
pub struct CaseRules {}
1919

2020
impl RewriteRules for CaseRules {
21-
fn rewrite_rules(&self) -> Vec<Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis>> {
21+
fn rewrite_rules(&self) -> Vec<CubeRewrite> {
2222
vec![
2323
// Case replacer takes place of inner replacer
2424
transforming_rewrite(

rust/cubesql/cubesql/src/compile/rewrite/rules/common.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
use crate::{
22
compile::rewrite::{
33
agg_fun_expr, alias_expr,
4-
analysis::{ConstantFolding, LogicalPlanAnalysis, OriginalExpr},
4+
analysis::{ConstantFolding, OriginalExpr},
55
binary_expr, column_expr, fun_expr,
6-
rewriter::{CubeEGraph, RewriteRules, Rewriter},
6+
rewriter::{CubeEGraph, CubeRewrite, RewriteRules, Rewriter},
77
transform_original_expr_to_alias, transforming_rewrite_with_root, udf_expr, AliasExprAlias,
88
LogicalPlanLanguage,
99
},
1010
config::ConfigObj,
1111
var,
1212
};
1313
use datafusion::{logical_plan::DFSchema, scalar::ScalarValue};
14-
use egg::{Id, Rewrite, Subst};
14+
use egg::{Id, Subst};
1515
use std::{fmt::Display, sync::Arc};
1616

1717
pub struct CommonRules {
1818
config_obj: Arc<dyn ConfigObj>,
1919
}
2020

2121
impl RewriteRules for CommonRules {
22-
fn rewrite_rules(&self) -> Vec<Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis>> {
22+
fn rewrite_rules(&self) -> Vec<CubeRewrite> {
2323
let mut rules = vec![];
2424

2525
if Rewriter::sql_push_down_enabled() {

rust/cubesql/cubesql/src/compile/rewrite/rules/dates.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ use super::utils;
22
use crate::{
33
compile::rewrite::{
44
alias_expr,
5-
analysis::{ConstantFolding, LogicalPlanAnalysis, OriginalExpr},
5+
analysis::{ConstantFolding, OriginalExpr},
66
binary_expr, cast_expr, cast_expr_explicit, column_expr, fun_expr, literal_expr,
77
literal_int, literal_string, negative_expr, original_expr_name, rewrite,
8-
rewriter::{CubeEGraph, RewriteRules},
8+
rewriter::{CubeEGraph, CubeRewrite, RewriteRules},
99
rules::utils::DeltaTimeUnitToken,
1010
to_day_interval_expr, transform_original_expr_to_alias, transforming_rewrite,
1111
transforming_rewrite_with_root, udf_expr, AliasExprAlias, CastExprDataType,
@@ -19,15 +19,15 @@ use datafusion::{
1919
logical_plan::DFSchema,
2020
scalar::ScalarValue,
2121
};
22-
use egg::{Id, Rewrite, Subst};
22+
use egg::{Id, Subst};
2323
use std::{convert::TryFrom, fmt::Display, sync::Arc};
2424

2525
pub struct DateRules {
2626
config_obj: Arc<dyn ConfigObj>,
2727
}
2828

2929
impl RewriteRules for DateRules {
30-
fn rewrite_rules(&self) -> Vec<Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis>> {
30+
fn rewrite_rules(&self) -> Vec<CubeRewrite> {
3131
vec![
3232
// TODO ?interval
3333
rewrite(

rust/cubesql/cubesql/src/compile/rewrite/rules/filters.rs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ use super::utils;
22
use crate::{
33
compile::rewrite::{
44
alias_expr,
5-
analysis::{ConstantFolding, LogicalPlanAnalysis, Member, OriginalExpr},
5+
analysis::{ConstantFolding, Member, OriginalExpr},
66
between_expr, binary_expr, case_expr, case_expr_var_arg, cast_expr, change_user_member,
77
column_expr, cube_scan, cube_scan_filters, cube_scan_filters_empty_tail, cube_scan_members,
88
dimension_expr, expr_column_name, filter, filter_member, filter_op, filter_op_filters,
99
filter_op_filters_empty_tail, filter_replacer, filter_simplify_replacer, fun_expr,
1010
fun_expr_args_legacy, fun_expr_var_arg, inlist_expr, inlist_expr_list, is_not_null_expr,
1111
is_null_expr, like_expr, limit, list_rewrite, literal_bool, literal_expr, literal_int,
1212
literal_string, measure_expr, negative_expr, not_expr, projection, rewrite,
13-
rewriter::{CubeEGraph, RewriteRules},
13+
rewriter::{CubeEGraph, CubeRewrite, RewriteRules},
1414
scalar_fun_expr_args_empty_tail, segment_member, time_dimension_date_range_replacer,
1515
time_dimension_expr, transform_original_expr_to_alias, transforming_chain_rewrite,
1616
transforming_rewrite, transforming_rewrite_with_root, udf_expr, udf_expr_var_arg,
@@ -45,7 +45,7 @@ use datafusion::{
4545
logical_plan::{Column, Expr, Operator},
4646
scalar::ScalarValue,
4747
};
48-
use egg::{Rewrite, Subst, Var};
48+
use egg::{Subst, Var};
4949
use std::{
5050
collections::HashSet,
5151
fmt::Display,
@@ -66,7 +66,7 @@ impl FilterRules {
6666
}
6767

6868
impl RewriteRules for FilterRules {
69-
fn rewrite_rules(&self) -> Vec<Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis>> {
69+
fn rewrite_rules(&self) -> Vec<CubeRewrite> {
7070
let mut rules = vec![
7171
transforming_rewrite(
7272
"push-down-filter",
@@ -4992,9 +4992,7 @@ impl FilterRules {
49924992
}
49934993
}
49944994

4995-
fn filter_simplify_push_down(
4996-
node_type: impl Display,
4997-
) -> Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis> {
4995+
fn filter_simplify_push_down(node_type: impl Display) -> CubeRewrite {
49984996
rewrite(
49994997
&format!("filter-simplify-{}-push-down", node_type),
50004998
filter_simplify_replacer(format!("({} ?left ?right)", node_type)),
@@ -5007,9 +5005,7 @@ fn filter_simplify_push_down(
50075005
)
50085006
}
50095007

5010-
fn filter_simplify_push_down_tail(
5011-
node_type: impl Display,
5012-
) -> Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis> {
5008+
fn filter_simplify_push_down_tail(node_type: impl Display) -> CubeRewrite {
50135009
rewrite(
50145010
&format!("filter-simplify-{}-empty-tail-push-down", node_type),
50155011
filter_simplify_replacer(node_type.to_string()),

rust/cubesql/cubesql/src/compile/rewrite/rules/members.rs

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
use crate::{
22
compile::rewrite::{
33
agg_fun_expr, aggregate, alias_expr, all_members,
4-
analysis::{
5-
ConstantFolding, LogicalPlanAnalysis, LogicalPlanData, MemberNamesToExpr, OriginalExpr,
6-
},
4+
analysis::{ConstantFolding, LogicalPlanData, MemberNamesToExpr, OriginalExpr},
75
binary_expr, cast_expr, change_user_expr, column_expr, cross_join, cube_scan,
86
cube_scan_filters_empty_tail, cube_scan_members, cube_scan_members_empty_tail,
97
cube_scan_order_empty_tail, dimension_expr, expr_column_name, fun_expr, join, like_expr,
108
limit, list_concat_pushdown_replacer, list_concat_pushup_replacer, literal_expr,
119
literal_member, measure_expr, member_pushdown_replacer, member_replacer,
1210
merged_members_replacer, original_expr_name, projection, referenced_columns, rewrite,
13-
rewriter::{CubeEGraph, RewriteRules},
11+
rewriter::{CubeEGraph, CubeRewrite, RewriteRules},
1412
rules::{
1513
replacer_flat_push_down_node_substitute_rules, replacer_push_down_node,
1614
replacer_push_down_node_substitute_rules, utils,
@@ -40,7 +38,7 @@ use datafusion::{
4038
physical_plan::aggregates::AggregateFunction,
4139
scalar::ScalarValue,
4240
};
43-
use egg::{Id, Rewrite, Subst, Var};
41+
use egg::{Id, Subst, Var};
4442
use itertools::{EitherOrBoth, Itertools};
4543
use std::{
4644
collections::{HashMap, HashSet},
@@ -56,7 +54,7 @@ pub struct MemberRules {
5654
}
5755

5856
impl RewriteRules for MemberRules {
59-
fn rewrite_rules(&self) -> Vec<Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis>> {
57+
fn rewrite_rules(&self) -> Vec<CubeRewrite> {
6058
let mut rules = vec![
6159
transforming_rewrite(
6260
"cube-scan",
@@ -442,7 +440,7 @@ impl MemberRules {
442440
name: &str,
443441
member_fn: impl Fn(&str) -> String,
444442
relation: Option<&'static str>,
445-
) -> Vec<Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis>> {
443+
) -> Vec<CubeRewrite> {
446444
vec![
447445
transforming_rewrite(
448446
&format!("member-pushdown-replacer-column-{}", name),
@@ -477,7 +475,7 @@ impl MemberRules {
477475
]
478476
}
479477

480-
fn member_pushdown_rules(&self) -> Vec<Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis>> {
478+
fn member_pushdown_rules(&self) -> Vec<CubeRewrite> {
481479
let mut rules = Vec::new();
482480
let member_replacer_fn = |members| {
483481
member_pushdown_replacer(
@@ -931,10 +929,7 @@ impl MemberRules {
931929
),
932930
));
933931

934-
fn list_concat_terminal(
935-
name: &str,
936-
member_fn: String,
937-
) -> Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis> {
932+
fn list_concat_terminal(name: &str, member_fn: String) -> CubeRewrite {
938933
rewrite(
939934
&format!("list-concat-terminal-{}", name),
940935
list_concat_pushdown_replacer(member_fn.to_string()),
@@ -1001,7 +996,7 @@ impl MemberRules {
1001996
}
1002997

1003998
pub fn measure_rewrites(
1004-
rules: &mut Vec<Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis>>,
999+
rules: &mut Vec<CubeRewrite>,
10051000
pushdown_measure_rewrite: impl Fn(
10061001
&'static str,
10071002
String,
@@ -1010,7 +1005,7 @@ impl MemberRules {
10101005
Option<&'static str>,
10111006
Option<&'static str>,
10121007
Option<&'static str>,
1013-
) -> Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis>,
1008+
) -> CubeRewrite,
10141009
) {
10151010
rules.push(pushdown_measure_rewrite(
10161011
"member-pushdown-replacer-agg-fun",
@@ -1760,7 +1755,7 @@ impl MemberRules {
17601755
distinct_var: Option<&'static str>,
17611756
fun_var: Option<&'static str>,
17621757
cast_data_type_var: Option<&'static str>,
1763-
) -> Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis> {
1758+
) -> CubeRewrite {
17641759
transforming_chain_rewrite(
17651760
&format!("measure-{}", name),
17661761
member_replacer("?aggr_expr", "?alias_to_cube", "?aliases"),
@@ -2761,7 +2756,7 @@ impl MemberRules {
27612756
right_members_expr: String,
27622757
left_members: &'static str,
27632758
right_members: &'static str,
2764-
) -> Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis> {
2759+
) -> CubeRewrite {
27652760
transforming_rewrite(
27662761
&format!("push-down-cross-join-to-cube-scan-{}", name),
27672762
cross_join(

rust/cubesql/cubesql/src/compile/rewrite/rules/mod.rs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
use crate::compile::rewrite::{
2-
analysis::LogicalPlanAnalysis, list_rewrite, list_rewrite_with_lists,
3-
list_rewrite_with_lists_and_vars, rewrite, ListApplierListPattern, ListPattern, ListType,
4-
LogicalPlanLanguage,
2+
list_rewrite, list_rewrite_with_lists, list_rewrite_with_lists_and_vars, rewrite,
3+
rewriter::CubeRewrite, ListApplierListPattern, ListPattern, ListType,
54
};
6-
use egg::Rewrite;
75

86
pub mod case;
97
pub mod common;
@@ -22,7 +20,7 @@ pub fn replacer_push_down_node(
2220
list_node: &str,
2321
replacer_node: impl Fn(String) -> String,
2422
include_tail: bool,
25-
) -> Vec<Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis>> {
23+
) -> Vec<CubeRewrite> {
2624
let push_down_rule = rewrite(
2725
&format!("{}-push-down", name),
2826
replacer_node(format!("({} ?left ?right)", list_node)),
@@ -52,7 +50,7 @@ pub fn replacer_flat_push_down_node(
5250
list_type: ListType,
5351
replacer_node: impl Fn(String) -> String,
5452
include_tail: bool,
55-
) -> Vec<Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis>> {
53+
) -> Vec<CubeRewrite> {
5654
let push_down_rule = list_rewrite(
5755
&format!("{}-push-down", name),
5856
list_type.clone(),
@@ -86,7 +84,7 @@ pub fn replacer_pull_up_node(
8684
list_node: &str,
8785
substitute_list_node: &str,
8886
replacer_node: impl Fn(String) -> String,
89-
) -> Vec<Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis>> {
87+
) -> Vec<CubeRewrite> {
9088
let pull_up_rule = rewrite(
9189
&format!("{}-pull-up", name),
9290
format!(
@@ -106,7 +104,7 @@ pub fn replacer_flat_pull_up_node(
106104
substitute_list_type: ListType,
107105
replacer_node: impl Fn(String) -> String,
108106
top_level_elem_vars: &[&str],
109-
) -> Vec<Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis>> {
107+
) -> Vec<CubeRewrite> {
110108
let pull_up_rule = list_rewrite_with_lists_and_vars(
111109
&format!("{}-pull-up", name),
112110
list_type,
@@ -131,7 +129,7 @@ pub fn replacer_push_down_node_substitute_rules(
131129
list_node: &str,
132130
substitute_node: &str,
133131
replacer_node: impl Fn(String) -> String,
134-
) -> Vec<Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis>> {
132+
) -> Vec<CubeRewrite> {
135133
vec![
136134
rewrite(
137135
&format!("{}-push-down", name),
@@ -156,7 +154,7 @@ pub fn replacer_flat_push_down_node_substitute_rules(
156154
list_type: ListType,
157155
substitute_type: ListType,
158156
replacer_node: impl Fn(String) -> String,
159-
) -> Vec<Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis>> {
157+
) -> Vec<CubeRewrite> {
160158
vec![
161159
list_rewrite_with_lists(
162160
&format!("{}-push-down", name),

rust/cubesql/cubesql/src/compile/rewrite/rules/old_split.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ use crate::{
44
agg_fun_expr, aggr_aggr_expr_empty_tail, aggr_aggr_expr_legacy as aggr_aggr_expr,
55
aggr_group_expr_empty_tail, aggr_group_expr_legacy as aggr_group_expr, aggregate,
66
alias_expr,
7-
analysis::{ConstantFolding, LogicalPlanAnalysis, OriginalExpr},
7+
analysis::{ConstantFolding, OriginalExpr},
88
binary_expr, cast_expr, cast_expr_explicit, column_expr, cube_scan, event_notification,
99
fun_expr, group_aggregate_split_replacer, group_expr_split_replacer,
1010
inner_aggregate_split_replacer, is_not_null_expr, is_null_expr, literal_expr,
1111
literal_float, literal_int, literal_string, original_expr_name,
1212
outer_aggregate_split_replacer, outer_projection_split_replacer, projection,
1313
projection_expr_empty_tail, projection_expr_legacy as projection_expr, rewrite,
14-
rewriter::{CubeEGraph, RewriteRules},
14+
rewriter::{CubeEGraph, CubeRewrite, RewriteRules},
1515
rules::members::MemberRules,
1616
transforming_chain_rewrite, transforming_rewrite, udf_expr, AggregateFunctionExprDistinct,
1717
AggregateFunctionExprFun, AliasExprAlias, BinaryExprOp, CastExprDataType, ColumnExprColumn,
@@ -30,7 +30,7 @@ use datafusion::{
3030
physical_plan::{aggregates::AggregateFunction, functions::BuiltinScalarFunction},
3131
scalar::ScalarValue,
3232
};
33-
use egg::{Id, Rewrite, Subst, Var};
33+
use egg::{Id, Subst, Var};
3434
use std::{fmt::Display, ops::Index, sync::Arc};
3535

3636
pub struct OldSplitRules {
@@ -39,7 +39,7 @@ pub struct OldSplitRules {
3939
}
4040

4141
impl RewriteRules for OldSplitRules {
42-
fn rewrite_rules(&self) -> Vec<Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis>> {
42+
fn rewrite_rules(&self) -> Vec<CubeRewrite> {
4343
let mut rules = vec![
4444
transforming_rewrite(
4545
"split-projection-aggregate",
@@ -4667,7 +4667,7 @@ impl OldSplitRules {
46674667
is_measure: bool,
46684668
is_dimension: bool,
46694669
unwrap_agg_chain: Option<Vec<(&'a str, String)>>,
4670-
) -> Vec<Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis>>
4670+
) -> Vec<CubeRewrite>
46714671
where
46724672
M: Fn(fn(D, DD) -> String) -> String,
46734673
C: Fn(fn(D, DD) -> String) -> Vec<(&'a str, String)>,

rust/cubesql/cubesql/src/compile/rewrite/rules/order.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
use crate::{
22
compile::rewrite::{
3-
analysis::{LogicalPlanAnalysis, OriginalExpr},
3+
analysis::OriginalExpr,
44
column_name_to_member_vec, cube_scan, cube_scan_order, cube_scan_order_empty_tail,
55
expr_column_name, order, order_replacer, referenced_columns, rewrite,
6-
rewriter::{CubeEGraph, RewriteRules},
6+
rewriter::{CubeEGraph, CubeRewrite, RewriteRules},
77
sort, sort_exp, sort_exp_empty_tail, sort_expr, transforming_rewrite, LogicalPlanLanguage,
88
OrderAsc, OrderMember, OrderReplacerColumnNameToMember, SortExprAsc,
99
},
1010
var, var_iter,
1111
};
12-
use egg::{Rewrite, Subst};
12+
use egg::Subst;
1313
use std::ops::{Index, IndexMut};
1414

1515
pub struct OrderRules {}
1616

1717
impl RewriteRules for OrderRules {
18-
fn rewrite_rules(&self) -> Vec<Rewrite<LogicalPlanLanguage, LogicalPlanAnalysis>> {
18+
fn rewrite_rules(&self) -> Vec<CubeRewrite> {
1919
vec![
2020
transforming_rewrite(
2121
"push-down-sort",

0 commit comments

Comments
 (0)