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