Index: ql/src/java/org/apache/hadoop/hive/ql/parse/FunctionSemanticAnalyzer.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/parse/FunctionSemanticAnalyzer.java (版本 121561) +++ ql/src/java/org/apache/hadoop/hive/ql/parse/FunctionSemanticAnalyzer.java (工作副本) @@ -37,7 +37,9 @@ import org.apache.hadoop.hive.ql.plan.CreateFunctionDesc; import org.apache.hadoop.hive.ql.plan.DropFunctionDesc; import org.apache.hadoop.hive.ql.plan.FunctionWork; +import org.apache.hadoop.hive.ql.plan.HiveOperation; import org.apache.hadoop.hive.ql.plan.PlanUtils; +import org.apache.hadoop.hive.ql.session.SessionState; /** * FunctionSemanticAnalyzer. @@ -82,6 +84,11 @@ rootTasks.add(TaskFactory.get(new FunctionWork(desc), conf)); addEntities(functionName, isTemporaryFunction, resources); + + SessionState ss = SessionState.get(); + if (isTemporaryFunction) { + ss.setCommandType(HiveOperation.CREATETMPFUNCTION); + } } private void analyzeDropFunction(ASTNode ast) throws SemanticException { @@ -107,6 +114,11 @@ rootTasks.add(TaskFactory.get(new FunctionWork(desc), conf)); addEntities(functionName, isTemporaryFunction, null); + + SessionState ss = SessionState.get(); + if (isTemporaryFunction) { + ss.setCommandType(HiveOperation.DROPTMPFUNCTION); + } } private ResourceType getResourceType(ASTNode token) throws SemanticException { Index: ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java (版本 121561) +++ ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java (工作副本) @@ -71,7 +71,9 @@ SHOWLOCKS("SHOWLOCKS", null, null), SHOWCONF("SHOWCONF", null, null), CREATEFUNCTION("CREATEFUNCTION", null, null), + CREATETMPFUNCTION("CREATETMPFUNCTION", null, null), DROPFUNCTION("DROPFUNCTION", null, null), + DROPTMPFUNCTION("DROPTMPFUNCTION", null, null), CREATEMACRO("CREATEMACRO", null, null), DROPMACRO("DROPMACRO", null, null), CREATEVIEW("CREATEVIEW", new Privilege[]{Privilege.SELECT}, new Privilege[]{Privilege.CREATE}), Index: ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveOperationType.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveOperationType.java (版本 121561) +++ ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveOperationType.java (工作副本) @@ -73,7 +73,9 @@ SHOWLOCKS, SHOWCONF, CREATEFUNCTION, + CREATETMPFUNCTION, DROPFUNCTION, + DROPTMPFUNCTION, CREATEMACRO, DROPMACRO, CREATEVIEW, Index: 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 (版本 121561) +++ ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/Operation2Privilege.java (工作副本) @@ -323,8 +323,12 @@ (null, null)); op2Priv.put(HiveOperationType.CREATEFUNCTION, PrivRequirement.newIOPrivRequirement (null, ADMIN_PRIV_AR)); + op2Priv.put(HiveOperationType.CREATETMPFUNCTION, PrivRequirement.newIOPrivRequirement +(null, null)); op2Priv.put(HiveOperationType.DROPFUNCTION, PrivRequirement.newIOPrivRequirement (null, ADMIN_PRIV_AR)); + op2Priv.put(HiveOperationType.DROPTMPFUNCTION, PrivRequirement.newIOPrivRequirement +(null, null)); op2Priv.put(HiveOperationType.CREATEMACRO, PrivRequirement.newIOPrivRequirement (null, ADMIN_PRIV_AR)); op2Priv.put(HiveOperationType.DROPMACRO, PrivRequirement.newIOPrivRequirement