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 <40539150+starocean...@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-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org