use of org.apache.hadoop.hive.metastore.api.Function in project hive by apache.
the class TestDatabases method testDropDatabaseWithFunction.
@Test(expected = InvalidOperationException.class)
public void testDropDatabaseWithFunction() throws Exception {
Database database = testDatabases[0];
Function testFunction = new FunctionBuilder().setDbName(database.getName()).setName("test_function").setClass("org.apache.hadoop.hive.ql.udf.generic.GenericUDFUpper").create(client, metaStore.getConf());
client.dropDatabase(database.getName(), true, true, false);
}
use of org.apache.hadoop.hive.metastore.api.Function in project hive by apache.
the class TestHiveMetaStore method testSimpleFunction.
@Test
public void testSimpleFunction() throws Exception {
String dbName = "test_db";
String funcName = "test_func";
String className = "org.apache.hadoop.hive.ql.udf.generic.GenericUDFUpper";
String owner = "test_owner";
final int N_FUNCTIONS = 5;
PrincipalType ownerType = PrincipalType.USER;
int createTime = (int) (System.currentTimeMillis() / 1000);
FunctionType funcType = FunctionType.JAVA;
try {
cleanUp(dbName, null, null);
for (Function f : client.getAllFunctions().getFunctions()) {
client.dropFunction(f.getDbName(), f.getFunctionName());
}
createDb(dbName);
for (int i = 0; i < N_FUNCTIONS; i++) {
createFunction(dbName, funcName + "_" + i, className, owner, ownerType, createTime, funcType, null);
}
// Try the different getters
// getFunction()
Function func = client.getFunction(dbName, funcName + "_0");
assertEquals("function db name", dbName, func.getDbName());
assertEquals("function name", funcName + "_0", func.getFunctionName());
assertEquals("function class name", className, func.getClassName());
assertEquals("function owner name", owner, func.getOwnerName());
assertEquals("function owner type", PrincipalType.USER, func.getOwnerType());
assertEquals("function type", funcType, func.getFunctionType());
List<ResourceUri> resources = func.getResourceUris();
assertTrue("function resources", resources == null || resources.size() == 0);
boolean gotException = false;
try {
func = client.getFunction(dbName, "nonexistent_func");
} catch (NoSuchObjectException e) {
// expected failure
gotException = true;
}
assertEquals(true, gotException);
// getAllFunctions()
GetAllFunctionsResponse response = client.getAllFunctions();
List<Function> allFunctions = response.getFunctions();
assertEquals(N_FUNCTIONS, allFunctions.size());
assertEquals(funcName + "_3", allFunctions.get(3).getFunctionName());
// getFunctions()
List<String> funcs = client.getFunctions(dbName, "*_func_*");
assertEquals(N_FUNCTIONS, funcs.size());
assertEquals(funcName + "_0", funcs.get(0));
funcs = client.getFunctions(dbName, "nonexistent_func");
assertEquals(0, funcs.size());
// dropFunction()
for (int i = 0; i < N_FUNCTIONS; i++) {
client.dropFunction(dbName, funcName + "_" + i);
}
// Confirm that the function is now gone
funcs = client.getFunctions(dbName, funcName);
assertEquals(0, funcs.size());
response = client.getAllFunctions();
allFunctions = response.getFunctions();
assertEquals(0, allFunctions.size());
} catch (Exception e) {
System.err.println(StringUtils.stringifyException(e));
System.err.println("testConcurrentMetastores() failed.");
throw e;
} finally {
silentDropDatabase(dbName);
}
}
use of org.apache.hadoop.hive.metastore.api.Function in project hive by apache.
the class ObjectStore method getFunction.
@Override
public Function getFunction(String catName, String dbName, String funcName) throws MetaException {
boolean commited = false;
Function func = null;
Query query = null;
try {
openTransaction();
func = convertToFunction(getMFunction(catName, dbName, funcName));
commited = commitTransaction();
} finally {
rollbackAndCleanup(commited, query);
}
return func;
}
use of org.apache.hadoop.hive.metastore.api.Function in project hive by apache.
the class ObjectStore method convertToFunction.
private Function convertToFunction(MFunction mfunc) {
if (mfunc == null) {
return null;
}
Function func = new Function(mfunc.getFunctionName(), mfunc.getDatabase().getName(), mfunc.getClassName(), mfunc.getOwnerName(), PrincipalType.valueOf(mfunc.getOwnerType()), mfunc.getCreateTime(), FunctionType.findByValue(mfunc.getFunctionType()), convertToResourceUriList(mfunc.getResourceUris()));
func.setCatName(mfunc.getDatabase().getCatalogName());
return func;
}
use of org.apache.hadoop.hive.metastore.api.Function in project flink by apache.
the class HiveCatalog method alterFunction.
@Override
public void alterFunction(ObjectPath functionPath, CatalogFunction newFunction, boolean ignoreIfNotExists) throws FunctionNotExistException, CatalogException {
checkNotNull(functionPath, "functionPath cannot be null");
checkNotNull(newFunction, "newFunction cannot be null");
try {
// check if function exists
getFunction(functionPath);
Function hiveFunction;
if (newFunction instanceof CatalogFunctionImpl) {
hiveFunction = instantiateHiveFunction(functionPath, newFunction);
} else {
throw new CatalogException(String.format("Unsupported catalog function type %s", newFunction.getClass().getName()));
}
client.alterFunction(functionPath.getDatabaseName(), functionPath.getObjectName(), hiveFunction);
} catch (FunctionNotExistException e) {
if (!ignoreIfNotExists) {
throw e;
}
} catch (TException e) {
throw new CatalogException(String.format("Failed to alter function %s", functionPath.getFullName()), e);
}
}
Aggregations