You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ek...@apache.org on 2017/12/21 04:12:06 UTC
hive git commit: HIVE-18316 - HiveEndPoint should only work with full
acid tables (Eugene Koifman, reviewed by Sergey Shelukhin)
Repository: hive
Updated Branches:
refs/heads/master ed1cf112a -> 9dc02efae
HIVE-18316 - HiveEndPoint should only work with full acid tables (Eugene Koifman, reviewed by Sergey Shelukhin)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/9dc02efa
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/9dc02efa
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/9dc02efa
Branch: refs/heads/master
Commit: 9dc02efae9b6273309eb287534cfb413c9633141
Parents: ed1cf11
Author: Eugene Koifman <ek...@hortonworks.com>
Authored: Wed Dec 20 20:07:39 2017 -0800
Committer: Eugene Koifman <ek...@hortonworks.com>
Committed: Wed Dec 20 20:07:39 2017 -0800
----------------------------------------------------------------------
.../apache/hive/hcatalog/streaming/HiveEndPoint.java | 15 +++++----------
.../java/org/apache/hadoop/hive/ql/io/AcidUtils.java | 13 +++++++++++--
2 files changed, 16 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/9dc02efa/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java
----------------------------------------------------------------------
diff --git a/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java b/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java
index db3109e..bccf60c 100644
--- a/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java
+++ b/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java
@@ -21,7 +21,7 @@ package org.apache.hive.hcatalog.streaming;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.hive.common.JavaUtils;
import org.apache.hadoop.hive.metastore.api.DataOperationType;
-import org.apache.hadoop.hive.metastore.api.hive_metastoreConstants;
+import org.apache.hadoop.hive.ql.io.AcidUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.hadoop.hive.cli.CliSessionState;
@@ -336,15 +336,10 @@ public class HiveEndPoint {
LOG.warn("Unable to check the endPoint: " + endPoint, e);
throw new InvalidTable(endPoint.database, endPoint.table, e);
}
-
- // 1 - check if TBLPROPERTIES ('transactional'='true') is set on table
- Map<String, String> params = t.getParameters();
- if (params != null) {
- String transactionalProp = params.get(hive_metastoreConstants.TABLE_IS_TRANSACTIONAL);
- if (transactionalProp == null || !transactionalProp.equalsIgnoreCase("true")) {
- LOG.error("'transactional' property is not set on Table " + endPoint);
- throw new InvalidTable(endPoint.database, endPoint.table, "\'transactional\' property" +
- " is not set on Table"); }
+ // 1 - check that the table is Acid
+ if (!AcidUtils.isAcidTable(t)) {
+ LOG.error("HiveEndPoint " + endPoint + " must use an acid table");
+ throw new InvalidTable(endPoint.database, endPoint.table, "is not an Acid table");
}
// 2 - check if partitionvals are legitimate
http://git-wip-us.apache.org/repos/asf/hive/blob/9dc02efa/ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java
index 31316f0..bb105fe 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java
@@ -1271,9 +1271,18 @@ public class AcidUtils {
* {@link org.apache.hadoop.hive.metastore.txn.TxnUtils#isAcidTable(org.apache.hadoop.hive.metastore.api.Table)}
*/
public static boolean isAcidTable(Table table) {
- return isTransactionalTable(table) && !AcidUtils.isInsertOnlyTable(table);
+ return isAcidTable(table == null ? null : table.getTTable());
}
-
+ /**
+ * Should produce the same result as
+ * {@link org.apache.hadoop.hive.metastore.txn.TxnUtils#isAcidTable(org.apache.hadoop.hive.metastore.api.Table)}
+ */
+ public static boolean isAcidTable(org.apache.hadoop.hive.metastore.api.Table table) {
+ return table != null && table.getParameters() != null &&
+ isTablePropertyTransactional(table.getParameters()) &&
+ !isInsertOnlyTable(table.getParameters());
+ }
+
public static boolean isAcidTable(CreateTableDesc td) {
if (td == null || td.getTblProps() == null) {
return false;