@@ -76,6 +76,8 @@ public class CatalogMgr implements Writable, GsonPostProcessable {
7676 private final Map <Long , CatalogIf > idToCatalog = Maps .newConcurrentMap ();
7777 // this map will be regenerated from idToCatalog, so not need to persist.
7878 private final Map <String , CatalogIf > nameToCatalog = Maps .newConcurrentMap ();
79+ // record last used database of every catalog
80+ private final Map <String , String > lastDBOfCatalog = Maps .newConcurrentMap ();
7981
8082 // Use a separate instance to facilitate access.
8183 // internalDataSource still exists in idToDataSource and nameToDataSource
@@ -105,6 +107,7 @@ private CatalogIf removeCatalog(long catalogId) {
105107 if (catalog != null ) {
106108 catalog .onClose ();
107109 nameToCatalog .remove (catalog .getName ());
110+ lastDBOfCatalog .remove (catalog .getName ());
108111 Env .getCurrentEnv ().getExtMetaCacheMgr ().removeCache (catalog .getName ());
109112 }
110113 return catalog ;
@@ -146,6 +149,14 @@ public CatalogIf getCatalogOrAnalysisException(String name) throws AnalysisExcep
146149 ErrorCode .ERR_UNKNOWN_CATALOG ));
147150 }
148151
152+ public void addLastDBOfCatalog (String catalog , String db ) {
153+ lastDBOfCatalog .put (catalog , db );
154+ }
155+
156+ public String getLastDB (String catalog ) {
157+ return lastDBOfCatalog .get (catalog );
158+ }
159+
149160 public List <Long > getCatalogIds () {
150161 return Lists .newArrayList (idToCatalog .keySet ());
151162 }
@@ -241,6 +252,8 @@ public void dropCatalog(DropCatalogStmt stmt) throws UserException {
241252 CatalogLog log = CatalogFactory .constructorCatalogLog (catalog .getId (), stmt );
242253 replayDropCatalog (log );
243254 Env .getCurrentEnv ().getEditLog ().logCatalogLog (OperationType .OP_DROP_CATALOG , log );
255+
256+ lastDBOfCatalog .remove (stmt .getCatalogName ());
244257 } finally {
245258 writeUnlock ();
246259 }
@@ -262,6 +275,12 @@ public void alterCatalogName(AlterCatalogNameStmt stmt) throws UserException {
262275 CatalogLog log = CatalogFactory .constructorCatalogLog (catalog .getId (), stmt );
263276 replayAlterCatalogName (log );
264277 Env .getCurrentEnv ().getEditLog ().logCatalogLog (OperationType .OP_ALTER_CATALOG_NAME , log );
278+
279+ String db = lastDBOfCatalog .get (stmt .getCatalogName ());
280+ if (db != null ) {
281+ lastDBOfCatalog .remove (stmt .getCatalogName ());
282+ lastDBOfCatalog .put (log .getNewCatalogName (), db );
283+ }
265284 } finally {
266285 writeUnlock ();
267286 }
0 commit comments