Repository: hive Updated Branches: refs/heads/master c737dbd8f -> fd5f34fdd
HIVE-20916 : Fix typo in JSONCreateDatabaseMessage and add test for alter database (Vihang Karajgaonkar, reviewed by Andrew Sherman and Bharathkrishna Guruvayoor Murali) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/fd5f34fd Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/fd5f34fd Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/fd5f34fd Branch: refs/heads/master Commit: fd5f34fdd9be45b05f7cd7c771b01ff9dd1765fc Parents: c737dbd Author: Vihang Karajgaonkar <vihan...@apache.org> Authored: Fri Nov 16 10:59:41 2018 -0800 Committer: Vihang Karajgaonkar <vihan...@apache.org> Committed: Fri Nov 16 10:59:58 2018 -0800 ---------------------------------------------------------------------- .../listener/TestDbNotificationListener.java | 35 ++++++++++++++++++++ .../json/JSONCreateDatabaseMessage.java | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/fd5f34fd/itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/TestDbNotificationListener.java ---------------------------------------------------------------------- diff --git a/itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/TestDbNotificationListener.java b/itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/TestDbNotificationListener.java index 3e404df..d4b7b02 100644 --- a/itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/TestDbNotificationListener.java +++ b/itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/TestDbNotificationListener.java @@ -81,6 +81,7 @@ import org.apache.hadoop.hive.metastore.events.ListenerEvent; import org.apache.hadoop.hive.metastore.events.AllocWriteIdEvent; import org.apache.hadoop.hive.metastore.events.AcidWriteEvent; import org.apache.hadoop.hive.metastore.messaging.AddPartitionMessage; +import org.apache.hadoop.hive.metastore.messaging.AlterDatabaseMessage; import org.apache.hadoop.hive.metastore.messaging.AlterPartitionMessage; import org.apache.hadoop.hive.metastore.messaging.AlterTableMessage; import org.apache.hadoop.hive.metastore.messaging.CreateDatabaseMessage; @@ -341,6 +342,7 @@ public class TestDbNotificationListener { // Parse the message field CreateDatabaseMessage createDbMsg = md.getCreateDatabaseMessage(event.getMessage()); assertEquals(dbName, createDbMsg.getDB()); + assertEquals(db, createDbMsg.getDatabaseObject()); // Verify the eventID was passed to the non-transactional listener MockMetaStoreEventListener.popAndVerifyLastEventId(EventType.CREATE_DATABASE, firstEventId + 1); @@ -364,6 +366,39 @@ public class TestDbNotificationListener { } @Test + public void alterDatabase() throws Exception { + String dbName = "alterdb"; + String dbLocationUri = testTempDir; + String dbDescription = "no description"; + msClient.createDatabase(new Database(dbName, dbDescription, dbLocationUri, emptyParameters)); + // get the db for comparison below since it may include additional parameters + Database dbBefore = msClient.getDatabase(dbName); + // create alter database notification + String newDesc = "test database"; + Database dbAfter = dbBefore.deepCopy(); + dbAfter.setDescription(newDesc); + msClient.alterDatabase(dbName, dbAfter); + dbAfter = msClient.getDatabase(dbName); + + // Read notification from metastore + NotificationEventResponse rsp = msClient.getNextNotification(firstEventId, 0, null); + assertEquals(2, rsp.getEventsSize()); + // check the contents of alter database notification + NotificationEvent event = rsp.getEvents().get(1); + assertEquals(firstEventId + 2, event.getEventId()); + assertTrue(event.getEventTime() >= startTime); + assertEquals(EventType.ALTER_DATABASE.toString(), event.getEventType()); + assertEquals(dbName, event.getDbName()); + assertNull(event.getTableName()); + + // Parse the message field + AlterDatabaseMessage alterDatabaseMessage = md.getAlterDatabaseMessage(event.getMessage()); + assertEquals(dbName, alterDatabaseMessage.getDB()); + assertEquals(dbBefore, alterDatabaseMessage.getDbObjBefore()); + assertEquals(dbAfter, alterDatabaseMessage.getDbObjAfter()); + } + + @Test public void dropDatabase() throws Exception { String dbName = "dropdb"; String dbName2 = "dropdb2"; http://git-wip-us.apache.org/repos/asf/hive/blob/fd5f34fd/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/messaging/json/JSONCreateDatabaseMessage.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/messaging/json/JSONCreateDatabaseMessage.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/messaging/json/JSONCreateDatabaseMessage.java index 1f5c9e8..4ee854a 100644 --- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/messaging/json/JSONCreateDatabaseMessage.java +++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/messaging/json/JSONCreateDatabaseMessage.java @@ -51,7 +51,7 @@ public class JSONCreateDatabaseMessage extends CreateDatabaseMessage { try { this.dbJson = MessageBuilder.createDatabaseObjJson(db); } catch (TException ex) { - throw new IllegalArgumentException("Could not serialize Function object", ex); + throw new IllegalArgumentException("Could not serialize database object", ex); } checkValid(); }