Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -613,7 +613,7 @@ public String toSql(int depth) {
StringBuilder stringBuilder = new StringBuilder();
switch (type) {
case CHAR:
if (isWildcardVarchar()) {
if (isWildcardChar()) {
stringBuilder.append("character");
} else if (Strings.isNullOrEmpty(lenStr)) {
stringBuilder.append("char").append("(").append(len).append(")");
Expand Down
30 changes: 23 additions & 7 deletions fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java
Original file line number Diff line number Diff line change
Expand Up @@ -532,8 +532,14 @@ public void analyze(Analyzer analyzer) throws UserException {
// remove excepted columns
resultExprs.removeIf(expr -> exceptCols.contains(expr.toColumnLabel()));
colLabels.removeIf(exceptCols::contains);
if (needToSql) {
originalExpr = Expr.cloneList(resultExprs);
}

} else {
if (needToSql) {
originalExpr = new ArrayList<>();
}
for (SelectListItem item : selectList.getItems()) {
if (item.isStar()) {
TableName tblName = item.getTblName();
Expand All @@ -543,6 +549,11 @@ public void analyze(Analyzer analyzer) throws UserException {
expandStar(analyzer, tblName);
}
} else {
// save originalExpr before being analyzed
// because analyze may change the expr by adding cast or some other stuff
if (needToSql) {
originalExpr.add(item.getExpr().clone());
}
// 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);
Expand Down Expand Up @@ -603,10 +614,6 @@ public void analyze(Analyzer analyzer) throws UserException {
colLabels.add("col_" + colLabels.size());
}
}
// analyze valueList if exists
if (needToSql) {
originalExpr = Expr.cloneList(resultExprs);
}

// analyze selectListExprs
Expr.analyze(resultExprs, analyzer);
Expand Down Expand Up @@ -1208,6 +1215,9 @@ private void expandStar(TableName tblName, TupleDescriptor desc) throws Analysis
slot.setTable(desc.getTable());
slot.setTupleId(desc.getId());
resultExprs.add(rewriteQueryExprByMvColumnExpr(slot, analyzer));
if (needToSql) {
originalExpr.add(slot);
}
colLabels.add(col.getName());
}
}
Expand Down Expand Up @@ -2458,6 +2468,9 @@ public void substituteSelectList(Analyzer analyzer, List<String> newColLabels)
tblRef.analyze(analyzer);
leftTblRef = tblRef;
}
if (needToSql) {
originalExpr = new ArrayList<>();
}
// populate selectListExprs, aliasSMap, and colNames
for (SelectListItem item : selectList.getItems()) {
if (item.isStar()) {
Expand All @@ -2468,6 +2481,11 @@ public void substituteSelectList(Analyzer analyzer, List<String> newColLabels)
expandStar(analyzer, tblName);
}
} else {
if (needToSql) {
// save originalExpr before being analyzed
// because analyze may change the expr by adding cast or some other stuff
originalExpr.add(item.getExpr().clone());
}
// to make sure the sortinfo's AnalyticExpr and resultExprs's AnalyticExpr analytic once
if (item.getExpr() instanceof AnalyticExpr) {
item.getExpr().analyze(analyzer);
Expand All @@ -2481,9 +2499,7 @@ public void substituteSelectList(Analyzer analyzer, List<String> newColLabels)
resultExprs.add(rewriteQueryExprByMvColumnExpr(item.getExpr(), analyzer));
}
}
if (needToSql) {
originalExpr = Expr.cloneList(resultExprs);
}

// substitute group by
if (groupByClause != null) {
boolean aliasFirst = false;
Expand Down
28 changes: 28 additions & 0 deletions regression-test/suites/view_p0/view_p0.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -136,4 +136,32 @@ suite("view_p0") {
sql """CREATE VIEW IF NOT EXISTS `test_view_abc`(`a`) AS WITH T1 AS (SELECT 1 AS 'a'), T2 AS (SELECT 2 AS 'a') SELECT T1.a FROM T1 UNION ALL SELECT T2.a FROM T2;"""

sql "drop view if exists test_view_abc;"

sql """DROP TABLE IF EXISTS test_view_table2"""

sql """
CREATE TABLE test_view_table2 (
c_date varchar(50)
)
ENGINE=OLAP
UNIQUE KEY(`c_date`)
distributed by hash(c_date) properties('replication_num'='1');
"""

sql """ drop view if exists test_view_table2_view;"""
sql """CREATE VIEW `test_view_table2_view`
AS
SELECT
date_format(c_date,'%Y-%m-%d') AS `CREATE_DATE`
FROM
test_view_table2
GROUP BY
date_format(c_date, '%Y-%m-%d');
"""
sql """set enable_nereids_planner=false;"""
sql """select * from test_view_table2_view;"""
sql """set enable_nereids_planner=true;"""
sql """select * from test_view_table2_view;"""
sql """ drop view if exists test_view_table2_view;"""
sql """DROP TABLE IF EXISTS test_view_table2"""
}