This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 3ca6f34c87 [fix](view) Fix view not showing specific lengths for
varchar type (#12107)
3ca6f34c87 is described below
commit 3ca6f34c87b1e09d5f1302dc7ef5c18e4ca62b16
Author: yinzhijian <[email protected]>
AuthorDate: Mon Aug 29 12:09:48 2022 +0800
[fix](view) Fix view not showing specific lengths for varchar type (#12107)
---
.../org/apache/doris/analysis/BaseViewStmt.java | 21 ++++++----
.../data/correctness/test_view_varchar_length.out | 4 ++
.../correctness/test_view_varchar_length.groovy | 48 ++++++++++++++++++++++
3 files changed, 66 insertions(+), 7 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/BaseViewStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/BaseViewStmt.java
index 6d6bdeaf11..d84a4e871f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/BaseViewStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/BaseViewStmt.java
@@ -18,8 +18,8 @@
package org.apache.doris.analysis;
import org.apache.doris.catalog.Column;
-import org.apache.doris.catalog.PrimitiveType;
import org.apache.doris.catalog.ScalarType;
+import org.apache.doris.catalog.Type;
import org.apache.doris.common.AnalysisException;
import org.apache.doris.common.ErrorCode;
import org.apache.doris.common.ErrorReport;
@@ -85,20 +85,27 @@ public class BaseViewStmt extends DdlStmt {
if (cols.size() != viewDefStmt.getColLabels().size()) {
ErrorReport.reportAnalysisException(ErrorCode.ERR_VIEW_WRONG_LIST);
}
- // TODO(zc): type
for (int i = 0; i < cols.size(); ++i) {
- PrimitiveType type =
viewDefStmt.getBaseTblResultExprs().get(i).getType().getPrimitiveType();
- Column col = new Column(cols.get(i).getColName(),
ScalarType.createType(type));
+ Type type =
viewDefStmt.getBaseTblResultExprs().get(i).getType();
+ Column col = new Column(cols.get(i).getColName(),
+ ScalarType.createType(
+ type.getPrimitiveType(),
+ type.getLength(),
+ type.getPrecision() != null ?
type.getPrecision() : -1,
+ type.getDecimalDigits() != null ?
type.getDecimalDigits() : 0));
col.setComment(cols.get(i).getComment());
finalCols.add(col);
}
} else {
- // TODO(zc): type
for (int i = 0; i < viewDefStmt.getBaseTblResultExprs().size();
++i) {
- PrimitiveType type =
viewDefStmt.getBaseTblResultExprs().get(i).getType().getPrimitiveType();
+ Type type =
viewDefStmt.getBaseTblResultExprs().get(i).getType();
finalCols.add(new Column(
viewDefStmt.getColLabels().get(i),
- ScalarType.createType(type)));
+ ScalarType.createType(
+ type.getPrimitiveType(),
+ type.getLength(),
+ type.getPrecision() != null ?
type.getPrecision() : -1,
+ type.getDecimalDigits() != null ?
type.getDecimalDigits() : 0)));
}
}
// Set for duplicate columns
diff --git a/regression-test/data/correctness/test_view_varchar_length.out
b/regression-test/data/correctness/test_view_varchar_length.out
new file mode 100644
index 0000000000..2b67988f7f
--- /dev/null
+++ b/regression-test/data/correctness/test_view_varchar_length.out
@@ -0,0 +1,4 @@
+-- This file is automatically generated. You should know what you did if you
want to edit this
+-- !sql --
+name VARCHAR(32) No false \N
+
diff --git a/regression-test/suites/correctness/test_view_varchar_length.groovy
b/regression-test/suites/correctness/test_view_varchar_length.groovy
new file mode 100644
index 0000000000..a639519cf1
--- /dev/null
+++ b/regression-test/suites/correctness/test_view_varchar_length.groovy
@@ -0,0 +1,48 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+ // or more contributor license agreements. See the NOTICE file
+ // distributed with this work for additional information
+ // regarding copyright ownership. The ASF licenses this file
+ // to you under the Apache License, Version 2.0 (the
+ // "License"); you may not use this file except in compliance
+ // with the License. You may obtain a copy of the License at
+ //
+ // http://www.apache.org/licenses/LICENSE-2.0
+ //
+ // Unless required by applicable law or agreed to in writing,
+ // software distributed under the License is distributed on an
+ // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ // KIND, either express or implied. See the License for the
+ // specific language governing permissions and limitations
+ // under the License.
+
+
+/*
+The varchar column type of the view needs to be a specific number, not an
asterisk
+Expect: varchar(32)
+Type before bug fix: varchar(*)
+*/
+ suite("test_view_varchar_length") {
+ sql """ DROP TABLE IF EXISTS T """
+ sql """
+ CREATE TABLE `T` (
+ `id` int,
+ `name` varchar(32)
+ ) ENGINE=OLAP
+ COMMENT "OLAP"
+ DISTRIBUTED BY HASH(`id`) BUCKETS 1
+ PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1",
+ "in_memory" = "false",
+ "storage_format" = "V2"
+ );
+ """
+ sql "drop view if exists V;"
+ sql """
+ create view V as select name from T;
+ """
+
+ qt_sql """
+ desc V;
+ """
+ }
+
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]