This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch auto-pick-45690-branch-3.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/auto-pick-45690-branch-3.0 by 
this push:
     new 0b0392de423 [test](nereids) add arthmetic comparison ut (#45690)
0b0392de423 is described below

commit 0b0392de423f91bd5809e170688deb20ac342e16
Author: yujun <yu...@selectdb.com>
AuthorDate: Tue Dec 24 10:23:37 2024 +0800

    [test](nereids) add arthmetic comparison ut (#45690)
    
    ### What problem does this PR solve?
    
    Issue Number: close #xxx
    
    Related PR: #xxx
    
    Problem Summary:
---
 .../SimplifyArithmeticComparisonRuleTest.java      | 193 ++++++++++++++++-----
 1 file changed, 147 insertions(+), 46 deletions(-)

diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/rules/SimplifyArithmeticComparisonRuleTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/rules/SimplifyArithmeticComparisonRuleTest.java
index 4d932187611..32857d4f4ae 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/rules/SimplifyArithmeticComparisonRuleTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/rules/SimplifyArithmeticComparisonRuleTest.java
@@ -21,70 +21,171 @@ import 
org.apache.doris.nereids.rules.expression.ExpressionRewrite;
 import org.apache.doris.nereids.rules.expression.ExpressionRewriteTestHelper;
 import org.apache.doris.nereids.rules.expression.ExpressionRuleExecutor;
 import org.apache.doris.nereids.trees.expressions.Expression;
-import org.apache.doris.nereids.trees.expressions.Slot;
-import org.apache.doris.nereids.trees.expressions.SlotReference;
-import org.apache.doris.nereids.types.IntegerType;
 
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Maps;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
-import java.util.HashMap;
-import java.util.Map;
-
 class SimplifyArithmeticComparisonRuleTest extends ExpressionRewriteTestHelper 
{
 
     @Test
-    public void testProcess() {
-        Map<String, Slot> nameToSlot = new HashMap<>();
-        nameToSlot.put("a", new SlotReference("a", IntegerType.INSTANCE));
+    public void testNumeric() {
         executor = new ExpressionRuleExecutor(ImmutableList.of(
                 
ExpressionRewrite.bottomUp(SimplifyArithmeticComparisonRule.INSTANCE)
         ));
-        assertRewriteAfterSimplify("a + 1 > 1", "a > cast((1 - 1) as INT)", 
nameToSlot);
-        assertRewriteAfterSimplify("a - 1 > 1", "a > cast((1 + 1) as INT)", 
nameToSlot);
-        assertRewriteAfterSimplify("a / -2 > 1", "cast((1 * -2) as INT) > a", 
nameToSlot);
+
+        // test tinyint type
+        assertRewriteAfterSimplify("TA + 2 > 1", "cast(TA as SMALLINT) > (1 - 
2)");
+        assertRewriteAfterSimplify("TA - 2 > 1", "cast(TA as SMALLINT) > (1 + 
2)");
+        assertRewriteAfterSimplify("1 + TA > 2", "cast(TA as SMALLINT) > (2 - 
1)");
+        assertRewriteAfterSimplify("-1 + TA > 2", "cast(TA as SMALLINT) > (2 - 
(-1))");
+        assertRewriteAfterSimplify("1 - TA > 2", "cast(TA as SMALLINT) < (1 - 
2))");
+        assertRewriteAfterSimplify("-1 - TA > 2", "cast(TA as SMALLINT) < 
((-1) - 2)");
+        assertRewriteAfterSimplify("2 * TA > 1", "((2 * TA) > 1)");
+        assertRewriteAfterSimplify("-2 * TA > 1", "((-2 * TA) > 1)");
+        assertRewriteAfterSimplify("2 / TA > 1", "((2 / TA) > 1)");
+        assertRewriteAfterSimplify("-2 / TA > 1", "((-2 / TA) > 1)");
+        assertRewriteAfterSimplify("TA * 2 > 1", "((TA * 2) > 1)");
+        assertRewriteAfterSimplify("TA * (-2) > 1", "((TA * (-2)) > 1)");
+        assertRewriteAfterSimplify("TA / 2 > 1", "cast(TA as SMALLINT) > (1 * 
2)");
+        assertRewriteAfterSimplify("TA / -2 > 1", "(1 * -2) > cast(TA as 
SMALLINT)");
+
+        // test integer type
+        assertRewriteAfterSimplify("IA + 2 > 1", "IA > cast((1 - 2) as INT)");
+        assertRewriteAfterSimplify("IA - 2 > 1", "IA > cast((1 + 2) as INT)");
+        assertRewriteAfterSimplify("1 + IA > 2", "IA > cast((2 - 1) as INT)");
+        assertRewriteAfterSimplify("-1 + IA > 2", "IA > cast((2 - (-1)) as 
INT)");
+        assertRewriteAfterSimplify("1 - IA > 2", "IA < cast((1 - 2) as INT)");
+        assertRewriteAfterSimplify("-1 - IA > 2", "IA < cast(((-1) - 2) as 
INT)");
+        assertRewriteAfterSimplify("2 * IA > 1", "((2 * IA) > 1)");
+        assertRewriteAfterSimplify("-2 * IA > 1", "((-2 * IA) > 1)");
+        assertRewriteAfterSimplify("2 / IA > 1", "((2 / IA) > 1)");
+        assertRewriteAfterSimplify("-2 / IA > 1", "((-2 / IA) > 1)");
+        assertRewriteAfterSimplify("IA * 2 > 1", "((IA * 2) > 1)");
+        assertRewriteAfterSimplify("IA * (-2) > 1", "((IA * (-2)) > 1)");
+        assertRewriteAfterSimplify("IA / 2 > 1", "(IA > cast((1 * 2) as 
INT))");
+        assertRewriteAfterSimplify("IA / -2 > 1", "cast((1 * -2) as INT) > 
IA");
 
         // test integer type
-        assertRewriteAfterSimplify("1 + a > 2", "a > cast((2 - 1) as INT)", 
nameToSlot);
-        assertRewriteAfterSimplify("-1 + a > 2", "a > cast((2 - (-1)) as 
INT)", nameToSlot);
-        assertRewriteAfterSimplify("1 - a > 2", "a < cast((1 - 2) as INT)", 
nameToSlot);
-        assertRewriteAfterSimplify("-1 - a > 2", "a < cast(((-1) - 2) as 
INT)", nameToSlot);
-        assertRewriteAfterSimplify("2 * a > 1", "((2 * a) > 1)", nameToSlot);
-        assertRewriteAfterSimplify("-2 * a > 1", "((-2 * a) > 1)", nameToSlot);
-        assertRewriteAfterSimplify("2 / a > 1", "((2 / a) > 1)", nameToSlot);
-        assertRewriteAfterSimplify("-2 / a > 1", "((-2 / a) > 1)", nameToSlot);
-        assertRewriteAfterSimplify("a * 2 > 1", "((a * 2) > 1)", nameToSlot);
-        assertRewriteAfterSimplify("a * (-2) > 1", "((a * (-2)) > 1)", 
nameToSlot);
-        assertRewriteAfterSimplify("a / 2 > 1", "(a > cast((1 * 2) as INT))", 
nameToSlot);
+        assertRewriteAfterSimplify("TA + 2 > 200", "cast(TA as INT) > (200 - 
2)");
+        assertRewriteAfterSimplify("TA - 2 > 200", "cast(TA as INT) > (200 + 
2)");
+        assertRewriteAfterSimplify("1 + TA > 200", "cast(TA as INT) > (200 - 
1)");
+        assertRewriteAfterSimplify("-1 + TA > 200", "cast(TA as INT) > (200 - 
(-1))");
+        assertRewriteAfterSimplify("1 - TA > 200", "cast(TA as INT) < (1 - 
200))");
+        assertRewriteAfterSimplify("-1 - TA > 200", "cast(TA as INT) < ((-1) - 
200)");
+        assertRewriteAfterSimplify("2 * TA > 200", "((2 * TA) > 200)");
+        assertRewriteAfterSimplify("-2 * TA > 200", "((-2 * TA) > 200)");
+        assertRewriteAfterSimplify("2 / TA > 200", "((2 / TA) > 200)");
+        assertRewriteAfterSimplify("-2 / TA > 200", "((-2 / TA) > 200)");
+        assertRewriteAfterSimplify("TA * 2 > 200", "((TA * 2) > 200)");
+        assertRewriteAfterSimplify("TA * (-2) > 200", "((TA * (-2)) > 200)");
+        assertRewriteAfterSimplify("TA / 2 > 200", "cast(TA as INT) > (200 * 
2)");
+        assertRewriteAfterSimplify("TA / -2 > 200", "(200 * -2) > cast(TA as 
INT)");
 
         // test decimal type
-        assertRewriteAfterSimplify("1.1 + a > 2.22", "(cast(a as DECIMALV3(12, 
2)) > cast((2.22 - 1.1) as DECIMALV3(12, 2)))", nameToSlot);
-        assertRewriteAfterSimplify("-1.1 + a > 2.22", "(cast(a as 
DECIMALV3(12, 2)) > cast((2.22 - (-1.1)) as DECIMALV3(12, 2)))", nameToSlot);
-        assertRewriteAfterSimplify("1.1 - a > 2.22", "(cast(a as DECIMALV3(11, 
1)) < cast((1.1 - 2.22) as DECIMALV3(11, 1)))", nameToSlot);
-        assertRewriteAfterSimplify("-1.1 - a > 2.22", "(cast(a as 
DECIMALV3(11, 1)) < cast((-1.1 - 2.22) as DECIMALV3(11, 1)))", nameToSlot);
-        assertRewriteAfterSimplify("2.22 * a > 1.1", "((2.22 * a) > 1.1)", 
nameToSlot);
-        assertRewriteAfterSimplify("-2.22 * a > 1.1", "-2.22 * a > 1.1", 
nameToSlot);
-        assertRewriteAfterSimplify("2.22 / a > 1.1", "((2.22 / a) > 1.1)", 
nameToSlot);
-        assertRewriteAfterSimplify("-2.22 / a > 1.1", "((-2.22 / a) > 1.1)", 
nameToSlot);
-        assertRewriteAfterSimplify("a * 2.22 > 1.1", "a * 2.22 > 1.1", 
nameToSlot);
-        assertRewriteAfterSimplify("a * (-2.22) > 1.1", "a * (-2.22) > 1.1", 
nameToSlot);
-        assertRewriteAfterSimplify("a / 2.22 > 1.1", "(cast(a as DECIMALV3(13, 
3)) > cast((1.1 * 2.22) as DECIMALV3(13, 3)))", nameToSlot);
-        assertRewriteAfterSimplify("a / (-2.22) > 1.1", "(cast((1.1 * -2.22) 
as DECIMALV3(13, 3)) > cast(a as DECIMALV3(13, 3)))", nameToSlot);
-
-        // test (1 + a) can be processed
-        assertRewriteAfterSimplify("2 - (1 + a) > 3", "(a < ((2 - 3) - 1))", 
nameToSlot);
-        assertRewriteAfterSimplify("(1 - a) / 2 > 3", "(a < (1 - 6))", 
nameToSlot);
-        assertRewriteAfterSimplify("1 - a / 2 > 3", "(a < ((1 - 3) * 2))", 
nameToSlot);
-        assertRewriteAfterSimplify("(1 - (a + 4)) / 2 > 3", "(cast(a as 
BIGINT) < ((1 - 6) - 4))", nameToSlot);
-        assertRewriteAfterSimplify("2 * (1 + a) > 1", "(2 * (1 + a)) > 1", 
nameToSlot);
+        assertRewriteAfterSimplify("1.1 + IA > 2.22", "(cast(IA as 
DECIMALV3(12, 2)) > cast((2.22 - 1.1) as DECIMALV3(12, 2)))");
+        assertRewriteAfterSimplify("-1.1 + IA > 2.22", "(cast(IA as 
DECIMALV3(12, 2)) > cast((2.22 - (-1.1)) as DECIMALV3(12, 2)))");
+        assertRewriteAfterSimplify("1.1 - IA > 2.22", "(cast(IA as 
DECIMALV3(11, 1)) < cast((1.1 - 2.22) as DECIMALV3(11, 1)))");
+        assertRewriteAfterSimplify("-1.1 - IA > 2.22", "(cast(IA as 
DECIMALV3(11, 1)) < cast((-1.1 - 2.22) as DECIMALV3(11, 1)))");
+        assertRewriteAfterSimplify("2.22 * IA > 1.1", "((2.22 * IA) > 1.1)");
+        assertRewriteAfterSimplify("-2.22 * IA > 1.1", "-2.22 * IA > 1.1");
+        assertRewriteAfterSimplify("2.22 / IA > 1.1", "((2.22 / IA) > 1.1)");
+        assertRewriteAfterSimplify("-2.22 / IA > 1.1", "((-2.22 / IA) > 1.1)");
+        assertRewriteAfterSimplify("IA * 2.22 > 1.1", "IA * 2.22 > 1.1");
+        assertRewriteAfterSimplify("IA * (-2.22) > 1.1", "IA * (-2.22) > 1.1");
+        assertRewriteAfterSimplify("IA / 2.22 > 1.1", "(cast(IA as 
DECIMALV3(13, 3)) > cast((1.1 * 2.22) as DECIMALV3(13, 3)))");
+        assertRewriteAfterSimplify("IA / (-2.22) > 1.1", "(cast((1.1 * -2.22) 
as DECIMALV3(13, 3)) > cast(IA as DECIMALV3(13, 3)))");
+
+        // test (1 + IA) can be processed
+        assertRewriteAfterSimplify("2 - (1 + IA) > 3", "(IA < ((2 - 3) - 1))");
+        assertRewriteAfterSimplify("(1 - IA) / 2 > 3", "(IA < (1 - 6))");
+        assertRewriteAfterSimplify("1 - IA / 2 > 3", "(IA < ((1 - 3) * 2))");
+        assertRewriteAfterSimplify("(1 - (IA + 4)) / 2 > 3", "(cast(IA as 
BIGINT) < ((1 - 6) - 4))");
+        assertRewriteAfterSimplify("2 * (1 + IA) > 1", "(2 * (1 + IA)) > 1");
+
+        // test (IA + IB) can be processed
+        assertRewriteAfterSimplify("2 - (1 + (IA + IB)) > 3", "(IA + IB) < 
cast(((2 - 3) - 1) as BIGINT)");
+        assertRewriteAfterSimplify("(1 - (IA + IB)) / 2 > 3", "(IA + IB) < 
cast((1 - 6) as BIGINT)");
+        assertRewriteAfterSimplify("1 - (IA + IB) / 2 > 3", "(IA + IB) < 
cast(((1 - 3) * 2) as BIGINT)");
+        assertRewriteAfterSimplify("2 * (1 + (IA + IB)) > 1", "(2 * (1 + (IA + 
IB))) > 1");
+    }
+
+    @Test
+    public void testDateLike() {
+        executor = new ExpressionRuleExecutor(ImmutableList.of(
+                bottomUp(
+                        SimplifyArithmeticRule.INSTANCE,
+                        SimplifyArithmeticComparisonRule.INSTANCE
+                )
+        ));
+
+        // test datetimev2 type
+        assertRewriteAfterTypeCoercion("years_add(AA, 1) > '2021-01-01 
00:00:00'", "(years_add(AA, 1) > '2021-01-01 00:00:00')");
+        assertRewriteAfterTypeCoercion("years_sub(AA, 1) > '2021-01-01 
00:00:00'", "(years_sub(AA, 1) > '2021-01-01 00:00:00')");
+        assertRewriteAfterTypeCoercion("months_add(AA, 1) > '2021-01-01 
00:00:00'", "(months_add(AA, 1) > '2021-01-01 00:00:00')");
+        assertRewriteAfterTypeCoercion("months_sub(AA, 1) > '2021-01-01 
00:00:00'", "(months_sub(AA, 1) > '2021-01-01 00:00:00')");
+        assertRewriteAfterTypeCoercion("weeks_add(AA, 1) > '2021-01-01 
00:00:00'", "AA > weeks_sub('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("weeks_sub(AA, 1) > '2021-01-01 
00:00:00'", "AA > weeks_add('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("days_add(AA, 1) > '2021-01-01 
00:00:00'", "AA > days_sub('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("days_sub(AA, 1) > '2021-01-01 
00:00:00'", "AA > days_add('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("hours_add(AA, 1) > '2021-01-01 
00:00:00'", "AA > hours_sub('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("hours_sub(AA, 1) > '2021-01-01 
00:00:00'", "AA > hours_add('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("minutes_add(AA, 1) > '2021-01-01 
00:00:00'", "AA > minutes_sub('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("minutes_sub(AA, 1) > '2021-01-01 
00:00:00'", "AA > minutes_add('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("seconds_add(AA, 1) > '2021-01-01 
00:00:00'", "AA > seconds_sub('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("seconds_sub(AA, 1) > '2021-01-01 
00:00:00'", "AA > seconds_add('2021-01-01 00:00:00', 1)");
+
+        assertRewriteAfterTypeCoercion("years_add(AA, 1) > '2021-01-01'", 
"(years_add(AA, 1) > '2021-01-01 00:00:00')");
+        assertRewriteAfterTypeCoercion("years_sub(AA, 1) > '2021-01-01'", 
"(years_sub(AA, 1) > '2021-01-01 00:00:00')");
+        assertRewriteAfterTypeCoercion("months_add(AA, 1) > '2021-01-01'", 
"(months_add(AA, 1) > '2021-01-01 00:00:00')");
+        assertRewriteAfterTypeCoercion("months_sub(AA, 1) > '2021-01-01'", 
"(months_sub(AA, 1) > '2021-01-01 00:00:00')");
+        assertRewriteAfterTypeCoercion("weeks_add(AA, 1) > '2021-01-01'", "AA 
> weeks_sub('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("weeks_sub(AA, 1) > '2021-01-01'", "AA 
> weeks_add('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("days_add(AA, 1) > '2021-01-01'", "AA > 
days_sub('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("days_sub(AA, 1) > '2021-01-01'", "AA > 
days_add('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("hours_add(AA, 1) > '2021-01-01'", "AA 
> hours_sub('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("hours_sub(AA, 1) > '2021-01-01'", "AA 
> hours_add('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("minutes_add(AA, 1) > '2021-01-01'", 
"AA > minutes_sub('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("minutes_sub(AA, 1) > '2021-01-01'", 
"AA > minutes_add('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("seconds_add(AA, 1) > '2021-01-01'", 
"AA > seconds_sub('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("seconds_sub(AA, 1) > '2021-01-01'", 
"AA > seconds_add('2021-01-01 00:00:00', 1)");
+
+        // test date type
+        assertRewriteAfterTypeCoercion("years_add(CA, 1) > '2021-01-01'", 
"years_add(CA, 1) > cast('2021-01-01' as date)");
+        assertRewriteAfterTypeCoercion("years_sub(CA, 1) > '2021-01-01'", 
"years_sub(CA, 1) > cast('2021-01-01' as date)");
+        assertRewriteAfterTypeCoercion("months_add(CA, 1) > '2021-01-01'", 
"months_add(CA, 1) > cast('2021-01-01' as date)");
+        assertRewriteAfterTypeCoercion("months_sub(CA, 1) > '2021-01-01'", 
"months_sub(CA, 1) > cast('2021-01-01' as date)");
+        assertRewriteAfterTypeCoercion("weeks_add(CA, 1) > '2021-01-01'", "CA 
> weeks_sub(cast('2021-01-01' as date), 1)");
+        assertRewriteAfterTypeCoercion("weeks_sub(CA, 1) > '2021-01-01'", "CA 
> weeks_add(cast('2021-01-01' as date), 1)");
+        assertRewriteAfterTypeCoercion("days_add(CA, 1) > '2021-01-01'", "CA > 
days_sub(cast('2021-01-01' as date), 1)");
+        assertRewriteAfterTypeCoercion("days_sub(CA, 1) > '2021-01-01'", "CA > 
days_add(cast('2021-01-01' as date), 1)");
+        assertRewriteAfterTypeCoercion("hours_add(CA, 1) > '2021-01-01'", 
"cast(CA as datetime) > hours_sub('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("hours_sub(CA, 1) > '2021-01-01'", 
"cast(CA as datetime) > hours_add('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("minutes_add(CA, 1) > '2021-01-01'", 
"cast(CA as datetime) > minutes_sub('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("minutes_sub(CA, 1) > '2021-01-01'", 
"cast(CA as datetime) > minutes_add('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("seconds_add(CA, 1) > '2021-01-01'", 
"cast(CA as datetime) > seconds_sub('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("seconds_sub(CA, 1) > '2021-01-01'", 
"cast(CA as datetime) > seconds_add('2021-01-01 00:00:00', 1)");
+
+        assertRewriteAfterTypeCoercion("years_add(CA, 1) > '2021-01-01 
00:00:00'", "years_add(CA, 1) > cast('2021-01-01' as date)");
+        assertRewriteAfterTypeCoercion("years_sub(CA, 1) > '2021-01-01 
00:00:00'", "years_sub(CA, 1) > cast('2021-01-01' as date)");
+        assertRewriteAfterTypeCoercion("months_add(CA, 1) > '2021-01-01 
00:00:00'", "months_add(CA, 1) > cast('2021-01-01' as date)");
+        assertRewriteAfterTypeCoercion("months_sub(CA, 1) > '2021-01-01 
00:00:00'", "months_sub(CA, 1) > cast('2021-01-01' as date)");
+        assertRewriteAfterTypeCoercion("weeks_add(CA, 1) > '2021-01-01 
00:00:00'", "CA > weeks_sub(cast('2021-01-01' as date), 1)");
+        assertRewriteAfterTypeCoercion("weeks_sub(CA, 1) > '2021-01-01 
00:00:00'", "CA > weeks_add(cast('2021-01-01' as date), 1)");
+        assertRewriteAfterTypeCoercion("days_add(CA, 1) > '2021-01-01 
00:00:00'", "CA > days_sub(cast('2021-01-01' as date), 1)");
+        assertRewriteAfterTypeCoercion("days_sub(CA, 1) > '2021-01-01 
00:00:00'", "CA > days_add(cast('2021-01-01' as date), 1)");
+        assertRewriteAfterTypeCoercion("hours_add(CA, 1) > '2021-01-01 
00:00:00'", "cast(CA as datetime) > hours_sub('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("hours_sub(CA, 1) > '2021-01-01 
00:00:00'", "cast(CA as datetime) > hours_add('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("minutes_add(CA, 1) > '2021-01-01 
00:00:00'", "cast(CA as datetime) > minutes_sub('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("minutes_sub(CA, 1) > '2021-01-01 
00:00:00'", "cast(CA as datetime) > minutes_add('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("seconds_add(CA, 1) > '2021-01-01 
00:00:00'", "cast(CA as datetime) > seconds_sub('2021-01-01 00:00:00', 1)");
+        assertRewriteAfterTypeCoercion("seconds_sub(CA, 1) > '2021-01-01 
00:00:00'", "cast(CA as datetime) > seconds_add('2021-01-01 00:00:00', 1)");
     }
 
-    private void assertRewriteAfterSimplify(String expr, String expected, 
Map<String, Slot> slotNameToSlot) {
+    private void assertRewriteAfterSimplify(String expr, String expected) {
         Expression needRewriteExpression = PARSER.parseExpression(expr);
-        if (slotNameToSlot != null) {
-            needRewriteExpression = replaceUnboundSlot(needRewriteExpression, 
slotNameToSlot);
-        }
+        needRewriteExpression = replaceUnboundSlot(needRewriteExpression, 
Maps.newHashMap());
         Expression rewritten = executor.rewrite(needRewriteExpression, 
context);
         Expression expectedExpression = PARSER.parseExpression(expected);
         Assertions.assertEquals(expectedExpression.toSql(), rewritten.toSql());


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to