This is an automated email from the ASF dual-hosted git repository. kxiao pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/doris.git
commit 075e5b1bcd3b0d6932c9dca3702af655e5226ba7 Author: Pxl <pxl...@qq.com> AuthorDate: Mon Aug 28 15:18:18 2023 +0800 [Bug](materialized-view) fix loaddb analyze failed on MaterializedIndexMeta (#23442) --- .../src/main/java/org/apache/doris/catalog/Database.java | 7 +++++++ .../java/org/apache/doris/catalog/MaterializedIndexMeta.java | 12 ++---------- .../src/main/java/org/apache/doris/catalog/OlapTable.java | 11 +++++++++++ fe/fe-core/src/main/java/org/apache/doris/catalog/Table.java | 4 ++++ .../java/org/apache/doris/datasource/InternalCatalog.java | 6 ++++++ .../org/apache/doris/catalog/MaterializedIndexMetaTest.java | 1 + 6 files changed, 31 insertions(+), 10 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Database.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Database.java index d12e607522..7c2981e239 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Database.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Database.java @@ -17,6 +17,7 @@ package org.apache.doris.catalog; +import org.apache.doris.analysis.Analyzer; import org.apache.doris.catalog.TableIf.TableType; import org.apache.doris.cluster.ClusterNamespace; import org.apache.doris.common.AnalysisException; @@ -612,6 +613,12 @@ public class Database extends MetaObject implements Writable, DatabaseIf<Table> } } + public void analyze(Analyzer analyzer) { + for (Table table : nameToTable.values()) { + table.analyze(analyzer); + } + } + @Override public void readFields(DataInput in) throws IOException { super.readFields(in); 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 f7b50e5f2d..08e8d85b88 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,10 +28,8 @@ 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; @@ -292,16 +290,9 @@ public class MaterializedIndexMeta implements Writable, GsonPostProcessable { @Override public void gsonPostProcess() throws IOException { initColumnNameMap(); - parseStmt(null); } 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; @@ -316,7 +307,8 @@ public class MaterializedIndexMeta implements Writable, GsonPostProcessable { try { stmt.analyze(analyzer); } catch (Exception e) { - LOG.warn("CreateMaterializedViewStmt analyze failed, reason=" + e.getMessage()); + LOG.warn("CreateMaterializedViewStmt analyze failed, mv=" + defineStmt.originStmt + ", reason=", e); + return; } } 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 10eddeeacf..9a7866f83a 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 @@ -2226,4 +2226,15 @@ public class OlapTable extends Table { } } } + + @Override + public void analyze(Analyzer analyzer) { + for (MaterializedIndexMeta meta : indexIdToMeta.values()) { + try { + meta.parseStmt(analyzer); + } catch (IOException e) { + e.printStackTrace(); + } + } + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Table.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Table.java index d3d72f03e3..a6d1b11d78 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Table.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Table.java @@ -18,6 +18,7 @@ package org.apache.doris.catalog; import org.apache.doris.alter.AlterCancelException; +import org.apache.doris.analysis.Analyzer; import org.apache.doris.analysis.CreateTableStmt; import org.apache.doris.common.DdlException; import org.apache.doris.common.MetaNotFoundException; @@ -554,4 +555,7 @@ public abstract class Table extends MetaObject implements Writable, TableIf { public Optional<ColumnStatistic> getColumnStatistic(String colName) { return Optional.empty(); } + + public void analyze(Analyzer analyzer) { + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java index 5502db8076..ac10fa32a2 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java @@ -3077,6 +3077,12 @@ public class InternalCatalog implements CatalogIf<Database> { idToDb.put(db.getId(), db); fullNameToDb.put(db.getFullName(), db); Env.getCurrentGlobalTransactionMgr().addDatabaseTransactionMgr(db.getId()); + + ConnectContext connectContext = new ConnectContext(); + connectContext.setCluster(SystemInfoService.DEFAULT_CLUSTER); + connectContext.setDatabase(db.getFullName()); + Analyzer analyzer = new Analyzer(Env.getCurrentEnv(), connectContext); + db.analyze(analyzer); } // ATTN: this should be done after load Db, and before loadAlterJob recreateTabletInvertIndex(); diff --git a/fe/fe-core/src/test/java/org/apache/doris/catalog/MaterializedIndexMetaTest.java b/fe/fe-core/src/test/java/org/apache/doris/catalog/MaterializedIndexMetaTest.java index 60cb797e9b..1bbf7a5682 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/catalog/MaterializedIndexMetaTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/catalog/MaterializedIndexMetaTest.java @@ -105,6 +105,7 @@ public class MaterializedIndexMetaTest { // 2. Read objects from file DataInputStream in = new DataInputStream(Files.newInputStream(path)); MaterializedIndexMeta readIndexMeta = MaterializedIndexMeta.read(in); + readIndexMeta.parseStmt(null); Assert.assertEquals(1, readIndexMeta.getIndexId()); List<Column> resultColumns = readIndexMeta.getSchema(); for (Column column : resultColumns) { --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org