This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push: new 365b0999206 [fix](planner)fix bug of InlineViewRef's tableNameToSql method (#33586) 365b0999206 is described below commit 365b0999206750abfc8bdfec7c94039a35d85190 Author: starocean999 <40539150+starocean...@users.noreply.github.com> AuthorDate: Sat Apr 13 18:57:09 2024 +0800 [fix](planner)fix bug of InlineViewRef's tableNameToSql method (#33586) * [fix](planner)fix bug of InlineViewRef's tableNameToSql method * fix fe ut --- .../org/apache/doris/analysis/InlineViewRef.java | 4 +- .../org/apache/doris/qe/OlapQueryCacheTest.java | 8 ++-- .../suites/ddl_p0/test_create_view.groovy | 52 ++++++++++++++++++++++ 3 files changed, 57 insertions(+), 7 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/InlineViewRef.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/InlineViewRef.java index 4274ed37f31..7b660d8e391 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/InlineViewRef.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/InlineViewRef.java @@ -487,9 +487,7 @@ public class InlineViewRef extends TableRef { aliasSql = ToSqlUtils.getIdentSql(alias); } StringBuilder sb = new StringBuilder(); - sb.append("(").append(queryStmt.toSql()).append(") ") - .append(aliasSql); - + sb.append("(").append(queryStmt.toSqlWithSelectList()).append(") ").append(aliasSql); return sb.toString(); } diff --git a/fe/fe-core/src/test/java/org/apache/doris/qe/OlapQueryCacheTest.java b/fe/fe-core/src/test/java/org/apache/doris/qe/OlapQueryCacheTest.java index 62ef7d5ee0e..1f41cd43f9f 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/qe/OlapQueryCacheTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/qe/OlapQueryCacheTest.java @@ -967,7 +967,7 @@ public class OlapQueryCacheTest { LOG.warn("Sub nokey={}", cache.getNokeyStmt().toSql()); Assert.assertEquals(cache.getNokeyStmt().toSql(), "SELECT <slot 7> `eventdate` AS `eventdate`, <slot 8> sum(`pv`) AS `sum(``pv``)` FROM (" - + "SELECT <slot 3> `eventdate` AS `eventdate`, <slot 4> count(`userid`) AS `pv` FROM " + + "SELECT `eventdate`, count(`userid`) `pv` FROM " + "`testCluster:testDb`.`appevent` WHERE `eventid` = 1" + " GROUP BY `eventdate`) tbl GROUP BY `eventdate`"); @@ -989,7 +989,7 @@ public class OlapQueryCacheTest { LOG.warn("Sub rewrite={}", sql); Assert.assertEquals(sql, "SELECT <slot 7> `eventdate` AS `eventdate`, <slot 8> sum(`pv`) AS `sum(``pv``)` FROM (" - + "SELECT <slot 3> `eventdate` AS `eventdate`, <slot 4> count(`userid`) AS `pv` FROM " + + "SELECT `eventdate`, count(`userid`) `pv` FROM " + "`testCluster:testDb`.`appevent` WHERE " + "`eventdate` > '2020-01-13' AND `eventdate` < '2020-01-16' AND `eventid` = 1 GROUP BY " + "`eventdate`) tbl GROUP BY `eventdate`"); @@ -1123,7 +1123,7 @@ public class OlapQueryCacheTest { SqlCache sqlCache = (SqlCache) ca.getCache(); String cacheKey = sqlCache.getSqlWithViewStmt(); Assert.assertEquals(cacheKey, "SELECT `origin`.`eventdate` AS `eventdate`, `origin`.`userid` AS " - + "`userid` FROM (SELECT `view2`.`eventdate` AS `eventdate`, `view2`.`userid` AS `userid` FROM " + + "`userid` FROM (SELECT `view2`.`eventdate` `eventdate`, `view2`.`userid` `userid` FROM " + "`testCluster:testDb`.`view2` view2 WHERE `view2`.`eventdate` >= '2020-01-12' AND `view2`.`eventdate` " + "<= '2020-01-14') origin|select eventdate, userid FROM appevent"); Assert.assertEquals(selectedPartitionIds.size(), sqlCache.getSumOfPartitionNum()); @@ -1207,7 +1207,7 @@ public class OlapQueryCacheTest { Assert.assertEquals(cache.getNokeyStmt().getWhereClause(), null); Assert.assertEquals(cache.getSqlWithViewStmt(), "SELECT `origin`.`eventdate` AS `eventdate`, `origin`.`cnt` AS `cnt` FROM (SELECT " - + "<slot 4> `eventdate` AS `eventdate`, <slot 5> count(`userid`) AS `cnt` FROM " + + "`eventdate`, count(`userid`) `cnt` FROM " + "`testCluster:testDb`.`view2` GROUP BY `eventdate`) origin|select eventdate, " + "userid FROM appevent"); } catch (Exception e) { diff --git a/regression-test/suites/ddl_p0/test_create_view.groovy b/regression-test/suites/ddl_p0/test_create_view.groovy index a2c7090e6dc..d809a82fc63 100644 --- a/regression-test/suites/ddl_p0/test_create_view.groovy +++ b/regression-test/suites/ddl_p0/test_create_view.groovy @@ -153,4 +153,56 @@ suite("test_create_view") { select *, array_map(x->x>0,k3) from view_baseall order by k1; """ qt_test_view_5 """ select * from test_view8 order by k1; """ + + sql """DROP TABLE IF EXISTS view_column_name_test""" + sql """ + CREATE TABLE IF NOT EXISTS view_column_name_test + ( + `timestamp` DATE NOT NULL , + `type` TINYINT NOT NULL , + `error_code` INT , + `error_msg` VARCHAR(300) , + `op_id` BIGINT , + `op_time` DATETIME , + `target` float , + `source` double, + `lost_cost` decimal(12,2), + `remark` string , + `op_userid` LARGEINT , + `plate` SMALLINT, + `iscompleted` boolean + ) + DISTRIBUTED BY HASH(`type`) BUCKETS 1 + PROPERTIES ('replication_num' = '1'); + """ + + sql """ drop view if exists xxx;""" + sql """CREATE VIEW + `xxx` COMMENT 'VIEW' AS + WITH + CHENGBENJIA AS ( + SELECT + RN + FROM + ( + SELECT + row_number() OVER ( + PARTITION BY `A`.`timestamp`, + `A`.`type` + ORDER BY + CAST( + concat( + CAST(`A`.`error_msg` AS VARCHAR(*)), + CAST(`A`.`remark` AS VARCHAR(*)) + ) AS INT + ) DESC NULLS LAST + ) AS `RN` + FROM + view_column_name_test A + ) A + ) + SELECT + * from CHENGBENJIA;""" + sql """select * from xxx;""" + sql """ drop view if exists xxx;""" } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org