private 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; }
public DatabaseMetadata(Database database) { this.ownerName = database.getOwnerName(); this.ownerType = database.getOwnerType(); this.comment = database.getComment(); this.parameters = database.getParameters(); }
public static org.apache.hadoop.hive.metastore.api.Database toMetastoreApiDatabase(Database database) { org.apache.hadoop.hive.metastore.api.Database result = new org.apache.hadoop.hive.metastore.api.Database(); result.setName(database.getDatabaseName()); database.getLocation().ifPresent(result::setLocationUri); result.setOwnerName(database.getOwnerName()); result.setOwnerType(toMetastoreApiPrincipalType(database.getOwnerType())); database.getComment().ifPresent(result::setDescription); result.setParameters(database.getParameters()); return result; }
@Test public void testConvertDatabase() { com.facebook.presto.hive.metastore.Database prestoDb = GlueToPrestoConverter.convertDatabase(testDb); assertEquals(prestoDb.getDatabaseName(), testDb.getName()); assertEquals(prestoDb.getLocation().get(), testDb.getLocationUri()); assertEquals(prestoDb.getComment().get(), testDb.getDescription()); assertEquals(prestoDb.getParameters(), testDb.getParameters()); assertEquals(prestoDb.getOwnerName(), PUBLIC_OWNER); assertEquals(prestoDb.getOwnerType(), PrincipalType.ROLE); }
@Test public void testConvertDatabase() { com.facebook.presto.hive.metastore.Database prestoDb = GlueToPrestoConverter.convertDatabase(testDb); assertEquals(prestoDb.getDatabaseName(), testDb.getName()); assertEquals(prestoDb.getLocation().get(), testDb.getLocationUri()); assertEquals(prestoDb.getComment().get(), testDb.getDescription()); assertEquals(prestoDb.getParameters(), testDb.getParameters()); assertEquals(prestoDb.getOwnerName(), PUBLIC_OWNER); assertEquals(prestoDb.getOwnerType(), PrincipalType.ROLE); }