diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropDbStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropDbStmt.java index 9b4f58efbf..08a1e630eb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropDbStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropDbStmt.java @@ -17,9 +17,9 @@ package org.apache.doris.analysis; -import org.apache.doris.catalog.Database; import org.apache.doris.catalog.DatabaseIf; import org.apache.doris.catalog.Env; +import org.apache.doris.catalog.MysqlCompatibleDatabase; import org.apache.doris.common.ErrorCode; import org.apache.doris.common.ErrorReport; import org.apache.doris.common.UserException; @@ -62,7 +62,7 @@ public class DropDbStmt extends DdlStmt { InternalDatabaseUtil.checkDatabase(dbName, ConnectContext.get()); // Don't allow to drop mysql compatible databases DatabaseIf db = Env.getCurrentInternalCatalog().getDbNullable(dbName); - if (db != null && (db instanceof Database) && ((Database) db).isMysqlCompatibleDatabase()) { + if (db != null && db instanceof MysqlCompatibleDatabase) { ErrorReport.reportAnalysisException(ErrorCode.ERR_DBACCESS_DENIED_ERROR, analyzer.getQualifiedUser(), dbName); } 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 71e61d5791..96db31af43 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 @@ -84,14 +84,14 @@ public class Database extends MetaObject implements Writable, DatabaseIf private long id; @SerializedName(value = "fullQualifiedName") private volatile String fullQualifiedName; - private ReentrantReadWriteLock rwLock; + private final ReentrantReadWriteLock rwLock; // table family group map - private Map idToTable; + private final Map idToTable; @SerializedName(value = "nameToTable") private Map nameToTable; // table name lower cast -> table name - private Map lowerCaseToTableName; + private final Map lowerCaseToTableName; // user define function @SerializedName(value = "name2Function") @@ -893,11 +893,4 @@ public class Database extends MetaObject implements Writable, DatabaseIf
public String toString() { return toJson(); } - - // Return ture if database is created for mysql compatibility. - // Currently, we have two dbs that are created for this purpose, InformationSchemaDb and MysqlDb, - public boolean isMysqlCompatibleDatabase() { - return false; - } - } diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/DatabaseIf.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/DatabaseIf.java index 3ba2957337..e80f335be1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/DatabaseIf.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/DatabaseIf.java @@ -273,5 +273,5 @@ public interface DatabaseIf { return -1L; } - public Map getIdToTable(); + Map getIdToTable(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/MysqlCompatibleDatabase.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/MysqlCompatibleDatabase.java index 1d4aa62dc9..12d915321e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/MysqlCompatibleDatabase.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/MysqlCompatibleDatabase.java @@ -77,11 +77,6 @@ public abstract class MysqlCompatibleDatabase extends Database { throw new IOException("Not support."); } - @Override - public boolean isMysqlCompatibleDatabase() { - return true; - } - /** * This method must be re-implemented since {@link Env#createView(CreateViewStmt)} * will call this method. And create view should not succeed under this database. diff --git a/fe/fe-core/src/main/java/org/apache/doris/clone/TabletChecker.java b/fe/fe-core/src/main/java/org/apache/doris/clone/TabletChecker.java index c6f6be3d46..66497e7d18 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/clone/TabletChecker.java +++ b/fe/fe-core/src/main/java/org/apache/doris/clone/TabletChecker.java @@ -23,6 +23,7 @@ import org.apache.doris.catalog.Database; import org.apache.doris.catalog.Env; import org.apache.doris.catalog.MaterializedIndex; import org.apache.doris.catalog.MaterializedIndex.IndexExtState; +import org.apache.doris.catalog.MysqlCompatibleDatabase; import org.apache.doris.catalog.OlapTable; import org.apache.doris.catalog.Partition; import org.apache.doris.catalog.Partition.PartitionState; @@ -280,7 +281,7 @@ public class TabletChecker extends MasterDaemon { continue; } - if (db.isMysqlCompatibleDatabase()) { + if (db instanceof MysqlCompatibleDatabase) { continue; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogIf.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogIf.java index c8f3033c66..7fd240aa8d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogIf.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogIf.java @@ -172,9 +172,9 @@ public interface CatalogIf { } // Return a copy of all db collection. - public Collection> getAllDbs(); + Collection> getAllDbs(); - public boolean enableAutoAnalyze(); + boolean enableAutoAnalyze(); - public ConcurrentHashMap getIdToDb(); + ConcurrentHashMap getIdToDb(); } 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 3212d18c1d..47ea998bcb 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 @@ -839,8 +839,8 @@ public class InternalCatalog implements CatalogIf { LOG.info("begin to drop table: {} from db: {}, is force: {}", tableName, dbName, stmt.isForceDrop()); // check database - Database db = (Database) getDbOrDdlException(dbName); - if (db.isMysqlCompatibleDatabase()) { + Database db = getDbOrDdlException(dbName); + if (db instanceof MysqlCompatibleDatabase) { throw new DdlException("Drop table from this database is not allowed."); } @@ -1066,7 +1066,7 @@ public class InternalCatalog implements CatalogIf { // check if db exists Database db = getDbOrDdlException(dbName); // InfoSchemaDb and MysqlDb can not create table manually - if (db.isMysqlCompatibleDatabase()) { + if (db instanceof MysqlCompatibleDatabase) { ErrorReport.reportDdlException(ErrorCode.ERR_CANT_CREATE_TABLE, tableName, ErrorCode.ERR_CANT_CREATE_TABLE.getCode(), "not supported create table in this database"); } @@ -3227,7 +3227,7 @@ public class InternalCatalog implements CatalogIf { for (Map.Entry entry : idToDb.entrySet()) { Database db = entry.getValue(); // Don't write internal database meta. - if (!db.isMysqlCompatibleDatabase()) { + if (!(db instanceof MysqlCompatibleDatabase)) { checksum ^= entry.getKey(); db.write(dos); } @@ -3246,7 +3246,7 @@ public class InternalCatalog implements CatalogIf { Database dbPrev = fullNameToDb.get(db.getFullName()); if (dbPrev != null) { String errMsg; - if (dbPrev.isMysqlCompatibleDatabase() || db.isMysqlCompatibleDatabase()) { + if (dbPrev instanceof MysqlCompatibleDatabase || db instanceof MysqlCompatibleDatabase) { errMsg = String.format( "Mysql compatibility problem, previous checkpoint already has a database with full name " + "%s. If its name is mysql, try to add mysqldb_replace_name=\"mysql_comp\" in fe.conf.", diff --git a/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/ShowAction.java b/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/ShowAction.java index 6db2a7e7b5..0aa5dd54d7 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/ShowAction.java +++ b/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/ShowAction.java @@ -20,6 +20,7 @@ package org.apache.doris.httpv2.rest; import org.apache.doris.catalog.Database; import org.apache.doris.catalog.DatabaseIf; import org.apache.doris.catalog.Env; +import org.apache.doris.catalog.MysqlCompatibleDatabase; import org.apache.doris.catalog.OlapTable; import org.apache.doris.catalog.Table; import org.apache.doris.catalog.TableIf.TableType; @@ -199,7 +200,7 @@ public class ShowAction extends RestBaseController { } else { for (long dbId : Env.getCurrentInternalCatalog().getDbIds()) { DatabaseIf db = Env.getCurrentInternalCatalog().getDbNullable(dbId); - if (db == null || !(db instanceof Database) || ((Database) db).isMysqlCompatibleDatabase()) { + if (db == null || !(db instanceof Database) || db instanceof MysqlCompatibleDatabase) { continue; } totalSize += getDataSizeOfDatabase(db); @@ -232,7 +233,7 @@ public class ShowAction extends RestBaseController { } else { for (long dbId : Env.getCurrentInternalCatalog().getDbIds()) { DatabaseIf db = Env.getCurrentInternalCatalog().getDbNullable(dbId); - if (db == null || !(db instanceof Database) || ((Database) db).isMysqlCompatibleDatabase()) { + if (db == null || !(db instanceof Database) || ((Database) db) instanceof MysqlCompatibleDatabase) { continue; } Map tablesEntry = getDataSizeOfTables(db, tableName, singleReplicaBool); diff --git a/fe/fe-core/src/main/java/org/apache/doris/master/PartitionInMemoryInfoCollector.java b/fe/fe-core/src/main/java/org/apache/doris/master/PartitionInMemoryInfoCollector.java index 22f2d41cfa..77ed582979 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/master/PartitionInMemoryInfoCollector.java +++ b/fe/fe-core/src/main/java/org/apache/doris/master/PartitionInMemoryInfoCollector.java @@ -19,6 +19,7 @@ package org.apache.doris.master; import org.apache.doris.catalog.Database; import org.apache.doris.catalog.Env; +import org.apache.doris.catalog.MysqlCompatibleDatabase; import org.apache.doris.catalog.OlapTable; import org.apache.doris.catalog.Partition; import org.apache.doris.catalog.Table; @@ -56,7 +57,7 @@ public class PartitionInMemoryInfoCollector extends MasterDaemon { LOG.warn("Database [" + dbId + "] does not exist, skip to update database used data quota"); continue; } - if (db.isMysqlCompatibleDatabase()) { + if (db instanceof MysqlCompatibleDatabase) { continue; } try { diff --git a/fe/fe-core/src/main/java/org/apache/doris/transaction/DbUsedDataQuotaInfoCollector.java b/fe/fe-core/src/main/java/org/apache/doris/transaction/DbUsedDataQuotaInfoCollector.java index 87d509bbb4..3a713bdc63 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/transaction/DbUsedDataQuotaInfoCollector.java +++ b/fe/fe-core/src/main/java/org/apache/doris/transaction/DbUsedDataQuotaInfoCollector.java @@ -19,6 +19,7 @@ package org.apache.doris.transaction; import org.apache.doris.catalog.Database; import org.apache.doris.catalog.Env; +import org.apache.doris.catalog.MysqlCompatibleDatabase; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.Config; import org.apache.doris.common.util.MasterDaemon; @@ -50,7 +51,7 @@ public class DbUsedDataQuotaInfoCollector extends MasterDaemon { LOG.warn("Database [" + dbId + "] does not exist, skip to update database used data quota"); continue; } - if (db.isMysqlCompatibleDatabase()) { + if (db instanceof MysqlCompatibleDatabase) { continue; } try { diff --git a/fe/fe-core/src/test/java/org/apache/doris/clone/RebalancerTestUtil.java b/fe/fe-core/src/test/java/org/apache/doris/clone/RebalancerTestUtil.java index da03d42a64..063faf2d3b 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/clone/RebalancerTestUtil.java +++ b/fe/fe-core/src/test/java/org/apache/doris/clone/RebalancerTestUtil.java @@ -21,6 +21,7 @@ import org.apache.doris.catalog.Database; import org.apache.doris.catalog.DiskInfo; import org.apache.doris.catalog.Env; import org.apache.doris.catalog.MaterializedIndex; +import org.apache.doris.catalog.MysqlCompatibleDatabase; import org.apache.doris.catalog.OlapTable; import org.apache.doris.catalog.Partition; import org.apache.doris.catalog.Replica; @@ -145,7 +146,7 @@ public class RebalancerTestUtil { continue; } - if (db.isMysqlCompatibleDatabase()) { + if (db instanceof MysqlCompatibleDatabase) { continue; }