diff --git ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java index 496bd0f..36f38f6 100644 --- ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java +++ ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java @@ -223,17 +223,27 @@ static long parseBase(Path path) { } public enum Operation { - NOT_ACID(DataOperationType.UNSET), - INSERT(DataOperationType.INSERT), - UPDATE(DataOperationType.UPDATE), - DELETE(DataOperationType.DELETE); - - private final DataOperationType dop; - private Operation(DataOperationType dop) { - this.dop = dop; - } - public DataOperationType toDataOperationType() { - return dop; + NOT_ACID, INSERT, UPDATE, DELETE; + } + + /** + * Logically this should have been defined in Operation but that causes a dependency + * on metastore package from exec jar (from the cluster) which is not allowed. + * This method should only be called from client side where metastore.* classes are present. + * Not following this will not be caught by unit tests since they have all the jar loaded. + */ + public static DataOperationType toDataOperationType(Operation op) { + switch (op) { + case NOT_ACID: + return DataOperationType.UNSET; + case INSERT: + return DataOperationType.INSERT; + case UPDATE: + return DataOperationType.UPDATE; + case DELETE: + return DataOperationType.DELETE; + default: + throw new IllegalArgumentException("Unexpected Operation: " + op); } } diff --git ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java index ee6c564..3a7d3bb 100644 --- ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java +++ ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java @@ -1760,7 +1760,7 @@ private void constructOneLBLocationMap(FileStatus fSta, partNames.add(p.getName()); } metaStoreClient.addDynamicPartitions(txnId, tbl.getDbName(), tbl.getTableName(), - partNames, operation.toDataOperationType()); + partNames, AcidUtils.toDataOperationType(operation)); } return partitionsMap; } catch (IOException e) {