You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by ja...@apache.org on 2022/12/21 13:03:57 UTC

[doris] branch master updated: [fix](nereids) Fix case-when (#15150)

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

jakevin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 649bbc1e58 [fix](nereids) Fix case-when (#15150)
649bbc1e58 is described below

commit 649bbc1e584a78afde31881ef8fea8e1a6aaadad
Author: Kikyou1997 <33...@users.noreply.github.com>
AuthorDate: Wed Dec 21 21:03:50 2022 +0800

    [fix](nereids) Fix case-when (#15150)
---
 .../rewrite/rules/FoldConstantRuleOnFE.java        |   11 +-
 .../rules/expression/rewrite/FoldConstantTest.java |    2 +-
 .../data/nereids_syntax_p0/test_case_function.out  |   41 +
 .../nereids_syntax_p0/test_case_function.groovy    | 1283 ++++++++++++++++++++
 4 files changed, 1331 insertions(+), 6 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/FoldConstantRuleOnFE.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/FoldConstantRuleOnFE.java
index 363869b99e..4687929881 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/FoldConstantRuleOnFE.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/FoldConstantRuleOnFE.java
@@ -262,15 +262,16 @@ public class FoldConstantRuleOnFE extends AbstractExpressionRewriteRule {
             }
         }
 
-        Expression defaultResult;
+        Expression defaultResult = caseWhen.getDefaultValue().isPresent() ? rewrite(caseWhen.getDefaultValue().get(),
+                context) : null;
         if (foundNewDefault) {
             defaultResult = newDefault;
-        } else {
-            defaultResult = caseWhen.getDefaultValue().orElse(Literal.of(null));
         }
-
         if (whenClauses.isEmpty()) {
-            return defaultResult;
+            return defaultResult == null ? Literal.of(null) : defaultResult;
+        }
+        if (defaultResult == null) {
+            return new CaseWhen(whenClauses);
         }
         return new CaseWhen(whenClauses, defaultResult);
     }
diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/rewrite/FoldConstantTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/rewrite/FoldConstantTest.java
index 6ce5ff2062..d0d86a3559 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/rewrite/FoldConstantTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/rewrite/FoldConstantTest.java
@@ -58,7 +58,7 @@ public class FoldConstantTest extends ExpressionRewriteTestHelper {
         assertRewriteAfterTypeCoercion("case when null = 2 then 1 when 3 in (2,3,4) then 2 else 4 end", "2");
         assertRewriteAfterTypeCoercion("case when null = 2 then 1 else 4 end", "4");
         assertRewriteAfterTypeCoercion("case when null = 2 then 1 end", "null");
-        assertRewriteAfterTypeCoercion("case when TA = TB then 1 when TC is null then 2 end", "CASE  WHEN (TA = TB) THEN 1 WHEN TC IS NULL THEN 2 ELSE NULL END");
+        assertRewriteAfterTypeCoercion("case when TA = TB then 1 when TC is null then 2 end", "CASE WHEN (TA = TB) THEN 1 WHEN TC IS NULL THEN 2 END");
     }
 
     @Test
diff --git a/regression-test/data/nereids_syntax_p0/test_case_function.out b/regression-test/data/nereids_syntax_p0/test_case_function.out
new file mode 100644
index 0000000000..f670d4336d
--- /dev/null
+++ b/regression-test/data/nereids_syntax_p0/test_case_function.out
@@ -0,0 +1,41 @@
+-- This file is automatically generated. You should know what you did if you want to edit this
+-- !case1 --
+number	1
+number	1
+number	5
+number	9
+
+-- !case2 --
++	3
+
+-- !case3 --
+1	wangjing
+2	\N
+3	\N
+
+-- !case4 --
+birthday
+other
+wang
+
+-- !case5 --
+-1
+-1
+1
+
+-- !case6 --
+1	one
+2	two
+3	\N
+
+-- !case7 --
+1	1
+2	1
+3	1
+
+-- !case8 --
+number	1
+number	1
+number	5
+number	9
+
diff --git a/regression-test/suites/nereids_syntax_p0/test_case_function.groovy b/regression-test/suites/nereids_syntax_p0/test_case_function.groovy
new file mode 100644
index 0000000000..9a0b63a95b
--- /dev/null
+++ b/regression-test/suites/nereids_syntax_p0/test_case_function.groovy
@@ -0,0 +1,1283 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+suite("test_nereids_case_function", "query,p0") {
+    sql "use test_query_db"
+    sql "SET enable_nereids_planner=true"
+    sql "SET enable_vectorized_engine=true"
+    sql "SET enable_fallback_to_original_planner=false"
+
+    def tableName1 = "test"
+    def tableName2 = "baseall"
+
+    qt_case1 """select 'number', count(*) from ${tableName2} group by
+                case
+                when k1=10 then 'zero'
+                when k1>10 then '+'
+                when k1<10 then '-' end order by 1, 2"""
+    
+    qt_case2 """select case when k1=0 then 'zero'
+		        when k1>0 then '+'
+		        when k1<0 then '-' end as wj,
+		        count(*) from ${tableName1}
+		        group by
+                case when k1=0 then 'zero'
+                     when k1>0 then '+'
+                     when k1<0 then '-' end
+                order by
+                case when k1=0 then 'zero'
+                     when k1>0 then '+'
+                     when k1<0 then '-' end"""
+    
+    qt_case3 """
+                select a.k1, case
+                when b.wj is not null and b.k1>0 then 'wangjing'
+                when b.wj is null then b.wj
+                end as wjtest
+                from (select k1, k2, case when k6='true' then 'ok' end as wj
+                from ${tableName1}) as b 
+                join ${tableName2} as a where a.k1=b.k1 and a.k2=b.k2 order by k1, wjtest
+             """
+    
+    qt_case4 """select case when k1<0 then 'zhengshu' when k10='1989-03-21' then 'birthday' 
+                when k2<0 then 'fu' when k7 like '%wang%' then 'wang' else 'other' end 
+                as wj from ${tableName1} order by wj"""
+    
+    qt_case5 """select case k6 when 'true' then 1 when 'false' then -1 else 0 end 
+		        as wj from ${tableName1} order by wj"""
+    
+    qt_case6 """select k1, case k1 when 1 then 'one' when 2 then 'two' 
+		        end as wj from ${tableName1} order by k1, wj"""
+    
+    qt_case7 """select k1, case when k2<0 then -1 when k2=0 then 0 when k2>0 then 1 end 
+		        as wj from ${tableName1} order by k1, wj"""
+
+    qt_case8 """select 'number', count(*) from ${tableName2} group by
+               case
+               when k1=10 then 'zero'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1>10 then '+'
+               when k1<10 then '-' end order by 1, 2"""
+}


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