From 6bddca2e05c738d8a0d8e418b5f8100c11af8279 Mon Sep 17 00:00:00 2001 From: Sam An Date: Fri, 20 Sep 2019 11:14:31 -0700 Subject: [PATCH] HIVE-22225: add owner name for create database if missing (Sam An reviewed by Naveen Gangam) --- .../hadoop/hive/metastore/HiveMetaStore.java | 7 +++++++ .../client/builder/DatabaseBuilder.java | 19 +++++++++++++++++++ .../hive/metastore/client/TestDatabases.java | 11 +++++++++++ 3 files changed, 37 insertions(+) diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java index a9d6f616e1..6b3ad80a58 100644 --- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java +++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java @@ -1423,6 +1423,13 @@ private void create_database_core(RawStore ms, final Database db) } Path dbPath = wh.determineDatabasePath(cat, db); db.setLocationUri(dbPath.toString()); + if (db.getOwnerName() == null){ + try { + db.setOwnerName(SecurityUtils.getUGI().getShortUserName()); + }catch (Exception e){ + LOG.warn("Failed to get owner name for create database operation.", e); + } + } long time = System.currentTimeMillis()/1000; db.setCreateTime((int) time); boolean success = false; diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/client/builder/DatabaseBuilder.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/client/builder/DatabaseBuilder.java index dcd57c4177..58d406d1bb 100644 --- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/client/builder/DatabaseBuilder.java +++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/client/builder/DatabaseBuilder.java @@ -113,6 +113,19 @@ public Database build(Configuration conf) throws MetaException { } } + public Database buildNoModification(Configuration conf) throws MetaException { + if (name == null) { + throw new MetaException("You must name the database"); + } + if (catalogName == null) { + catalogName = MetaStoreUtils.getDefaultCatalog(conf); + } + Database db = new Database(name, description, location, params); + db.setCatalogName(catalogName); + db.setCreateTime(createTime); + return db; + } + /** * Build the database, create it in the metastore, and then return the db object. * @param client metastore client @@ -126,4 +139,10 @@ public Database create(IMetaStoreClient client, Configuration conf) throws TExce client.createDatabase(db); return db; } + + public Database createNoModification(IMetaStoreClient client, Configuration conf) throws TException { + Database db = buildNoModification(conf); + client.createDatabase(db); + return db; + } } diff --git a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestDatabases.java b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestDatabases.java index 86b69f02c4..ed67d0322b 100644 --- a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestDatabases.java +++ b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestDatabases.java @@ -160,6 +160,17 @@ public void testCreateDatabaseDefaultValues() throws Exception { Assert.assertEquals("Comparing owner type", PrincipalType.USER, createdDatabase.getOwnerType()); } + @Test + public void testCreateDatabaseOwnerName() throws Exception{ + DatabaseBuilder databaseBuilder = new DatabaseBuilder() + .setCatalogName("hive") + .setName("dummy") + .setOwnerName(null); + + Database db = databaseBuilder.create(client, metaStore.getConf()); + Assert.assertNotNull("Owner name should be filled", db.getOwnerName()); + } + @Test(expected = MetaException.class) public void testCreateDatabaseNullName() throws Exception { Database database = testDatabases[0]; -- 2.20.1