Skip to content

Commit 12bab5d

Browse files
committed
jh-v1
1 parent 077071c commit 12bab5d

File tree

5 files changed

+90
-5
lines changed

5 files changed

+90
-5
lines changed

fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/ExpressionNormalization.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,15 @@
1818
package org.apache.doris.nereids.rules.expression;
1919

2020
import org.apache.doris.nereids.rules.expression.check.CheckCast;
21+
import org.apache.doris.nereids.rules.expression.rules.ConcatWsMultiArrayToOne;
2122
import org.apache.doris.nereids.rules.expression.rules.ConvertAggStateCast;
2223
import org.apache.doris.nereids.rules.expression.rules.DigitalMaskingConvert;
2324
import org.apache.doris.nereids.rules.expression.rules.FoldConstantRule;
2425
import org.apache.doris.nereids.rules.expression.rules.InPredicateDedup;
2526
import org.apache.doris.nereids.rules.expression.rules.InPredicateExtractNonConstant;
2627
import org.apache.doris.nereids.rules.expression.rules.InPredicateToEqualToRule;
2728
import org.apache.doris.nereids.rules.expression.rules.JsonFunctionRewrite;
29+
import org.apache.doris.nereids.rules.expression.rules.LogToLn;
2830
import org.apache.doris.nereids.rules.expression.rules.MedianConvert;
2931
import org.apache.doris.nereids.rules.expression.rules.MergeDateTrunc;
3032
import org.apache.doris.nereids.rules.expression.rules.NormalizeBinaryPredicatesRule;
@@ -63,7 +65,9 @@ public class ExpressionNormalization extends ExpressionRewrite {
6365
ConvertAggStateCast.INSTANCE,
6466
MergeDateTrunc.INSTANCE,
6567
JsonFunctionRewrite.INSTANCE,
66-
CheckCast.INSTANCE
68+
CheckCast.INSTANCE,
69+
LogToLn.INSTANCE,
70+
ConcatWsMultiArrayToOne.INSTANCE
6771
)
6872
);
6973

fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/ExpressionOptimization.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import org.apache.doris.nereids.rules.expression.rules.DistinctPredicatesRule;
2626
import org.apache.doris.nereids.rules.expression.rules.ExtractCommonFactorRule;
2727
import org.apache.doris.nereids.rules.expression.rules.LikeToEqualRewrite;
28-
import org.apache.doris.nereids.rules.expression.rules.LogToLn;
2928
import org.apache.doris.nereids.rules.expression.rules.NullSafeEqualToEqual;
3029
import org.apache.doris.nereids.rules.expression.rules.SimplifyComparisonPredicate;
3130
import org.apache.doris.nereids.rules.expression.rules.SimplifyConflictCompound;
@@ -62,8 +61,7 @@ public class ExpressionOptimization extends ExpressionRewrite {
6261
TopnToMax.INSTANCE,
6362
NullSafeEqualToEqual.INSTANCE,
6463
LikeToEqualRewrite.INSTANCE,
65-
BetweenToEqual.INSTANCE,
66-
LogToLn.INSTANCE
64+
BetweenToEqual.INSTANCE
6765
)
6866
);
6967

fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/ExpressionRuleType.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,15 @@ public enum ExpressionRuleType {
2727
CASE_WHEN_TO_IF,
2828
CHECK_CAST,
2929
CONVERT_AGG_STATE_CAST,
30+
CONCATWS_MULTI_ARRAY_TO_ONE,
3031
DATE_FUNCTION_REWRITE,
3132
DIGITAL_MASKING_CONVERT,
3233
DISTINCT_PREDICATES,
3334
EXPR_ID_REWRITE_REPLACE,
3435
EXTRACT_COMMON_FACTOR,
36+
LOG_TO_LN,
3537
FOLD_CONSTANT_ON_BE,
3638
FOLD_CONSTANT_ON_FE,
37-
LOG_TO_LN,
3839
IN_PREDICATE_DEDUP,
3940
IN_PREDICATE_EXTRACT_NON_CONSTANT,
4041
IN_PREDICATE_TO_EQUAL_TO,
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
-- This file is automatically generated. You should know what you did if you want to edit this
2+
-- !concat_ws_ArrayWithNullElement --
3+
a-b-css-d-g-f-s
4+
5+
-- !concat_ws_ArrayWithEmptyString --
6+
a---css-d-
7+
8+
-- !concat_ws_WithEmptyArray --
9+
a-b-css-d
10+
11+
-- !concat_ws_SeparatorSpecial --
12+
x|y|m|n|p
13+
14+
-- !concat_ws_SeparatorEmpty --
15+
abcd
16+
17+
-- !concat_ws_ArrayWithNumber --
18+
1-2-3-4-5-6
19+
20+
-- !concat_ws_WithNullArray --
21+
22+
23+
-- !concat_ws_SingleArray --
24+
x,y,z
25+
26+
-- !concat_ws_ArrayAllNull --
27+
a-b
28+
29+
-- !concat_ws_MixedTypeElement --
30+
a|123|456|b
31+
32+
-- !concat_ws_chinese --
33+
你好,世界,Doris,Nereids,测试
34+
35+
-- !concat_ws_insert_1 --
36+
a-b-css-d
37+
x-y-z
38+
你好-世界-Doris-Nereids
39+
40+
-- !log_function --
41+
2.0 3.0 3.0 3.0000000000000004 2.9999999999999996
42+
43+
-- !log_function_with_null --
44+
\N \N \N \N \N
45+
46+
-- !log_function_wiht_one_argument --
47+
4.605170185988092 2.0794415416798357 3.295836866004329 4.8283137373023015 6.907755278982137
48+
49+
-- !log_function_with_null_and_one_argument --
50+
\N \N 0.0 2.302585092994046
51+
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
suite("nereids_scalar_fn_concat_ws_and_log") {
2+
3+
sql 'use regression_test_nereids_function_p0_scalar_function'
4+
sql 'set enable_fold_constant_by_be=false'
5+
qt_concat_ws_ArrayWithNullElement "select concat_ws('-',['a','b'],['css',null,'d'],['g','f'],['s'])"
6+
7+
8+
qt_concat_ws_ArrayWithEmptyString "select concat_ws('-',['a',''],['','css'],['d',''])"
9+
qt_concat_ws_WithEmptyArray "select concat_ws('-',['a','b'],[],['css','d'],[])"
10+
qt_concat_ws_SeparatorSpecial "select concat_ws('|',['x','y'],['m',null,'n'],['p'])"
11+
12+
qt_concat_ws_SeparatorEmpty "select concat_ws('',['a','b'],['c',null],['d'])"
13+
14+
qt_concat_ws_ArrayWithNumber "select concat_ws('-',['1','2'],['3',null,'4'],['5','6'])"
15+
qt_concat_ws_WithNullArray "select concat_ws('-',['a'],null,['b','c'])"
16+
qt_concat_ws_SingleArray "select concat_ws(',',['x','y','z'])"
17+
qt_concat_ws_ArrayAllNull "select concat_ws('-',['a'],[null,null],['b'])"
18+
qt_concat_ws_MixedTypeElement "select concat_ws('|',['a','123'],['456',null,'b'])"
19+
qt_concat_ws_chinese "select concat_ws(',',['你好','世界'],['Doris',null,'Nereids'],['测试'])"
20+
21+
sql "DROP TABLE IF EXISTS test_concat_ws_1"
22+
sql "CREATE TABLE test_concat_ws_1 (id INT, a ARRAY<VARCHAR>, b ARRAY<VARCHAR>) ENGINE=OLAP DISTRIBUTED BY HASH(id) BUCKETS 1 PROPERTIES ('replication_num' = '1')"
23+
sql "INSERT INTO test_concat_ws_1 VALUES (1, ['a','b'], ['css',null,'d']), (2, ['x',null], ['y','z']),(3,['你好','世界'],['Doris',null,'Nereids'])"
24+
qt_concat_ws_insert_1 "SELECT concat_ws('-', a, b) FROM test_concat_ws_1 ORDER BY id"
25+
26+
27+
qt_log_function "SELECT log(10, 100), log(2, 8), log(3, 27), log(5, 125), log(10, 1000)"
28+
qt_log_function_with_null "SELECT log(10, NULL), log(NULL, 100), log(NULL, NULL), log(10, 0), log(0, 10)"
29+
qt_log_function_wiht_one_argument "SELECT log(100), log(8), log(27), log(125), log(1000)"
30+
qt_log_function_with_null_and_one_argument "SELECT log(NULL), log(0), log(1), log(10)"
31+
}

0 commit comments

Comments
 (0)