You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2023/07/19 06:30:33 UTC

[doris] 07/38: Revert "[Fix](Planner) Set inline view output as non constant after analyze (#21186)" (#21584)

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

morningman pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 7b880f98d0ec456e63efeac4cd9d857d333fad50
Author: starocean999 <40...@users.noreply.github.com>
AuthorDate: Thu Jul 6 20:30:18 2023 +0800

    Revert "[Fix](Planner) Set inline view output as non constant after analyze (#21186)" (#21584)
    
    This reverts commit d7323f0df6e0bee0f8f73f32eddfb65c3f20461d.
---
 .../main/java/org/apache/doris/analysis/Expr.java  |  7 -----
 .../java/org/apache/doris/analysis/SelectStmt.java |  4 ---
 .../org/apache/doris/analysis/QueryStmtTest.java   | 17 ++++++++--
 .../conditional_functions/test_nullif.out          |  4 ---
 .../conditional_functions/test_nullif.groovy       | 36 ----------------------
 5 files changed, 14 insertions(+), 54 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/Expr.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/Expr.java
index f2074ae376..abed221866 100755
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/Expr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/Expr.java
@@ -441,13 +441,6 @@ public abstract class Expr extends TreeNode<Expr> implements ParseNode, Cloneabl
         isAnalyzed = true;
     }
 
-    /**
-     * Set the expr isConstant parameter, when select list return it can not be constant
-     */
-    public void setIsConstant(boolean isConstant) {
-        this.isConstant = isConstant;
-    }
-
     protected void computeNumDistinctValues() {
         if (isConstant()) {
             numDistinctValues = 1;
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java
index 7c91e33188..d634b5fb62 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java
@@ -453,10 +453,6 @@ public class SelectStmt extends QueryStmt {
                     // Analyze the resultExpr before generating a label to ensure enforcement
                     // of expr child and depth limits (toColumn() label may call toSql()).
                     item.getExpr().analyze(analyzer);
-                    // select list output must not be constant because it is not scalar expression.
-                    if (!fromClause.isEmpty()) {
-                        item.getExpr().setIsConstant(false);
-                    }
                     if (!(item.getExpr() instanceof CaseExpr)
                             && item.getExpr().contains(Predicates.instanceOf(Subquery.class))) {
                         throw new AnalysisException("Subquery is not supported in the select list.");
diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/QueryStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/QueryStmtTest.java
index 51d2199c53..03acde255d 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/analysis/QueryStmtTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/QueryStmtTest.java
@@ -210,7 +210,7 @@ public class QueryStmtTest {
         Assert.assertEquals(5, exprsMap.size());
         constMap.clear();
         constMap = getConstantExprMap(exprsMap, analyzer);
-        Assert.assertEquals(1, constMap.size());
+        Assert.assertEquals(2, constMap.size());
 
         // expr in subquery associate with column in grandparent level
         sql = "WITH aa AS\n"
@@ -261,9 +261,20 @@ public class QueryStmtTest {
     @Test
     public void testPutBackExprs() throws Exception {
         ConnectContext ctx = UtFrameUtils.createDefaultCtx();
-        String sql = "SELECT @@license, @@time_zone\n"
+        String sql = "SELECT username, @@license, @@time_zone\n"
+                + "FROM db1.table1\n"
+                + "WHERE siteid in\n"
+                + "    (SELECT abs(5+abs(0))+1)\n"
                 + "UNION\n"
-                + "SELECT @@language, @@storage_engine;";
+                + "SELECT CASE\n"
+                + "           WHEN\n"
+                + "                  (SELECT count(*)+abs(8)\n"
+                + "                   FROM db1.table1\n"
+                + "                   WHERE username='helen')>1 THEN 888\n"
+                + "           ELSE 999\n"
+                + "       END AS ccc, @@language, @@storage_engine\n"
+                + "FROM\n"
+                + "  (SELECT curdate()) a;";
         StatementBase stmt = UtFrameUtils.parseAndAnalyzeStmt(sql, ctx);
         stmt.foldConstant(new Analyzer(ctx.getEnv(), ctx).getExprRewriter());
 
diff --git a/regression-test/data/query_p0/sql_functions/conditional_functions/test_nullif.out b/regression-test/data/query_p0/sql_functions/conditional_functions/test_nullif.out
index 9675765d6d..f8def44a3d 100644
--- a/regression-test/data/query_p0/sql_functions/conditional_functions/test_nullif.out
+++ b/regression-test/data/query_p0/sql_functions/conditional_functions/test_nullif.out
@@ -480,7 +480,3 @@ null	12	1	true
 -- !if_nullif28 --
 2020-02-09
 
--- !if_nullif29 --
-1	1
-2	2
-
diff --git a/regression-test/suites/query_p0/sql_functions/conditional_functions/test_nullif.groovy b/regression-test/suites/query_p0/sql_functions/conditional_functions/test_nullif.groovy
index 2f41af96f9..e754d6d0e8 100644
--- a/regression-test/suites/query_p0/sql_functions/conditional_functions/test_nullif.groovy
+++ b/regression-test/suites/query_p0/sql_functions/conditional_functions/test_nullif.groovy
@@ -145,40 +145,4 @@ suite("test_nullif") {
     qt_if_nullif27 """select ifnull(2+3, 2), ifnull((3*1 > 1 || 1>0), 2), ifnull((3*1 > 1 or 1>0), 2),
         ifnull(upper("null"), concat("NUL", "LL"))"""
     qt_if_nullif28 """select ifnull(date(substring("2020-02-09", 1, 1024)), null)"""
-
-    def tableName2 = "testsort"
-
-    sql """ DROP TABLE IF EXISTS ${tableName2}; """
-    sql """
-            CREATE TABLE IF NOT EXISTS ${tableName2} (
-                c_int int NULL COMMENT "",
-                c_pv bitmap BITMAP_UNION NULL COMMENT ""
-            )
-            AGGREGATE KEY(c_int)
-            DISTRIBUTED BY HASH(c_int) BUCKETS 1
-            PROPERTIES (
-              "replication_num" = "1"
-            );
-        """
-    sql """ INSERT INTO ${tableName2} VALUES(1, to_bitmap(1)), (2, to_bitmap(2));"""
-
-    qt_if_nullif29 """
-	select
-	    sortNum,
-	    BITMAP_UNION_COUNT (c.pv) over (ORDER BY sortNum ) totalNum
-	from(
-	select 
-	    ifnull(a.sortNum, b.sortNum) sortNum,
-	    BITMAP_UNION (ifnull(a.c_pv, b.c_pv)) pv
-	from
-	    (select 1 sortNum, c_pv from ${tableName2} t where t.c_int = 1) a
-	full join
-	    (select 2 sortNum, c_pv from ${tableName2} t where t.c_int = 2) b
-	    on a.sortNum = b.sortNum
-	GROUP BY
-	    sortNum
-	ORDER BY
-	    sortNum
-	) c
-	;"""
 }


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