From 82e2102e18df5fddc62984e61815cc28a08fedaa Mon Sep 17 00:00:00 2001 From: chenlinzhong <490103404@qq.com> Date: Tue, 17 Jan 2023 15:29:39 +0800 Subject: [PATCH] [fix](MTMV) Exceptions occur when dropping meterialized view with if exists (#15568) --- .../java/org/apache/doris/alter/Alter.java | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/alter/Alter.java b/fe/fe-core/src/main/java/org/apache/doris/alter/Alter.java index 162f22456a..d9b7b9bd12 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/alter/Alter.java +++ b/fe/fe-core/src/main/java/org/apache/doris/alter/Alter.java @@ -138,15 +138,26 @@ public class Alter { throw new DdlException("Drop materialized view without table name is unsupported : " + stmt.toSql()); } TableName tableName = !stmt.isForMTMV() ? stmt.getTableName() : stmt.getMTMVName(); - - // check db - String dbName = tableName.getDb(); - Database db = Env.getCurrentInternalCatalog().getDbOrDdlException(dbName); - - String name = tableName.getTbl(); - OlapTable olapTable = (OlapTable) db.getTableOrMetaException(name, - !stmt.isForMTMV() ? TableType.OLAP : TableType.MATERIALIZED_VIEW); - + Database db; + OlapTable olapTable; + if (stmt.isIfExists()) { + try { + String dbName = tableName.getDb(); + db = Env.getCurrentInternalCatalog().getDbOrDdlException(dbName); + String name = tableName.getTbl(); + olapTable = (OlapTable) db.getTableOrMetaException(name, + !stmt.isForMTMV() ? TableType.OLAP : TableType.MATERIALIZED_VIEW); + } catch (Exception e) { + LOG.info("db or table not exists, msg={}", e.getMessage()); + return; + } + } else { + String dbName = tableName.getDb(); + db = Env.getCurrentInternalCatalog().getDbOrDdlException(dbName); + String name = tableName.getTbl(); + olapTable = (OlapTable) db.getTableOrMetaException(name, + !stmt.isForMTMV() ? TableType.OLAP : TableType.MATERIALIZED_VIEW); + } // drop materialized view if (!stmt.isForMTMV()) { ((MaterializedViewHandler) materializedViewHandler).processDropMaterializedView(stmt, db, olapTable);