Skip to content

Commit 006038e

Browse files
committed
add fold constant test
1 parent 42de590 commit 006038e

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/StringArithmetic.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package org.apache.doris.nereids.trees.expressions.functions.executable;
1919

2020
import org.apache.doris.nereids.exceptions.AnalysisException;
21+
import org.apache.doris.nereids.exceptions.NotSupportedException;
2122
import org.apache.doris.nereids.trees.expressions.ExecFunction;
2223
import org.apache.doris.nereids.trees.expressions.Expression;
2324
import org.apache.doris.nereids.trees.expressions.literal.ArrayLiteral;
@@ -1079,8 +1080,9 @@ public static Expression soundex(StringLikeLiteral first) {
10791080
char c = first.getValue().charAt(i);
10801081

10811082
if (c > 0x7f) {
1082-
throw new RuntimeException("soundex only supports ASCII, but got: " + c);
1083+
throw new NotSupportedException("soundex only supports ASCII, but got: " + c);
10831084
}
1085+
10841086
if (!Character.isLetter(c)) {
10851087
continue;
10861088
}

fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/FoldConstantTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.apache.doris.common.Config;
2222
import org.apache.doris.nereids.analyzer.UnboundRelation;
2323
import org.apache.doris.nereids.exceptions.AnalysisException;
24+
import org.apache.doris.nereids.exceptions.NotSupportedException;
2425
import org.apache.doris.nereids.parser.NereidsParser;
2526
import org.apache.doris.nereids.rules.analysis.ExpressionAnalyzer;
2627
import org.apache.doris.nereids.rules.expression.rules.FoldConstantRule;
@@ -90,6 +91,7 @@
9091
import org.apache.doris.nereids.trees.expressions.functions.scalar.Sign;
9192
import org.apache.doris.nereids.trees.expressions.functions.scalar.Sin;
9293
import org.apache.doris.nereids.trees.expressions.functions.scalar.Sinh;
94+
import org.apache.doris.nereids.trees.expressions.functions.scalar.Soundex;
9395
import org.apache.doris.nereids.trees.expressions.functions.scalar.Sqrt;
9496
import org.apache.doris.nereids.trees.expressions.functions.scalar.StrToDate;
9597
import org.apache.doris.nereids.trees.expressions.functions.scalar.Substring;
@@ -555,6 +557,30 @@ void testFoldString() {
555557
);
556558
rewritten = executor.rewrite(replace, context);
557559
Assertions.assertEquals(new StringLiteral("default"), rewritten);
560+
561+
Soundex soundex = new Soundex(StringLiteral.of("Ashcraft"));
562+
rewritten = executor.rewrite(soundex, context);
563+
Assertions.assertEquals(new StringLiteral("A261"), rewritten);
564+
soundex = new Soundex(StringLiteral.of("Robert"));
565+
rewritten = executor.rewrite(soundex, context);
566+
Assertions.assertEquals(new StringLiteral("R163"), rewritten);
567+
soundex = new Soundex(StringLiteral.of("R@bert"));
568+
rewritten = executor.rewrite(soundex, context);
569+
Assertions.assertEquals(new StringLiteral("R163"), rewritten);
570+
soundex = new Soundex(StringLiteral.of("Honeyman"));
571+
rewritten = executor.rewrite(soundex, context);
572+
Assertions.assertEquals(new StringLiteral("H555"), rewritten);
573+
soundex = new Soundex(StringLiteral.of("Apache Doris你好"));
574+
rewritten = executor.rewrite(soundex, context);
575+
Assertions.assertEquals(new StringLiteral("A123"), rewritten);
576+
soundex = new Soundex(StringLiteral.of(""));
577+
rewritten = executor.rewrite(soundex, context);
578+
Assertions.assertEquals(new StringLiteral(""), rewritten);
579+
580+
Assertions.assertThrows(NotSupportedException.class, () -> {
581+
Soundex soundexThrow = new Soundex(new StringLiteral("Doris你好"));
582+
executor.rewrite(soundexThrow, context);
583+
}, "soundex only supports ASCII");
558584
}
559585

560586
@Test

0 commit comments

Comments
 (0)