Index: ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java (revision 1188369) +++ ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java (working copy) @@ -154,8 +154,12 @@ if (db == null || needsRefresh) { closeCurrent(); c.set("fs.scheme.class", "dfs"); - db = new Hive(c); - hiveDB.set(db); + Hive newdb = new Hive(c); + if (db != null && db.getCurrentDatabase() != null){ + newdb.setCurrentDatabase(db.getCurrentDatabase()); + } + hiveDB.set(newdb); + return newdb; } return db; } Index: ql/src/test/org/apache/hadoop/hive/ql/metadata/TestHive.java =================================================================== --- ql/src/test/org/apache/hadoop/hive/ql/metadata/TestHive.java (revision 1188369) +++ ql/src/test/org/apache/hadoop/hive/ql/metadata/TestHive.java (working copy) @@ -372,4 +372,14 @@ throw e; } } + + public void testHiveRefreshDatabase() throws Throwable{ + String testDatabaseName = "test_database"; + Database testDatabase = new Database(); + testDatabase.setName(testDatabaseName); + hm.createDatabase(testDatabase, true); + hm.setCurrentDatabase(testDatabaseName); + hm = Hive.get(hiveConf, true); //refresh Hive instance + assertEquals(testDatabaseName, hm.getCurrentDatabase()); + } }