blob: 7a6acda31cb39a5d31547d23817d62982c75033b [file] [log] [blame]
--- apache-hive-1.2.1-src/ql/src/java/org/apache/hadoop/hive/ql/Driver.java.orig 2015-06-18 22:51:23.000000000 +0200
+++ apache-hive-1.2.1-src/ql/src/java/org/apache/hadoop/hive/ql/Driver.java 2016-01-27 14:34:20.179641745 +0100
@@ -33,6 +33,7 @@
import java.util.Queue;
import java.util.Set;
+import com.google.common.collect.Sets;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -557,12 +558,27 @@
*/
public static void doAuthorization(BaseSemanticAnalyzer sem, String command)
throws HiveException, AuthorizationException {
- HashSet<ReadEntity> inputs = sem.getInputs();
- HashSet<WriteEntity> outputs = sem.getOutputs();
SessionState ss = SessionState.get();
HiveOperation op = ss.getHiveOperation();
Hive db = sem.getDb();
+ Set<ReadEntity> additionalInputs = new HashSet<ReadEntity>();
+ for (Entity e : sem.getInputs()) {
+ if (e.getType() == Entity.Type.PARTITION) {
+ additionalInputs.add(new ReadEntity(e.getTable()));
+ }
+ }
+
+ Set<WriteEntity> additionalOutputs = new HashSet<WriteEntity>();
+ for (Entity e : sem.getOutputs()) {
+ if (e.getType() == Entity.Type.PARTITION) {
+ additionalOutputs.add(new WriteEntity(e.getTable(), WriteEntity.WriteType.DDL_NO_LOCK));
+ }
+ }
+
+ Set<ReadEntity> inputs = Sets.union(sem.getInputs(), additionalInputs);
+ Set<WriteEntity> outputs = Sets.union(sem.getOutputs(), additionalOutputs);
+
if (ss.isAuthorizationModeV2()) {
// get mapping of tables to columns used
ColumnAccessInfo colAccessInfo = sem.getColumnAccessInfo();
@@ -759,8 +775,8 @@
}
- private static void doAuthorizationV2(SessionState ss, HiveOperation op, HashSet<ReadEntity> inputs,
- HashSet<WriteEntity> outputs, String command, Map<String, List<String>> tab2cols,
+ private static void doAuthorizationV2(SessionState ss, HiveOperation op, Set<ReadEntity> inputs,
+ Set<WriteEntity> outputs, String command, Map<String, List<String>> tab2cols,
Map<String, List<String>> updateTab2Cols) throws HiveException {
/* comment for reviewers -> updateTab2Cols needed to be separate from tab2cols because if I
@@ -780,7 +796,7 @@
}
private static List<HivePrivilegeObject> getHivePrivObjects(
- HashSet<? extends Entity> privObjects, Map<String, List<String>> tableName2Cols) {
+ Set<? extends Entity> privObjects, Map<String, List<String>> tableName2Cols) {
List<HivePrivilegeObject> hivePrivobjs = new ArrayList<HivePrivilegeObject>();
if(privObjects == null){
return hivePrivobjs;