diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/FunctionSemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/FunctionSemanticAnalyzer.java index 68a25e0..dd6f552 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/FunctionSemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/FunctionSemanticAnalyzer.java @@ -24,6 +24,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.conf.HiveConf.ConfVars; +import org.apache.hadoop.hive.metastore.MetaStoreUtils; import org.apache.hadoop.hive.metastore.api.Database; import org.apache.hadoop.hive.metastore.api.ResourceType; import org.apache.hadoop.hive.metastore.api.ResourceUri; @@ -31,6 +32,7 @@ import org.apache.hadoop.hive.ql.exec.FunctionRegistry; import org.apache.hadoop.hive.ql.exec.FunctionUtils; import org.apache.hadoop.hive.ql.exec.TaskFactory; +import org.apache.hadoop.hive.ql.hooks.WriteEntity; import org.apache.hadoop.hive.ql.metadata.Hive; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.plan.CreateFunctionDesc; @@ -80,6 +82,8 @@ private void analyzeCreateFunction(ASTNode ast) throws SemanticException { CreateFunctionDesc desc = new CreateFunctionDesc(functionName, isTemporaryFunction, className, resources); rootTasks.add(TaskFactory.get(new FunctionWork(desc), conf)); + + addEntities(functionName, isTemporaryFunction); } private void analyzeDropFunction(ASTNode ast) throws SemanticException { @@ -103,6 +107,8 @@ private void analyzeDropFunction(ASTNode ast) throws SemanticException { boolean isTemporaryFunction = (ast.getFirstChildWithType(HiveParser.TOK_TEMPORARY) != null); DropFunctionDesc desc = new DropFunctionDesc(functionName, isTemporaryFunction); rootTasks.add(TaskFactory.get(new FunctionWork(desc), conf)); + + addEntities(functionName, isTemporaryFunction); } private ResourceType getResourceType(ASTNode token) throws SemanticException { @@ -144,4 +150,28 @@ private ResourceType getResourceType(ASTNode token) throws SemanticException { return resources; } + + /** + * Add write entities to the semantic analyzer to restrict function creation to priviliged users. + */ + private void addEntities(String functionName, boolean isTemporaryFunction) + throws SemanticException { + Database database = null; + if (isTemporaryFunction) { + // This means temp function creation is also restricted. + database = getDatabase(MetaStoreUtils.DEFAULT_DATABASE_NAME); + } else { + try { + String[] qualifiedNameParts = FunctionUtils.getQualifiedFunctionNameParts(functionName); + String dbName = qualifiedNameParts[0]; + database = getDatabase(dbName); + } catch (HiveException e) { + LOG.error(e); + throw new SemanticException(e); + } + } + if (database != null) { + outputs.add(new WriteEntity(database)); + } + } } diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/MacroSemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/MacroSemanticAnalyzer.java index 0ae07e3..4678d74 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/MacroSemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/MacroSemanticAnalyzer.java @@ -31,6 +31,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.conf.HiveConf.ConfVars; +import org.apache.hadoop.hive.metastore.MetaStoreUtils; import org.apache.hadoop.hive.metastore.api.Database; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.ql.ErrorMsg; @@ -38,6 +39,7 @@ import org.apache.hadoop.hive.ql.exec.FunctionRegistry; import org.apache.hadoop.hive.ql.exec.FunctionUtils; import org.apache.hadoop.hive.ql.exec.TaskFactory; +import org.apache.hadoop.hive.ql.hooks.WriteEntity; import org.apache.hadoop.hive.ql.lib.Dispatcher; import org.apache.hadoop.hive.ql.lib.Node; import org.apache.hadoop.hive.ql.lib.PreOrderWalker; @@ -138,6 +140,8 @@ public Object dispatch(Node nd, Stack stack, Object... nodeOutputs) } CreateMacroDesc desc = new CreateMacroDesc(functionName, macroColNames, macroColTypes, body); rootTasks.add(TaskFactory.get(new FunctionWork(desc), conf)); + + addEntities(); } @SuppressWarnings("unchecked") @@ -160,5 +164,13 @@ private void analyzeDropMacro(ASTNode ast) throws SemanticException { DropMacroDesc desc = new DropMacroDesc(functionName); rootTasks.add(TaskFactory.get(new FunctionWork(desc), conf)); + + addEntities(); + } + + private void addEntities() throws SemanticException { + Database database = getDatabase(MetaStoreUtils.DEFAULT_DATABASE_NAME); + // This restricts macro creation to privileged users. + outputs.add(new WriteEntity(database)); } } diff --git ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java index fae6844..baa5143 100644 --- ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java +++ ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java @@ -160,10 +160,10 @@ op2Priv.put(HiveOperationType.SHOWINDEXES, new InOutPrivs(null, null)); op2Priv.put(HiveOperationType.SHOWPARTITIONS, new InOutPrivs(null, null)); op2Priv.put(HiveOperationType.SHOWLOCKS, new InOutPrivs(null, null)); - op2Priv.put(HiveOperationType.CREATEFUNCTION, new InOutPrivs(null, null)); - op2Priv.put(HiveOperationType.DROPFUNCTION, new InOutPrivs(null, null)); - op2Priv.put(HiveOperationType.CREATEMACRO, new InOutPrivs(null, null)); - op2Priv.put(HiveOperationType.DROPMACRO, new InOutPrivs(null, null)); + op2Priv.put(HiveOperationType.CREATEFUNCTION, new InOutPrivs(null, ADMIN_PRIV_AR)); + op2Priv.put(HiveOperationType.DROPFUNCTION, new InOutPrivs(null, ADMIN_PRIV_AR)); + op2Priv.put(HiveOperationType.CREATEMACRO, new InOutPrivs(null, ADMIN_PRIV_AR)); + op2Priv.put(HiveOperationType.DROPMACRO, new InOutPrivs(null, ADMIN_PRIV_AR)); op2Priv.put(HiveOperationType.LOCKTABLE, new InOutPrivs(null, null)); op2Priv.put(HiveOperationType.UNLOCKTABLE, new InOutPrivs(null, null)); diff --git ql/src/test/queries/clientnegative/authorization_create_func1.q ql/src/test/queries/clientnegative/authorization_create_func1.q new file mode 100644 index 0000000..1a974ca --- /dev/null +++ ql/src/test/queries/clientnegative/authorization_create_func1.q @@ -0,0 +1,7 @@ +set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory; +set hive.security.authenticator.manager=org.apache.hadoop.hive.ql.security.SessionStateConfigUserAuthenticator; +set hive.security.authorization.enabled=true; +set user.name=hive_test_user; + +-- permanent function creation should fail for non-admin roles +create function perm_fn as 'org.apache.hadoop.hive.ql.udf.UDFAscii'; diff --git ql/src/test/queries/clientnegative/authorization_create_func2.q ql/src/test/queries/clientnegative/authorization_create_func2.q new file mode 100644 index 0000000..936bf2d --- /dev/null +++ ql/src/test/queries/clientnegative/authorization_create_func2.q @@ -0,0 +1,8 @@ +set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory; +set hive.security.authenticator.manager=org.apache.hadoop.hive.ql.security.SessionStateConfigUserAuthenticator; +set hive.security.authorization.enabled=true; +set user.name=hive_test_user; + +-- temp function creation should fail for non-admin roles +create temporary function temp_fn as 'org.apache.hadoop.hive.ql.udf.UDFAscii'; + diff --git ql/src/test/queries/clientnegative/authorization_create_macro1.q ql/src/test/queries/clientnegative/authorization_create_macro1.q new file mode 100644 index 0000000..a8d1d3d --- /dev/null +++ ql/src/test/queries/clientnegative/authorization_create_macro1.q @@ -0,0 +1,8 @@ +set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory; +set hive.security.authenticator.manager=org.apache.hadoop.hive.ql.security.SessionStateConfigUserAuthenticator; +set hive.security.authorization.enabled=true; +set user.name=hive_test_user; + +-- temp macro creation should fail for non-admin roles +create temporary macro mymacro1(x double) x * x; + diff --git ql/src/test/queries/clientpositive/authorization_create_func1.q ql/src/test/queries/clientpositive/authorization_create_func1.q new file mode 100644 index 0000000..47ec439 --- /dev/null +++ ql/src/test/queries/clientpositive/authorization_create_func1.q @@ -0,0 +1,14 @@ +set hive.users.in.admin.role=hive_admin_user; +set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory; +set hive.security.authenticator.manager=org.apache.hadoop.hive.ql.security.SessionStateConfigUserAuthenticator; +set hive.security.authorization.enabled=true; +set user.name=hive_admin_user; + +-- admin required for create function +set role ADMIN; + +create temporary function temp_fn as 'org.apache.hadoop.hive.ql.udf.UDFAscii'; +create function perm_fn as 'org.apache.hadoop.hive.ql.udf.UDFAscii'; + +drop temporary function temp_fn; +drop function perm_fn; diff --git ql/src/test/queries/clientpositive/authorization_create_macro1.q ql/src/test/queries/clientpositive/authorization_create_macro1.q new file mode 100644 index 0000000..e1fd0fa --- /dev/null +++ ql/src/test/queries/clientpositive/authorization_create_macro1.q @@ -0,0 +1,12 @@ +set hive.users.in.admin.role=hive_admin_user; +set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory; +set hive.security.authenticator.manager=org.apache.hadoop.hive.ql.security.SessionStateConfigUserAuthenticator; +set hive.security.authorization.enabled=true; +set user.name=hive_admin_user; + +-- admin required for create macro +set role ADMIN; + +create temporary macro mymacro1(x double) x * x; + +drop temporary macro mymacro1; diff --git ql/src/test/results/clientnegative/authorization_create_func1.q.out ql/src/test/results/clientnegative/authorization_create_func1.q.out new file mode 100644 index 0000000..7c72092 --- /dev/null +++ ql/src/test/results/clientnegative/authorization_create_func1.q.out @@ -0,0 +1 @@ +FAILED: HiveAccessControlException Permission denied. Principal [name=hive_test_user, type=USER] does not have following privileges on Object [type=DATABASE, name=default] : [ADMIN PRIVILEGE] diff --git ql/src/test/results/clientnegative/authorization_create_func2.q.out ql/src/test/results/clientnegative/authorization_create_func2.q.out new file mode 100644 index 0000000..7c72092 --- /dev/null +++ ql/src/test/results/clientnegative/authorization_create_func2.q.out @@ -0,0 +1 @@ +FAILED: HiveAccessControlException Permission denied. Principal [name=hive_test_user, type=USER] does not have following privileges on Object [type=DATABASE, name=default] : [ADMIN PRIVILEGE] diff --git ql/src/test/results/clientnegative/authorization_create_macro1.q.out ql/src/test/results/clientnegative/authorization_create_macro1.q.out new file mode 100644 index 0000000..7c72092 --- /dev/null +++ ql/src/test/results/clientnegative/authorization_create_macro1.q.out @@ -0,0 +1 @@ +FAILED: HiveAccessControlException Permission denied. Principal [name=hive_test_user, type=USER] does not have following privileges on Object [type=DATABASE, name=default] : [ADMIN PRIVILEGE] diff --git ql/src/test/results/clientnegative/cluster_tasklog_retrieval.q.out ql/src/test/results/clientnegative/cluster_tasklog_retrieval.q.out index 747aa6a..96485ce 100644 --- ql/src/test/results/clientnegative/cluster_tasklog_retrieval.q.out +++ ql/src/test/results/clientnegative/cluster_tasklog_retrieval.q.out @@ -2,10 +2,12 @@ PREHOOK: query: -- TaskLog retrieval upon Null Pointer Exception in Cluster CREATE TEMPORARY FUNCTION evaluate_npe AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFEvaluateNPE' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: -- TaskLog retrieval upon Null Pointer Exception in Cluster CREATE TEMPORARY FUNCTION evaluate_npe AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFEvaluateNPE' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default PREHOOK: query: FROM src SELECT evaluate_npe(src.key) LIMIT 1 PREHOOK: type: QUERY diff --git ql/src/test/results/clientnegative/create_function_nonexistent_class.q.out ql/src/test/results/clientnegative/create_function_nonexistent_class.q.out index 393a3e8..fcd5ce7 100644 --- ql/src/test/results/clientnegative/create_function_nonexistent_class.q.out +++ ql/src/test/results/clientnegative/create_function_nonexistent_class.q.out @@ -1,4 +1,5 @@ PREHOOK: query: create function default.badfunc as 'my.nonexistent.class' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default FAILED: Class my.nonexistent.class not found FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask diff --git ql/src/test/results/clientnegative/create_function_nonexistent_db.q.out ql/src/test/results/clientnegative/create_function_nonexistent_db.q.out index ebb069e..f582d41 100644 --- ql/src/test/results/clientnegative/create_function_nonexistent_db.q.out +++ ql/src/test/results/clientnegative/create_function_nonexistent_db.q.out @@ -1,3 +1 @@ -PREHOOK: query: create function nonexistentdb.badfunc as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFUpper' -PREHOOK: type: CREATEFUNCTION -FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask. NoSuchObjectException(message:There is no database named nonexistentdb) +FAILED: SemanticException org.apache.hadoop.hive.ql.parse.SemanticException: Database does not exist: nonexistentdb diff --git ql/src/test/results/clientnegative/create_function_nonudf_class.q.out ql/src/test/results/clientnegative/create_function_nonudf_class.q.out index dd66afc..26565be 100644 --- ql/src/test/results/clientnegative/create_function_nonudf_class.q.out +++ ql/src/test/results/clientnegative/create_function_nonudf_class.q.out @@ -1,4 +1,5 @@ PREHOOK: query: create function default.badfunc as 'java.lang.String' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default FAILED: Class java.lang.String does not implement UDF, GenericUDF, or UDAF FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask diff --git ql/src/test/results/clientnegative/create_udaf_failure.q.out ql/src/test/results/clientnegative/create_udaf_failure.q.out index 3fc3d36..433ec44 100644 --- ql/src/test/results/clientnegative/create_udaf_failure.q.out +++ ql/src/test/results/clientnegative/create_udaf_failure.q.out @@ -1,5 +1,7 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION test_udaf AS 'org.apache.hadoop.hive.ql.udf.UDAFWrongArgLengthForTestCase' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: CREATE TEMPORARY FUNCTION test_udaf AS 'org.apache.hadoop.hive.ql.udf.UDAFWrongArgLengthForTestCase' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default FAILED: SemanticException org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException: public boolean org.apache.hadoop.hive.ql.udf.UDAFWrongArgLengthForTestCase$UDAFWrongArgLengthForTestCaseEvaluator.merge() requires 0 arguments but 1 are passed in. diff --git ql/src/test/results/clientnegative/create_unknown_genericudf.q.out ql/src/test/results/clientnegative/create_unknown_genericudf.q.out index af3d50b..1a2956f 100644 --- ql/src/test/results/clientnegative/create_unknown_genericudf.q.out +++ ql/src/test/results/clientnegative/create_unknown_genericudf.q.out @@ -1,4 +1,5 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION dummy_genericudf AS 'org.apache.hadoop.hive.ql.udf.generic.DummyGenericUDF' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default FAILED: Class org.apache.hadoop.hive.ql.udf.generic.DummyGenericUDF not found FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask diff --git ql/src/test/results/clientnegative/create_unknown_udf_udaf.q.out ql/src/test/results/clientnegative/create_unknown_udf_udaf.q.out index e138fd0..4263be9 100644 --- ql/src/test/results/clientnegative/create_unknown_udf_udaf.q.out +++ ql/src/test/results/clientnegative/create_unknown_udf_udaf.q.out @@ -1,4 +1,5 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION dummy_function AS 'org.apache.hadoop.hive.ql.udf.DummyFunction' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default FAILED: Class org.apache.hadoop.hive.ql.udf.DummyFunction not found FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask diff --git ql/src/test/results/clientnegative/drop_native_udf.q.out ql/src/test/results/clientnegative/drop_native_udf.q.out index 1913df9..81b1793 100644 --- ql/src/test/results/clientnegative/drop_native_udf.q.out +++ ql/src/test/results/clientnegative/drop_native_udf.q.out @@ -1,3 +1,4 @@ PREHOOK: query: DROP TEMPORARY FUNCTION max PREHOOK: type: DROPFUNCTION +PREHOOK: Output: database:default FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask diff --git ql/src/test/results/clientnegative/udf_function_does_not_implement_udf.q.out ql/src/test/results/clientnegative/udf_function_does_not_implement_udf.q.out index 9ea8668..0bf56a4 100644 --- ql/src/test/results/clientnegative/udf_function_does_not_implement_udf.q.out +++ ql/src/test/results/clientnegative/udf_function_does_not_implement_udf.q.out @@ -1,4 +1,5 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION moo AS 'org.apache.hadoop.hive.ql.Driver' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default FAILED: Class org.apache.hadoop.hive.ql.Driver does not implement UDF, GenericUDF, or UDAF FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask diff --git ql/src/test/results/clientnegative/udf_local_resource.q.out ql/src/test/results/clientnegative/udf_local_resource.q.out index b6ea77d..9e6b09b 100644 --- ql/src/test/results/clientnegative/udf_local_resource.q.out +++ ql/src/test/results/clientnegative/udf_local_resource.q.out @@ -1,3 +1,4 @@ PREHOOK: query: create function lookup as 'org.apache.hadoop.hive.ql.udf.UDFFileLookup' using file '../../data/files/sales.txt' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask. Hive warehouse is non-local, but ../../data/files/sales.txt specifies file on local filesystem. Resources on non-local warehouse should specify a non-local scheme/path diff --git ql/src/test/results/clientnegative/udf_nonexistent_resource.q.out ql/src/test/results/clientnegative/udf_nonexistent_resource.q.out index ad70d54..06a49e4 100644 --- ql/src/test/results/clientnegative/udf_nonexistent_resource.q.out +++ ql/src/test/results/clientnegative/udf_nonexistent_resource.q.out @@ -1,4 +1,5 @@ PREHOOK: query: create function lookup as 'org.apache.hadoop.hive.ql.udf.UDFFileLookup' using file 'nonexistent_file.txt' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default nonexistent_file.txt does not exist FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask. Unable to load FILE nonexistent_file.txt diff --git ql/src/test/results/clientnegative/udf_test_error.q.out ql/src/test/results/clientnegative/udf_test_error.q.out index a788a10..fae8c3c 100644 --- ql/src/test/results/clientnegative/udf_test_error.q.out +++ ql/src/test/results/clientnegative/udf_test_error.q.out @@ -1,7 +1,9 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION test_error AS 'org.apache.hadoop.hive.ql.udf.UDFTestErrorOnFalse' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: CREATE TEMPORARY FUNCTION test_error AS 'org.apache.hadoop.hive.ql.udf.UDFTestErrorOnFalse' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default PREHOOK: query: SELECT test_error(key < 125 OR key > 130) FROM src PREHOOK: type: QUERY PREHOOK: Input: default@src diff --git ql/src/test/results/clientnegative/udf_test_error_reduce.q.out ql/src/test/results/clientnegative/udf_test_error_reduce.q.out index 98b42e0..2c4642a 100644 --- ql/src/test/results/clientnegative/udf_test_error_reduce.q.out +++ ql/src/test/results/clientnegative/udf_test_error_reduce.q.out @@ -1,7 +1,9 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION test_error AS 'org.apache.hadoop.hive.ql.udf.UDFTestErrorOnFalse' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: CREATE TEMPORARY FUNCTION test_error AS 'org.apache.hadoop.hive.ql.udf.UDFTestErrorOnFalse' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default PREHOOK: query: SELECT test_error(key < 125 OR key > 130) FROM ( SELECT * diff --git ql/src/test/results/clientpositive/authorization_create_func1.q.out ql/src/test/results/clientpositive/authorization_create_func1.q.out new file mode 100644 index 0000000..45f93ba --- /dev/null +++ ql/src/test/results/clientpositive/authorization_create_func1.q.out @@ -0,0 +1,30 @@ +PREHOOK: query: -- admin required for create function +set role ADMIN +PREHOOK: type: SHOW_ROLES +POSTHOOK: query: -- admin required for create function +set role ADMIN +POSTHOOK: type: SHOW_ROLES +PREHOOK: query: create temporary function temp_fn as 'org.apache.hadoop.hive.ql.udf.UDFAscii' +PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default +POSTHOOK: query: create temporary function temp_fn as 'org.apache.hadoop.hive.ql.udf.UDFAscii' +POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default +PREHOOK: query: create function perm_fn as 'org.apache.hadoop.hive.ql.udf.UDFAscii' +PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default +POSTHOOK: query: create function perm_fn as 'org.apache.hadoop.hive.ql.udf.UDFAscii' +POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default +PREHOOK: query: drop temporary function temp_fn +PREHOOK: type: DROPFUNCTION +PREHOOK: Output: database:default +POSTHOOK: query: drop temporary function temp_fn +POSTHOOK: type: DROPFUNCTION +POSTHOOK: Output: database:default +PREHOOK: query: drop function perm_fn +PREHOOK: type: DROPFUNCTION +PREHOOK: Output: database:default +POSTHOOK: query: drop function perm_fn +POSTHOOK: type: DROPFUNCTION +POSTHOOK: Output: database:default diff --git ql/src/test/results/clientpositive/authorization_create_macro1.q.out ql/src/test/results/clientpositive/authorization_create_macro1.q.out new file mode 100644 index 0000000..9932cdd --- /dev/null +++ ql/src/test/results/clientpositive/authorization_create_macro1.q.out @@ -0,0 +1,18 @@ +PREHOOK: query: -- admin required for create macro +set role ADMIN +PREHOOK: type: SHOW_ROLES +POSTHOOK: query: -- admin required for create macro +set role ADMIN +POSTHOOK: type: SHOW_ROLES +PREHOOK: query: create temporary macro mymacro1(x double) x * x +PREHOOK: type: CREATEMACRO +PREHOOK: Output: database:default +POSTHOOK: query: create temporary macro mymacro1(x double) x * x +POSTHOOK: type: CREATEMACRO +POSTHOOK: Output: database:default +PREHOOK: query: drop temporary macro mymacro1 +PREHOOK: type: DROPMACRO +PREHOOK: Output: database:default +POSTHOOK: query: drop temporary macro mymacro1 +POSTHOOK: type: DROPMACRO +POSTHOOK: Output: database:default diff --git ql/src/test/results/clientpositive/autogen_colalias.q.out ql/src/test/results/clientpositive/autogen_colalias.q.out index a074b96..5fe1543 100644 --- ql/src/test/results/clientpositive/autogen_colalias.q.out +++ ql/src/test/results/clientpositive/autogen_colalias.q.out @@ -1,7 +1,9 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION test_max AS 'org.apache.hadoop.hive.ql.udf.UDAFTestMax' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: CREATE TEMPORARY FUNCTION test_max AS 'org.apache.hadoop.hive.ql.udf.UDAFTestMax' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default PREHOOK: query: create table dest_grouped_old1 as select 1+1, 2+2 as zz, src.key, test_max(length(src.value)), count(src.value), sin(count(src.value)), count(sin(src.value)), unix_timestamp(), CAST(SUM(IF(value > 10, value, 1)) AS INT), if(src.key > 1, 1, 0) @@ -83,6 +85,8 @@ key string None PREHOOK: query: -- Drop the temporary function at the end till HIVE-3160 gets fixed DROP TEMPORARY FUNCTION test_max PREHOOK: type: DROPFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: -- Drop the temporary function at the end till HIVE-3160 gets fixed DROP TEMPORARY FUNCTION test_max POSTHOOK: type: DROPFUNCTION +POSTHOOK: Output: database:default diff --git ql/src/test/results/clientpositive/compile_processor.q.out ql/src/test/results/clientpositive/compile_processor.q.out index 7e9bb29..b164663 100644 --- ql/src/test/results/clientpositive/compile_processor.q.out +++ ql/src/test/results/clientpositive/compile_processor.q.out @@ -1,7 +1,9 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION Pyth as 'Pyth' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: CREATE TEMPORARY FUNCTION Pyth as 'Pyth' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default PREHOOK: query: SELECT Pyth(3,4) FROM src tablesample (1 rows) PREHOOK: type: QUERY PREHOOK: Input: default@src diff --git ql/src/test/results/clientpositive/create_func1.q.out ql/src/test/results/clientpositive/create_func1.q.out index 5a249c3..62ca263 100644 --- ql/src/test/results/clientpositive/create_func1.q.out +++ ql/src/test/results/clientpositive/create_func1.q.out @@ -15,8 +15,10 @@ POSTHOOK: query: create database mydb POSTHOOK: type: CREATEDATABASE PREHOOK: query: create function mydb.func1 as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFUpper' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:mydb POSTHOOK: query: create function mydb.func1 as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFUpper' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:mydb PREHOOK: query: show functions mydb.func1 PREHOOK: type: SHOWFUNCTIONS POSTHOOK: query: show functions mydb.func1 @@ -33,8 +35,10 @@ POSTHOOK: Input: default@src ABC PREHOOK: query: drop function mydb.func1 PREHOOK: type: DROPFUNCTION +PREHOOK: Output: database:mydb POSTHOOK: query: drop function mydb.func1 POSTHOOK: type: DROPFUNCTION +POSTHOOK: Output: database:mydb PREHOOK: query: -- function should now be gone show functions mydb.func1 PREHOOK: type: SHOWFUNCTIONS @@ -44,9 +48,11 @@ POSTHOOK: type: SHOWFUNCTIONS PREHOOK: query: -- To test function name resolution create function mydb.qtest_get_java_boolean as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFUpper' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:mydb POSTHOOK: query: -- To test function name resolution create function mydb.qtest_get_java_boolean as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFUpper' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:mydb PREHOOK: query: use default PREHOOK: type: SWITCHDATABASE POSTHOOK: query: use default @@ -79,8 +85,10 @@ POSTHOOK: Input: default@src ABC NULL ABC PREHOOK: query: drop function mydb.qtest_get_java_boolean PREHOOK: type: DROPFUNCTION +PREHOOK: Output: database:mydb POSTHOOK: query: drop function mydb.qtest_get_java_boolean POSTHOOK: type: DROPFUNCTION +POSTHOOK: Output: database:mydb PREHOOK: query: drop database mydb cascade PREHOOK: type: DROPDATABASE PREHOOK: Input: database:mydb diff --git ql/src/test/results/clientpositive/create_genericudaf.q.out ql/src/test/results/clientpositive/create_genericudaf.q.out index 96fe2fa..bb1acd3 100644 --- ql/src/test/results/clientpositive/create_genericudaf.q.out +++ ql/src/test/results/clientpositive/create_genericudaf.q.out @@ -12,8 +12,10 @@ STAGE PLANS: PREHOOK: query: CREATE TEMPORARY FUNCTION test_avg AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFAverage' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: CREATE TEMPORARY FUNCTION test_avg AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFAverage' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default PREHOOK: query: EXPLAIN SELECT test_avg(1), @@ -89,5 +91,7 @@ POSTHOOK: Input: default@src 1.0 260.182 PREHOOK: query: DROP TEMPORARY FUNCTIOn test_avg PREHOOK: type: DROPFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: DROP TEMPORARY FUNCTIOn test_avg POSTHOOK: type: DROPFUNCTION +POSTHOOK: Output: database:default diff --git ql/src/test/results/clientpositive/create_genericudf.q.out ql/src/test/results/clientpositive/create_genericudf.q.out index f86ad6a..3fe2910 100644 --- ql/src/test/results/clientpositive/create_genericudf.q.out +++ ql/src/test/results/clientpositive/create_genericudf.q.out @@ -12,8 +12,10 @@ STAGE PLANS: PREHOOK: query: CREATE TEMPORARY FUNCTION test_translate AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestTranslate' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: CREATE TEMPORARY FUNCTION test_translate AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestTranslate' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default PREHOOK: query: CREATE TABLE dest1(c1 STRING, c2 STRING, c3 STRING, c4 STRING, c5 STRING, c6 STRING, c7 STRING) PREHOOK: type: CREATETABLE POSTHOOK: query: CREATE TABLE dest1(c1 STRING, c2 STRING, c3 STRING, c4 STRING, c5 STRING, c6 STRING, c7 STRING) @@ -70,8 +72,10 @@ POSTHOOK: Lineage: dest1.c7 EXPRESSION [] bbc bcc NULL NULL NULL bc abc PREHOOK: query: DROP TEMPORARY FUNCTION test_translate PREHOOK: type: DROPFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: DROP TEMPORARY FUNCTION test_translate POSTHOOK: type: DROPFUNCTION +POSTHOOK: Output: database:default POSTHOOK: Lineage: dest1.c1 EXPRESSION [] POSTHOOK: Lineage: dest1.c2 EXPRESSION [] POSTHOOK: Lineage: dest1.c3 EXPRESSION [] diff --git ql/src/test/results/clientpositive/create_udaf.q.out ql/src/test/results/clientpositive/create_udaf.q.out index 807a8bc..b0bb824 100644 --- ql/src/test/results/clientpositive/create_udaf.q.out +++ ql/src/test/results/clientpositive/create_udaf.q.out @@ -12,8 +12,10 @@ STAGE PLANS: PREHOOK: query: CREATE TEMPORARY FUNCTION test_max AS 'org.apache.hadoop.hive.ql.udf.UDAFTestMax' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: CREATE TEMPORARY FUNCTION test_max AS 'org.apache.hadoop.hive.ql.udf.UDAFTestMax' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default PREHOOK: query: CREATE TABLE dest1(col INT) PREHOOK: type: CREATETABLE POSTHOOK: query: CREATE TABLE dest1(col INT) @@ -92,6 +94,8 @@ POSTHOOK: Lineage: dest1.col EXPRESSION [(src)src.FieldSchema(name:value, type:s 98 PREHOOK: query: DROP TEMPORARY FUNCTION test_max PREHOOK: type: DROPFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: DROP TEMPORARY FUNCTION test_max POSTHOOK: type: DROPFUNCTION +POSTHOOK: Output: database:default POSTHOOK: Lineage: dest1.col EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] diff --git ql/src/test/results/clientpositive/create_view.q.out ql/src/test/results/clientpositive/create_view.q.out index 29ed662..51293af 100644 --- ql/src/test/results/clientpositive/create_view.q.out +++ ql/src/test/results/clientpositive/create_view.q.out @@ -669,10 +669,12 @@ PREHOOK: query: -- test usage of a function within a view CREATE TEMPORARY FUNCTION test_translate AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestTranslate' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: -- test usage of a function within a view CREATE TEMPORARY FUNCTION test_translate AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestTranslate' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default POSTHOOK: Lineage: table1.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] PREHOOK: query: CREATE VIEW view8(c) AS SELECT test_translate('abc', 'a', 'b') @@ -744,10 +746,12 @@ PREHOOK: query: -- test usage of a UDAF within a view CREATE TEMPORARY FUNCTION test_max AS 'org.apache.hadoop.hive.ql.udf.UDAFTestMax' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: -- test usage of a UDAF within a view CREATE TEMPORARY FUNCTION test_max AS 'org.apache.hadoop.hive.ql.udf.UDAFTestMax' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default POSTHOOK: Lineage: table1.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] PREHOOK: query: -- disable map-side aggregation CREATE VIEW view9(m) AS @@ -962,10 +966,12 @@ PREHOOK: query: -- test usage of a UDTF within a view CREATE TEMPORARY FUNCTION test_explode AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDTFExplode' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: -- test usage of a UDTF within a view CREATE TEMPORARY FUNCTION test_explode AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDTFExplode' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default POSTHOOK: Lineage: table1.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] PREHOOK: query: CREATE VIEW view11 AS SELECT test_explode(array(1,2,3)) AS (boom) @@ -1705,16 +1711,22 @@ POSTHOOK: Output: default@view16 POSTHOOK: Lineage: table1.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] PREHOOK: query: DROP TEMPORARY FUNCTION test_translate PREHOOK: type: DROPFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: DROP TEMPORARY FUNCTION test_translate POSTHOOK: type: DROPFUNCTION +POSTHOOK: Output: database:default POSTHOOK: Lineage: table1.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] PREHOOK: query: DROP TEMPORARY FUNCTION test_max PREHOOK: type: DROPFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: DROP TEMPORARY FUNCTION test_max POSTHOOK: type: DROPFUNCTION +POSTHOOK: Output: database:default POSTHOOK: Lineage: table1.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] PREHOOK: query: DROP TEMPORARY FUNCTION test_explode PREHOOK: type: DROPFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: DROP TEMPORARY FUNCTION test_explode POSTHOOK: type: DROPFUNCTION +POSTHOOK: Output: database:default POSTHOOK: Lineage: table1.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] diff --git ql/src/test/results/clientpositive/drop_udf.q.out ql/src/test/results/clientpositive/drop_udf.q.out index 422933a..c60f431 100644 --- ql/src/test/results/clientpositive/drop_udf.q.out +++ ql/src/test/results/clientpositive/drop_udf.q.out @@ -1,7 +1,9 @@ PREHOOK: query: CREATE TEMPORARY FUNCTION test_translate AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestTranslate' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: CREATE TEMPORARY FUNCTION test_translate AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestTranslate' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default PREHOOK: query: EXPLAIN DROP TEMPORARY FUNCTION test_translate PREHOOK: type: DROPFUNCTION @@ -16,5 +18,7 @@ STAGE PLANS: PREHOOK: query: DROP TEMPORARY FUNCTION test_translate PREHOOK: type: DROPFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: DROP TEMPORARY FUNCTION test_translate POSTHOOK: type: DROPFUNCTION +POSTHOOK: Output: database:default diff --git ql/src/test/results/clientpositive/macro.q.out ql/src/test/results/clientpositive/macro.q.out index c483029..dc046ba 100644 --- ql/src/test/results/clientpositive/macro.q.out +++ ql/src/test/results/clientpositive/macro.q.out @@ -1,7 +1,9 @@ PREHOOK: query: CREATE TEMPORARY MACRO SIGMOID (x DOUBLE) 1.0 / (1.0 + EXP(-x)) PREHOOK: type: CREATEMACRO +PREHOOK: Output: database:default POSTHOOK: query: CREATE TEMPORARY MACRO SIGMOID (x DOUBLE) 1.0 / (1.0 + EXP(-x)) POSTHOOK: type: CREATEMACRO +POSTHOOK: Output: database:default PREHOOK: query: SELECT SIGMOID(2) FROM src LIMIT 1 PREHOOK: type: QUERY PREHOOK: Input: default@src @@ -82,12 +84,16 @@ STAGE PLANS: PREHOOK: query: DROP TEMPORARY MACRO SIGMOID PREHOOK: type: DROPMACRO +PREHOOK: Output: database:default POSTHOOK: query: DROP TEMPORARY MACRO SIGMOID POSTHOOK: type: DROPMACRO +POSTHOOK: Output: database:default PREHOOK: query: CREATE TEMPORARY MACRO FIXED_NUMBER() 1 PREHOOK: type: CREATEMACRO +PREHOOK: Output: database:default POSTHOOK: query: CREATE TEMPORARY MACRO FIXED_NUMBER() 1 POSTHOOK: type: CREATEMACRO +POSTHOOK: Output: database:default PREHOOK: query: SELECT FIXED_NUMBER() + 1 FROM src LIMIT 1 PREHOOK: type: QUERY PREHOOK: Input: default@src @@ -169,12 +175,16 @@ STAGE PLANS: PREHOOK: query: DROP TEMPORARY MACRO FIXED_NUMBER PREHOOK: type: DROPMACRO +PREHOOK: Output: database:default POSTHOOK: query: DROP TEMPORARY MACRO FIXED_NUMBER POSTHOOK: type: DROPMACRO +POSTHOOK: Output: database:default PREHOOK: query: CREATE TEMPORARY MACRO CONF_TEST() "1" PREHOOK: type: CREATEMACRO +PREHOOK: Output: database:default POSTHOOK: query: CREATE TEMPORARY MACRO CONF_TEST() "1" POSTHOOK: type: CREATEMACRO +POSTHOOK: Output: database:default PREHOOK: query: SELECT CONF_TEST() FROM src LIMIT 1 PREHOOK: type: QUERY PREHOOK: Input: default@src @@ -186,16 +196,22 @@ POSTHOOK: Input: default@src 1 PREHOOK: query: DROP TEMPORARY MACRO CONF_TEST PREHOOK: type: DROPMACRO +PREHOOK: Output: database:default POSTHOOK: query: DROP TEMPORARY MACRO CONF_TEST POSTHOOK: type: DROPMACRO +POSTHOOK: Output: database:default PREHOOK: query: CREATE TEMPORARY MACRO SIMPLE_ADD (x INT, y INT) x + y PREHOOK: type: CREATEMACRO +PREHOOK: Output: database:default POSTHOOK: query: CREATE TEMPORARY MACRO SIMPLE_ADD (x INT, y INT) x + y POSTHOOK: type: CREATEMACRO +POSTHOOK: Output: database:default PREHOOK: query: CREATE TEMPORARY MACRO SIMPLE_ADD (x INT, y INT) x + y PREHOOK: type: CREATEMACRO +PREHOOK: Output: database:default POSTHOOK: query: CREATE TEMPORARY MACRO SIMPLE_ADD (x INT, y INT) x + y POSTHOOK: type: CREATEMACRO +POSTHOOK: Output: database:default PREHOOK: query: SELECT SIMPLE_ADD(1, 9) FROM src LIMIT 1 PREHOOK: type: QUERY PREHOOK: Input: default@src @@ -277,9 +293,13 @@ STAGE PLANS: PREHOOK: query: DROP TEMPORARY MACRO SIMPLE_ADD PREHOOK: type: DROPMACRO +PREHOOK: Output: database:default POSTHOOK: query: DROP TEMPORARY MACRO SIMPLE_ADD POSTHOOK: type: DROPMACRO +POSTHOOK: Output: database:default PREHOOK: query: DROP TEMPORARY MACRO SIMPLE_ADD PREHOOK: type: DROPMACRO +PREHOOK: Output: database:default POSTHOOK: query: DROP TEMPORARY MACRO SIMPLE_ADD POSTHOOK: type: DROPMACRO +POSTHOOK: Output: database:default diff --git ql/src/test/results/clientpositive/ptf_register_tblfn.q.out ql/src/test/results/clientpositive/ptf_register_tblfn.q.out index e10779a..dfec80e 100644 --- ql/src/test/results/clientpositive/ptf_register_tblfn.q.out +++ ql/src/test/results/clientpositive/ptf_register_tblfn.q.out @@ -31,8 +31,10 @@ POSTHOOK: type: LOAD POSTHOOK: Output: default@flights_tiny PREHOOK: query: create temporary function matchpathtest as 'org.apache.hadoop.hive.ql.udf.ptf.MatchPath$MatchPathResolver' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: create temporary function matchpathtest as 'org.apache.hadoop.hive.ql.udf.ptf.MatchPath$MatchPathResolver' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default PREHOOK: query: -- 1. basic Matchpath test select origin_city_name, fl_num, year, month, day_of_month, sz, tpath from matchpathtest(on @@ -77,5 +79,7 @@ Chicago 897 2010 10 21 3 21 Chicago 897 2010 10 22 2 22 PREHOOK: query: drop temporary function matchpathtest PREHOOK: type: DROPFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: drop temporary function matchpathtest POSTHOOK: type: DROPFUNCTION +POSTHOOK: Output: database:default diff --git ql/src/test/results/clientpositive/udaf_sum_list.q.out ql/src/test/results/clientpositive/udaf_sum_list.q.out index b1922d9..51708b3 100644 --- ql/src/test/results/clientpositive/udaf_sum_list.q.out +++ ql/src/test/results/clientpositive/udaf_sum_list.q.out @@ -3,11 +3,13 @@ PREHOOK: query: -- HIVE-5279 -- After create temporary function sum_list as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFSumList' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: -- HIVE-5279 -- GenericUDAFSumList has Converter which does not have default constructor -- After create temporary function sum_list as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFSumList' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default PREHOOK: query: select sum_list(array(key, key)) from src PREHOOK: type: QUERY PREHOOK: Input: default@src diff --git ql/src/test/results/clientpositive/udf_compare_java_string.q.out ql/src/test/results/clientpositive/udf_compare_java_string.q.out index 8e6e365..e522e51 100644 --- ql/src/test/results/clientpositive/udf_compare_java_string.q.out +++ ql/src/test/results/clientpositive/udf_compare_java_string.q.out @@ -12,8 +12,10 @@ STAGE PLANS: PREHOOK: query: CREATE TEMPORARY FUNCTION test_udf_get_java_string AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestGetJavaString' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: CREATE TEMPORARY FUNCTION test_udf_get_java_string AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestGetJavaString' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default PREHOOK: query: select * from src where value = test_udf_get_java_string("val_66") PREHOOK: type: QUERY PREHOOK: Input: default@src diff --git ql/src/test/results/clientpositive/udf_context_aware.q.out ql/src/test/results/clientpositive/udf_context_aware.q.out index 10414fa..2e214c5 100644 --- ql/src/test/results/clientpositive/udf_context_aware.q.out +++ ql/src/test/results/clientpositive/udf_context_aware.q.out @@ -1,7 +1,9 @@ PREHOOK: query: create temporary function counter as 'org.apache.hadoop.hive.ql.udf.generic.DummyContextUDF' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: create temporary function counter as 'org.apache.hadoop.hive.ql.udf.generic.DummyContextUDF' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default PREHOOK: query: select *, counter(key) from src limit 20 PREHOOK: type: QUERY PREHOOK: Input: default@src diff --git ql/src/test/results/clientpositive/udf_logic_java_boolean.q.out ql/src/test/results/clientpositive/udf_logic_java_boolean.q.out index 88c1984..f48c8b2 100644 --- ql/src/test/results/clientpositive/udf_logic_java_boolean.q.out +++ ql/src/test/results/clientpositive/udf_logic_java_boolean.q.out @@ -12,8 +12,10 @@ STAGE PLANS: PREHOOK: query: CREATE TEMPORARY FUNCTION test_udf_get_java_boolean AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestGetJavaBoolean' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: CREATE TEMPORARY FUNCTION test_udf_get_java_boolean AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestGetJavaBoolean' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default PREHOOK: query: select 1 from src where test_udf_get_java_boolean("false") and True limit 1 PREHOOK: type: QUERY PREHOOK: Input: default@src @@ -169,5 +171,7 @@ POSTHOOK: Input: default@src #### A masked pattern was here #### PREHOOK: query: DROP TEMPORARY FUNCTION test_udf_get_java_boolean PREHOOK: type: DROPFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: DROP TEMPORARY FUNCTION test_udf_get_java_boolean POSTHOOK: type: DROPFUNCTION +POSTHOOK: Output: database:default diff --git ql/src/test/results/clientpositive/udf_testlength.q.out ql/src/test/results/clientpositive/udf_testlength.q.out index 4d75482..28d96fa 100644 --- ql/src/test/results/clientpositive/udf_testlength.q.out +++ ql/src/test/results/clientpositive/udf_testlength.q.out @@ -12,8 +12,10 @@ STAGE PLANS: PREHOOK: query: CREATE TEMPORARY FUNCTION testlength AS 'org.apache.hadoop.hive.ql.udf.UDFTestLength' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: CREATE TEMPORARY FUNCTION testlength AS 'org.apache.hadoop.hive.ql.udf.UDFTestLength' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default PREHOOK: query: SELECT testlength(src.value) FROM src PREHOOK: type: QUERY PREHOOK: Input: default@src @@ -524,5 +526,7 @@ POSTHOOK: Input: default@src 6 PREHOOK: query: DROP TEMPORARY FUNCTION testlength PREHOOK: type: DROPFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: DROP TEMPORARY FUNCTION testlength POSTHOOK: type: DROPFUNCTION +POSTHOOK: Output: database:default diff --git ql/src/test/results/clientpositive/udf_testlength2.q.out ql/src/test/results/clientpositive/udf_testlength2.q.out index 8a1e03e..4d2c407 100644 --- ql/src/test/results/clientpositive/udf_testlength2.q.out +++ ql/src/test/results/clientpositive/udf_testlength2.q.out @@ -12,8 +12,10 @@ STAGE PLANS: PREHOOK: query: CREATE TEMPORARY FUNCTION testlength2 AS 'org.apache.hadoop.hive.ql.udf.UDFTestLength2' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: CREATE TEMPORARY FUNCTION testlength2 AS 'org.apache.hadoop.hive.ql.udf.UDFTestLength2' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default PREHOOK: query: SELECT testlength2(src.value) FROM src PREHOOK: type: QUERY PREHOOK: Input: default@src @@ -524,5 +526,7 @@ POSTHOOK: Input: default@src 6 PREHOOK: query: DROP TEMPORARY FUNCTION testlength2 PREHOOK: type: DROPFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: DROP TEMPORARY FUNCTION testlength2 POSTHOOK: type: DROPFUNCTION +POSTHOOK: Output: database:default diff --git ql/src/test/results/clientpositive/udf_using.q.out ql/src/test/results/clientpositive/udf_using.q.out index 69e5f3b..6cb9a6c 100644 --- ql/src/test/results/clientpositive/udf_using.q.out +++ ql/src/test/results/clientpositive/udf_using.q.out @@ -1,7 +1,9 @@ #### A masked pattern was here #### PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default #### A masked pattern was here #### POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default PREHOOK: query: create table udf_using (c1 string) PREHOOK: type: CREATETABLE POSTHOOK: query: create table udf_using (c1 string) @@ -38,7 +40,9 @@ POSTHOOK: Output: default@udf_using POSTHOOK: Lineage: udf_using.c1 SIMPLE [] PREHOOK: query: drop function lookup PREHOOK: type: DROPFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: drop function lookup POSTHOOK: type: DROPFUNCTION +POSTHOOK: Output: database:default POSTHOOK: Lineage: udf_using.c1 SIMPLE [] #### A masked pattern was here #### diff --git ql/src/test/results/clientpositive/windowing_udaf2.q.out ql/src/test/results/clientpositive/windowing_udaf2.q.out index 5043a45..4a4b6cf 100644 --- ql/src/test/results/clientpositive/windowing_udaf2.q.out +++ ql/src/test/results/clientpositive/windowing_udaf2.q.out @@ -1,9 +1,11 @@ PREHOOK: query: -- user-added aggregates should be usable as windowing functions create temporary function mysum as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFSum' PREHOOK: type: CREATEFUNCTION +PREHOOK: Output: database:default POSTHOOK: query: -- user-added aggregates should be usable as windowing functions create temporary function mysum as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFSum' POSTHOOK: type: CREATEFUNCTION +POSTHOOK: Output: database:default PREHOOK: query: select sum(key) over (), mysum(key) over () from src limit 1 PREHOOK: type: QUERY PREHOOK: Input: default@src