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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]