You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2023/06/22 07:58:39 UTC
[doris] branch master updated: [Bug](materialized-veiw) fix error happens when parsing create materialized view stmt #21095
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 fa3bb2eabe [Bug](materialized-veiw) fix error happens when parsing create materialized view stmt #21095
fa3bb2eabe is described below
commit fa3bb2eabee234ee8acf704c4024ea9c4ab4a4ad
Author: Pxl <px...@qq.com>
AuthorDate: Thu Jun 22 15:58:32 2023 +0800
[Bug](materialized-veiw) fix error happens when parsing create materialized view stmt #21095
---
.../doris/catalog/MaterializedIndexMeta.java | 30 ++++++++++++++++++----
.../java/org/apache/doris/catalog/OlapTable.java | 4 +--
2 files changed, 27 insertions(+), 7 deletions(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java
index 1d3d353bf3..07c33b85bc 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java
@@ -28,8 +28,10 @@ import org.apache.doris.common.io.Writable;
import org.apache.doris.common.util.SqlParserUtils;
import org.apache.doris.persist.gson.GsonPostProcessable;
import org.apache.doris.persist.gson.GsonUtils;
+import org.apache.doris.qe.ConnectContext;
import org.apache.doris.qe.OriginStatement;
import org.apache.doris.qe.SqlModeHelper;
+import org.apache.doris.system.SystemInfoService;
import org.apache.doris.thrift.TStorageType;
import com.google.common.base.Preconditions;
@@ -75,18 +77,21 @@ public class MaterializedIndexMeta implements Writable, GsonPostProcessable {
private Map<String, Column> nameToColumn;
private Map<String, Column> definedNameToColumn;
+ @SerializedName(value = "dbName")
+ private String dbName;
+
private static final Logger LOG = LogManager.getLogger(MaterializedIndexMeta.class);
public MaterializedIndexMeta(long indexId, List<Column> schema, int schemaVersion, int schemaHash,
short shortKeyColumnCount, TStorageType storageType, KeysType keysType, OriginStatement defineStmt) {
this(indexId, schema, schemaVersion, schemaHash, shortKeyColumnCount, storageType, keysType,
- defineStmt, null); // indexes is null by default
+ defineStmt, null, null); // indexes is null by default
}
public MaterializedIndexMeta(long indexId, List<Column> schema, int schemaVersion, int schemaHash,
short shortKeyColumnCount, TStorageType storageType, KeysType keysType, OriginStatement defineStmt,
- List<Index> indexes) {
+ List<Index> indexes, String dbName) {
this.indexId = indexId;
Preconditions.checkState(schema != null);
Preconditions.checkState(schema.size() != 0);
@@ -101,6 +106,7 @@ public class MaterializedIndexMeta implements Writable, GsonPostProcessable {
this.defineStmt = defineStmt;
this.indexes = indexes != null ? indexes : Lists.newArrayList();
initColumnNameMap();
+ this.dbName = dbName;
}
public void setWhereClause(Expr whereClause) {
@@ -286,6 +292,12 @@ public class MaterializedIndexMeta implements Writable, GsonPostProcessable {
}
public void parseStmt(Analyzer analyzer) throws IOException {
+ if (analyzer == null && dbName != null) {
+ ConnectContext connectContext = new ConnectContext();
+ connectContext.setCluster(SystemInfoService.DEFAULT_CLUSTER);
+ connectContext.setDatabase(dbName);
+ analyzer = new Analyzer(Env.getCurrentEnv(), connectContext);
+ }
// analyze define stmt
if (defineStmt == null) {
return;
@@ -297,14 +309,22 @@ public class MaterializedIndexMeta implements Writable, GsonPostProcessable {
try {
stmt = (CreateMaterializedViewStmt) SqlParserUtils.getStmt(parser, defineStmt.idx);
if (analyzer != null) {
- stmt.analyze(analyzer);
+ try {
+ stmt.analyze(analyzer);
+ } catch (Exception e) {
+ LOG.warn("CreateMaterializedViewStmt analyze failed, reason=" + e.getMessage());
+ }
}
stmt.setIsReplay(true);
setWhereClause(stmt.getWhereClause());
stmt.rewriteToBitmapWithCheck();
- Map<String, Expr> columnNameToDefineExpr = stmt.parseDefineExpr(analyzer);
- setColumnsDefineExpr(columnNameToDefineExpr);
+ try {
+ Map<String, Expr> columnNameToDefineExpr = stmt.parseDefineExpr(analyzer);
+ setColumnsDefineExpr(columnNameToDefineExpr);
+ } catch (Exception e) {
+ LOG.warn("CreateMaterializedViewStmt parseDefineExpr failed, reason=" + e.getMessage());
+ }
} catch (Exception e) {
throw new IOException("error happens when parsing create materialized view stmt: " + defineStmt, e);
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
index af4a653f46..d76e2e7aaf 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
@@ -355,8 +355,8 @@ public class OlapTable extends Table {
Preconditions.checkState(storageType == TStorageType.COLUMN);
}
- MaterializedIndexMeta indexMeta = new MaterializedIndexMeta(indexId, schema, schemaVersion,
- schemaHash, shortKeyColumnCount, storageType, keysType, origStmt, indexes);
+ MaterializedIndexMeta indexMeta = new MaterializedIndexMeta(indexId, schema, schemaVersion, schemaHash,
+ shortKeyColumnCount, storageType, keysType, origStmt, indexes, getQualifiedDbName());
try {
indexMeta.parseStmt(analyzer);
} catch (Exception e) {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org