Skip to content

Commit 69760a3

Browse files
authored
minor: Refactor binary expr serde to reduce code duplication (apache#1053)
* Use one BinaryExpr definition in protobuf * refactor And * refactor remaining binary expressions * update test * update test
1 parent ac4223c commit 69760a3

File tree

3 files changed

+142
-435
lines changed

3 files changed

+142
-435
lines changed

native/core/src/execution/datafusion/planner.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2388,7 +2388,7 @@ mod tests {
23882388
};
23892389

23902390
let expr = spark_expression::Expr {
2391-
expr_struct: Some(Eq(Box::new(spark_expression::Equal {
2391+
expr_struct: Some(Eq(Box::new(spark_expression::BinaryExpr {
23922392
left: Some(Box::new(left)),
23932393
right: Some(Box::new(right)),
23942394
}))),

native/proto/src/proto/expr.proto

Lines changed: 21 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -33,41 +33,41 @@ message Expr {
3333
Multiply multiply = 6;
3434
Divide divide = 7;
3535
Cast cast = 8;
36-
Equal eq = 9;
37-
NotEqual neq = 10;
38-
GreaterThan gt = 11;
39-
GreaterThanEqual gt_eq = 12;
40-
LessThan lt = 13;
41-
LessThanEqual lt_eq = 14;
36+
BinaryExpr eq = 9;
37+
BinaryExpr neq = 10;
38+
BinaryExpr gt = 11;
39+
BinaryExpr gt_eq = 12;
40+
BinaryExpr lt = 13;
41+
BinaryExpr lt_eq = 14;
4242
IsNull is_null = 15;
4343
IsNotNull is_not_null = 16;
44-
And and = 17;
45-
Or or = 18;
44+
BinaryExpr and = 17;
45+
BinaryExpr or = 18;
4646
SortOrder sort_order = 19;
4747
Substring substring = 20;
4848
StringSpace string_space = 21;
4949
Hour hour = 22;
5050
Minute minute = 23;
5151
Second second = 24;
5252
CheckOverflow check_overflow = 25;
53-
Like like = 26;
54-
StartsWith startsWith = 27;
55-
EndsWith endsWith = 28;
56-
Contains contains = 29;
57-
RLike rlike = 30;
53+
BinaryExpr like = 26;
54+
BinaryExpr startsWith = 27;
55+
BinaryExpr endsWith = 28;
56+
BinaryExpr contains = 29;
57+
BinaryExpr rlike = 30;
5858
ScalarFunc scalarFunc = 31;
59-
EqualNullSafe eqNullSafe = 32;
60-
NotEqualNullSafe neqNullSafe = 33;
61-
BitwiseAnd bitwiseAnd = 34;
62-
BitwiseOr bitwiseOr = 35;
63-
BitwiseXor bitwiseXor = 36;
59+
BinaryExpr eqNullSafe = 32;
60+
BinaryExpr neqNullSafe = 33;
61+
BinaryExpr bitwiseAnd = 34;
62+
BinaryExpr bitwiseOr = 35;
63+
BinaryExpr bitwiseXor = 36;
6464
Remainder remainder = 37;
6565
CaseWhen caseWhen = 38;
6666
In in = 39;
6767
Not not = 40;
6868
UnaryMinus unary_minus = 41;
69-
BitwiseShiftRight bitwiseShiftRight = 42;
70-
BitwiseShiftLeft bitwiseShiftLeft = 43;
69+
BinaryExpr bitwiseShiftRight = 42;
70+
BinaryExpr bitwiseShiftLeft = 43;
7171
IfExpr if = 44;
7272
NormalizeNaNAndZero normalize_nan_and_zero = 45;
7373
TruncDate truncDate = 46;
@@ -269,52 +269,7 @@ message Cast {
269269
bool allow_incompat = 5;
270270
}
271271

272-
message Equal {
273-
Expr left = 1;
274-
Expr right = 2;
275-
}
276-
277-
message NotEqual {
278-
Expr left = 1;
279-
Expr right = 2;
280-
}
281-
282-
message EqualNullSafe {
283-
Expr left = 1;
284-
Expr right = 2;
285-
}
286-
287-
message NotEqualNullSafe {
288-
Expr left = 1;
289-
Expr right = 2;
290-
}
291-
292-
message GreaterThan {
293-
Expr left = 1;
294-
Expr right = 2;
295-
}
296-
297-
message GreaterThanEqual {
298-
Expr left = 1;
299-
Expr right = 2;
300-
}
301-
302-
message LessThan {
303-
Expr left = 1;
304-
Expr right = 2;
305-
}
306-
307-
message LessThanEqual {
308-
Expr left = 1;
309-
Expr right = 2;
310-
}
311-
312-
message And {
313-
Expr left = 1;
314-
Expr right = 2;
315-
}
316-
317-
message Or {
272+
message BinaryExpr {
318273
Expr left = 1;
319274
Expr right = 2;
320275
}
@@ -384,62 +339,12 @@ message CheckOverflow {
384339
bool fail_on_error = 3;
385340
}
386341

387-
message Like {
388-
Expr left = 1;
389-
Expr right = 2;
390-
}
391-
392-
message RLike {
393-
Expr left = 1;
394-
Expr right = 2;
395-
}
396-
397-
message StartsWith {
398-
Expr left = 1;
399-
Expr right = 2;
400-
}
401-
402-
message EndsWith {
403-
Expr left = 1;
404-
Expr right = 2;
405-
}
406-
407-
message Contains {
408-
Expr left = 1;
409-
Expr right = 2;
410-
}
411-
412342
message ScalarFunc {
413343
string func = 1;
414344
repeated Expr args = 2;
415345
DataType return_type = 3;
416346
}
417347

418-
message BitwiseAnd {
419-
Expr left = 1;
420-
Expr right = 2;
421-
}
422-
423-
message BitwiseOr {
424-
Expr left = 1;
425-
Expr right = 2;
426-
}
427-
428-
message BitwiseXor {
429-
Expr left = 1;
430-
Expr right = 2;
431-
}
432-
433-
message BitwiseShiftRight {
434-
Expr left = 1;
435-
Expr right = 2;
436-
}
437-
438-
message BitwiseShiftLeft {
439-
Expr left = 1;
440-
Expr right = 2;
441-
}
442-
443348
message CaseWhen {
444349
// The expr field is added to be consistent with CaseExpr definition in DataFusion.
445350
// This field is not really used. When constructing a CaseExpr, this expr field

0 commit comments

Comments
 (0)