default boolean isDatabaseOwner(String user, String databaseName) { // all users are "owners" of the default database if (DEFAULT_DATABASE_NAME.equalsIgnoreCase(databaseName)) { return true; } Optional<Database> databaseMetadata = getDatabase(databaseName); if (!databaseMetadata.isPresent()) { return false; } Database database = databaseMetadata.get(); // a database can be owned by a user or role if (database.getOwnerType() == USER && user.equals(database.getOwnerName())) { return true; } if (database.getOwnerType() == ROLE && getRoles(user).contains(database.getOwnerName())) { return true; } return false; }
private Task<? extends Serializable> setOwnerInfoTask(Database dbObj) { AlterDatabaseDesc alterDbDesc = new AlterDatabaseDesc(dbObj.getName(), new PrincipalDesc(dbObj.getOwnerName(), dbObj.getOwnerType()), null); DDLWork work = new DDLWork(new HashSet<>(), new HashSet<>(), alterDbDesc); return TaskFactory.get(work, context.hiveConf); }
switch (dbObj.getOwnerType()) { case USER: dbOwner = dbOwnerName;
if(db.getOwnerType() == PrincipalType.USER){ return userName.equals(db.getOwnerName()); } else if(db.getOwnerType() == PrincipalType.ROLE){ + db.getOwnerType()); return false;
new PrincipalDesc(db.getOwnerName(), db.getOwnerType()), context.eventOnlyReplicationSpec()); Task<DDLWork> alterDbTask = TaskFactory
AlterDatabaseDesc alterDbDesc; if ((oldDb.getOwnerType() == newDb.getOwnerType()) && oldDb.getOwnerName().equalsIgnoreCase(newDb.getOwnerName())) { } else { alterDbDesc = new AlterDatabaseDesc(actualDbName, new PrincipalDesc(newDb.getOwnerName(), newDb.getOwnerType()), context.eventOnlyReplicationSpec());
if(db.getOwnerType() == PrincipalType.USER){ return userName.equals(db.getOwnerName()); } else if(db.getOwnerType() == PrincipalType.ROLE){ + db.getOwnerType()); return false;
public static Database fromMetastoreApiDatabase(org.apache.hadoop.hive.metastore.api.Database database) { String ownerName = "PUBLIC"; PrincipalType ownerType = PrincipalType.ROLE; if (database.getOwnerName() != null) { ownerName = database.getOwnerName(); ownerType = fromMetastoreApiPrincipalType(database.getOwnerType()); } Map<String, String> parameters = database.getParameters(); if (parameters == null) { parameters = ImmutableMap.of(); } return Database.builder() .setDatabaseName(database.getName()) .setLocation(Optional.ofNullable(database.getLocationUri())) .setOwnerName(ownerName) .setOwnerType(ownerType) .setComment(Optional.ofNullable(database.getDescription())) .setParameters(parameters) .build(); }
public Object getFieldValue(_Fields field) { switch (field) { case NAME: return getName(); case DESCRIPTION: return getDescription(); case LOCATION_URI: return getLocationUri(); case PARAMETERS: return getParameters(); case PRIVILEGES: return getPrivileges(); case OWNER_NAME: return getOwnerName(); case OWNER_TYPE: return getOwnerType(); case CATALOG_NAME: return getCatalogName(); case CREATE_TIME: return getCreateTime(); } throw new IllegalStateException(); }
LOG.debug("getDatabase: directsql returning db " + db.getName() + " locn["+db.getLocationUri() +"] desc [" +db.getDescription() + "] owner [" + db.getOwnerName() + "] ownertype ["+ db.getOwnerType() +"]");
private void checkDbOwnerType(String dbName, String ownerName, PrincipalType ownerType) throws TException { Database db = client.getDatabase(dbName); assertEquals("Owner name", ownerName, db.getOwnerName()); assertEquals("Owner type", ownerType, db.getOwnerType()); }
mdb.setParameters(db.getParameters()); mdb.setOwnerName(db.getOwnerName()); if (db.getOwnerType() != null) { mdb.setOwnerType(db.getOwnerType().name());
@Test public void testDBOwner() throws TException { Database db = client.getDatabase(Warehouse.DEFAULT_DATABASE_NAME); assertEquals(db.getOwnerName(), HiveMetaStore.PUBLIC); assertEquals(db.getOwnerType(), PrincipalType.ROLE); }
location = "location/in/test"; PrincipalType ownerType = database.getOwnerType(); formatter.showDatabaseDescription(outStream, database.getName(), database.getDescription(), location,
location = "location/in/test"; PrincipalType ownerType = database.getOwnerType(); formatter.showDatabaseDescription(outStream, database.getName(), database.getDescription(), location,
@Override public void createDatabase(Database db) throws InvalidObjectException, MetaException { boolean commited = false; MDatabase mdb = new MDatabase(); assert db.getCatalogName() != null; mdb.setCatalogName(normalizeIdentifier(db.getCatalogName())); assert mdb.getCatalogName() != null; mdb.setName(db.getName().toLowerCase()); mdb.setLocationUri(db.getLocationUri()); mdb.setDescription(db.getDescription()); mdb.setParameters(db.getParameters()); mdb.setOwnerName(db.getOwnerName()); PrincipalType ownerType = db.getOwnerType(); mdb.setOwnerType((null == ownerType ? PrincipalType.USER.name() : ownerType.name())); mdb.setCreateTime(db.getCreateTime()); try { openTransaction(); pm.makePersistent(mdb); commited = commitTransaction(); } finally { if (!commited) { rollbackTransaction(); } } }
@Test public void testDefaultDatabaseData() throws Exception { Database database = client.getDatabase(DEFAULT_DATABASE); Assert.assertEquals("Default database name", "default", database.getName()); Assert.assertEquals("Default database description", "Default Hive database", database.getDescription()); Assert.assertEquals("Default database location", metaStore.getWarehouseRoot(), new Path(database.getLocationUri())); Assert.assertEquals("Default database parameters", new HashMap<String, String>(), database.getParameters()); Assert.assertEquals("Default database owner", "public", database.getOwnerName()); Assert.assertEquals("Default database owner type", PrincipalType.ROLE, database.getOwnerType()); Assert.assertNull("Default database privileges", database.getPrivileges()); Assert.assertTrue("database create time should be set", database.isSetCreateTime()); Assert.assertTrue("Database create time should be non-zero", database.getCreateTime() > 0); }
@Test public void testAlterDatabaseNotNullableFields() throws Exception { Database database = getDatabaseWithAllParametersSet(); client.createDatabase(database); Database originalDatabase = client.getDatabase(database.getName()); Database newDatabase = new Database(); newDatabase.setName("new_name"); newDatabase.setCatalogName(DEFAULT_CATALOG_NAME); client.alterDatabase(originalDatabase.getName(), newDatabase); // The name should not be changed, so reload the db with the original name Database alteredDatabase = client.getDatabase(originalDatabase.getName()); Assert.assertEquals("Database name should not change", originalDatabase.getName(), alteredDatabase.getName()); Assert.assertEquals("Database description should not change", originalDatabase.getDescription(), alteredDatabase.getDescription()); Assert.assertEquals("Database location should not change", originalDatabase.getLocationUri(), alteredDatabase.getLocationUri()); Assert.assertEquals("Database parameters should be empty", new HashMap<String, String>(), alteredDatabase.getParameters()); Assert.assertNull("Database owner should be empty", alteredDatabase.getOwnerName()); Assert.assertEquals("Database owner type should not change", originalDatabase.getOwnerType(), alteredDatabase.getOwnerType()); Assert.assertNull("Database privileges should be empty", alteredDatabase.getPrivileges()); }
@Test public void testCreateDatabaseDefaultValues() throws Exception { Database database = new DatabaseBuilder() .setName("dummy") .create(client, metaStore.getConf()); Database createdDatabase = client.getDatabase(database.getName()); Assert.assertNull("Comparing description", createdDatabase.getDescription()); Assert.assertEquals("Comparing location", metaStore.getWarehouseRoot() + "/" + createdDatabase.getName() + ".db", createdDatabase.getLocationUri()); Assert.assertEquals("Comparing parameters", new HashMap<String, String>(), createdDatabase.getParameters()); Assert.assertNull("Comparing privileges", createdDatabase.getPrivileges()); Assert.assertEquals("Comparing owner name", SecurityUtils.getUser(), createdDatabase.getOwnerName()); Assert.assertEquals("Comparing owner type", PrincipalType.USER, createdDatabase.getOwnerType()); }
warehouse.getDatabasePath(db).toString(), db.getLocationUri()); assertEquals(db.getOwnerName(), SecurityUtils.getUser()); assertEquals(db.getOwnerType(), PrincipalType.USER); assertEquals(Warehouse.DEFAULT_CATALOG_NAME, db.getCatalogName()); Database db2 = new DatabaseBuilder()