@@ -10,18 +10,18 @@ use fxhash::hash;
1010use serde:: { Deserialize , Serialize } ;
1111
1212#[ derive( Clone , Debug ) ]
13- pub enum LogicalExpression {
13+ pub enum DefaultLogicalExpression {
1414 Scan ( Scan ) ,
1515 Filter ( Filter ) ,
1616 Join ( Join ) ,
1717}
1818
19- impl LogicalExpression {
19+ impl DefaultLogicalExpression {
2020 pub fn kind ( & self ) -> i16 {
2121 match self {
22- LogicalExpression :: Scan ( _) => 0 ,
23- LogicalExpression :: Filter ( _) => 1 ,
24- LogicalExpression :: Join ( _) => 2 ,
22+ DefaultLogicalExpression :: Scan ( _) => 0 ,
23+ DefaultLogicalExpression :: Filter ( _) => 1 ,
24+ DefaultLogicalExpression :: Join ( _) => 2 ,
2525 }
2626 }
2727
@@ -46,11 +46,11 @@ impl LogicalExpression {
4646
4747 let kind = self . kind ( ) as u16 as usize ;
4848 let hash = match self {
49- LogicalExpression :: Scan ( scan) => hash ( scan. table . as_str ( ) ) ,
50- LogicalExpression :: Filter ( filter) => {
49+ DefaultLogicalExpression :: Scan ( scan) => hash ( scan. table . as_str ( ) ) ,
50+ DefaultLogicalExpression :: Filter ( filter) => {
5151 hash ( & rewrite ( filter. child ) . 0 ) ^ hash ( filter. expression . as_str ( ) )
5252 }
53- LogicalExpression :: Join ( join) => {
53+ DefaultLogicalExpression :: Join ( join) => {
5454 // Make sure that there is a difference between `Join(A, B)` and `Join(B, A)`.
5555 hash ( & ( rewrite ( join. left ) . 0 + 1 ) )
5656 ^ hash ( & ( rewrite ( join. right ) . 0 + 2 ) )
@@ -80,14 +80,21 @@ impl LogicalExpression {
8080 } ;
8181
8282 match ( self , other) {
83- ( LogicalExpression :: Scan ( scan_left) , LogicalExpression :: Scan ( scan_right) ) => {
84- scan_left. table == scan_right. table
85- }
86- ( LogicalExpression :: Filter ( filter_left) , LogicalExpression :: Filter ( filter_right) ) => {
83+ (
84+ DefaultLogicalExpression :: Scan ( scan_left) ,
85+ DefaultLogicalExpression :: Scan ( scan_right) ,
86+ ) => scan_left. table == scan_right. table ,
87+ (
88+ DefaultLogicalExpression :: Filter ( filter_left) ,
89+ DefaultLogicalExpression :: Filter ( filter_right) ,
90+ ) => {
8791 rewrite ( filter_left. child ) == rewrite ( filter_right. child )
8892 && filter_left. expression == filter_right. expression
8993 }
90- ( LogicalExpression :: Join ( join_left) , LogicalExpression :: Join ( join_right) ) => {
94+ (
95+ DefaultLogicalExpression :: Join ( join_left) ,
96+ DefaultLogicalExpression :: Join ( join_right) ,
97+ ) => {
9198 rewrite ( join_left. left ) == rewrite ( join_right. left )
9299 && rewrite ( join_left. right ) == rewrite ( join_right. right )
93100 && join_left. expression == join_right. expression
@@ -98,9 +105,9 @@ impl LogicalExpression {
98105
99106 pub fn children ( & self ) -> Vec < GroupId > {
100107 match self {
101- LogicalExpression :: Scan ( _) => vec ! [ ] ,
102- LogicalExpression :: Filter ( filter) => vec ! [ filter. child] ,
103- LogicalExpression :: Join ( join) => vec ! [ join. left, join. right] ,
108+ DefaultLogicalExpression :: Scan ( _) => vec ! [ ] ,
109+ DefaultLogicalExpression :: Filter ( filter) => vec ! [ filter. child] ,
110+ DefaultLogicalExpression :: Join ( join) => vec ! [ join. left, join. right] ,
104111 }
105112 }
106113}
@@ -124,7 +131,7 @@ pub struct Join {
124131}
125132
126133/// TODO Use a macro.
127- impl From < logical_expression:: Model > for LogicalExpression {
134+ impl From < logical_expression:: Model > for DefaultLogicalExpression {
128135 fn from ( value : logical_expression:: Model ) -> Self {
129136 match value. kind {
130137 0 => Self :: Scan (
@@ -145,8 +152,8 @@ impl From<logical_expression::Model> for LogicalExpression {
145152}
146153
147154/// TODO Use a macro.
148- impl From < LogicalExpression > for logical_expression:: Model {
149- fn from ( value : LogicalExpression ) -> logical_expression:: Model {
155+ impl From < DefaultLogicalExpression > for logical_expression:: Model {
156+ fn from ( value : DefaultLogicalExpression ) -> logical_expression:: Model {
150157 fn create_logical_expression (
151158 kind : i16 ,
152159 data : serde_json:: Value ,
@@ -161,15 +168,15 @@ impl From<LogicalExpression> for logical_expression::Model {
161168
162169 let kind = value. kind ( ) ;
163170 match value {
164- LogicalExpression :: Scan ( scan) => create_logical_expression (
171+ DefaultLogicalExpression :: Scan ( scan) => create_logical_expression (
165172 kind,
166173 serde_json:: to_value ( scan) . expect ( "unable to serialize logical `Scan`" ) ,
167174 ) ,
168- LogicalExpression :: Filter ( filter) => create_logical_expression (
175+ DefaultLogicalExpression :: Filter ( filter) => create_logical_expression (
169176 kind,
170177 serde_json:: to_value ( filter) . expect ( "unable to serialize logical `Filter`" ) ,
171178 ) ,
172- LogicalExpression :: Join ( join) => create_logical_expression (
179+ DefaultLogicalExpression :: Join ( join) => create_logical_expression (
173180 kind,
174181 serde_json:: to_value ( join) . expect ( "unable to serialize logical `Join`" ) ,
175182 ) ,
@@ -183,16 +190,16 @@ pub use build::*;
183190#[ cfg( test) ]
184191mod build {
185192 use super :: * ;
186- use crate :: expression:: LogicalExpression ;
193+ use crate :: expression:: DefaultLogicalExpression ;
187194
188- pub fn scan ( table_schema : String ) -> LogicalExpression {
189- LogicalExpression :: Scan ( Scan {
195+ pub fn scan ( table_schema : String ) -> DefaultLogicalExpression {
196+ DefaultLogicalExpression :: Scan ( Scan {
190197 table : table_schema,
191198 } )
192199 }
193200
194- pub fn filter ( child_group : GroupId , expression : String ) -> LogicalExpression {
195- LogicalExpression :: Filter ( Filter {
201+ pub fn filter ( child_group : GroupId , expression : String ) -> DefaultLogicalExpression {
202+ DefaultLogicalExpression :: Filter ( Filter {
196203 child : child_group,
197204 expression,
198205 } )
@@ -202,8 +209,8 @@ mod build {
202209 left_group : GroupId ,
203210 right_group : GroupId ,
204211 expression : String ,
205- ) -> LogicalExpression {
206- LogicalExpression :: Join ( Join {
212+ ) -> DefaultLogicalExpression {
213+ DefaultLogicalExpression :: Join ( Join {
207214 left : left_group,
208215 right : right_group,
209216 expression,
0 commit comments