You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by we...@apache.org on 2017/05/17 02:53:17 UTC

[39/50] [abbrv] hive git commit: HIVE-16324: Truncate table should not work when EXTERNAL property of table is true (Vihang Karajgaonkar via Aihua Xu, reviewed by Thejas M Nair)

HIVE-16324: Truncate table should not work when EXTERNAL property of table is true (Vihang Karajgaonkar via Aihua Xu, reviewed by Thejas M Nair)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/7d4554dd
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/7d4554dd
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/7d4554dd

Branch: refs/heads/hive-14535
Commit: 7d4554dd1def433e0439cdbe7dfa665b6909e706
Parents: 413245e
Author: Aihua Xu <ai...@apache.org>
Authored: Mon May 15 16:08:50 2017 -0400
Committer: Aihua Xu <ai...@apache.org>
Committed: Mon May 15 16:08:50 2017 -0400

----------------------------------------------------------------------
 .../apache/hadoop/hive/metastore/ObjectStore.java  |  6 +++---
 .../hadoop/hive/metastore/cache/CachedStore.java   |  2 +-
 .../clientnegative/truncate_table_failure5.q       |  5 +++++
 .../clientnegative/truncate_table_failure6.q       |  5 +++++
 .../clientnegative/truncate_table_failure5.q.out   | 17 +++++++++++++++++
 .../clientnegative/truncate_table_failure6.q.out   | 17 +++++++++++++++++
 6 files changed, 48 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/7d4554dd/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
----------------------------------------------------------------------
diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
index ed19f42..ee48617 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
@@ -1155,7 +1155,7 @@ public class ObjectStore implements RawStore, Configurable {
     return mConstraints;
   }
 
-@Override
+  @Override
   public Table getTable(String dbName, String tableName) throws MetaException {
     boolean commited = false;
     Table tbl = null;
@@ -1434,7 +1434,7 @@ public class ObjectStore implements RawStore, Configurable {
       // for backwards compatibility with old metastore persistence
       if (mtbl.getViewOriginalText() != null) {
         tableType = TableType.VIRTUAL_VIEW.toString();
-      } else if ("TRUE".equals(mtbl.getParameters().get("EXTERNAL"))) {
+      } else if (Boolean.parseBoolean(mtbl.getParameters().get("EXTERNAL"))) {
         tableType = TableType.EXTERNAL_TABLE.toString();
       } else {
         tableType = TableType.MANAGED_TABLE.toString();
@@ -1466,7 +1466,7 @@ public class ObjectStore implements RawStore, Configurable {
     // If the table has property EXTERNAL set, update table type
     // accordingly
     String tableType = tbl.getTableType();
-    boolean isExternal = "TRUE".equals(tbl.getParameters().get("EXTERNAL"));
+    boolean isExternal = Boolean.parseBoolean(tbl.getParameters().get("EXTERNAL"));
     if (TableType.MANAGED_TABLE.toString().equals(tableType)) {
       if (isExternal) {
         tableType = TableType.EXTERNAL_TABLE.toString();

http://git-wip-us.apache.org/repos/asf/hive/blob/7d4554dd/metastore/src/java/org/apache/hadoop/hive/metastore/cache/CachedStore.java
----------------------------------------------------------------------
diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/cache/CachedStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/cache/CachedStore.java
index 5a187d8..1cc838f 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/cache/CachedStore.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/cache/CachedStore.java
@@ -447,7 +447,7 @@ public class CachedStore implements RawStore, Configurable {
     // If the table has property EXTERNAL set, update table type
     // accordingly
     String tableType = tbl.getTableType();
-    boolean isExternal = "TRUE".equals(tbl.getParameters().get("EXTERNAL"));
+    boolean isExternal = Boolean.parseBoolean(tbl.getParameters().get("EXTERNAL"));
     if (TableType.MANAGED_TABLE.toString().equals(tableType)) {
       if (isExternal) {
         tableType = TableType.EXTERNAL_TABLE.toString();

http://git-wip-us.apache.org/repos/asf/hive/blob/7d4554dd/ql/src/test/queries/clientnegative/truncate_table_failure5.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientnegative/truncate_table_failure5.q b/ql/src/test/queries/clientnegative/truncate_table_failure5.q
new file mode 100644
index 0000000..efabb34
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/truncate_table_failure5.q
@@ -0,0 +1,5 @@
+create table external1 (col1 int, col2 string);
+alter table external1 set tblproperties ('EXTERNAL'='true');
+
+-- truncate on a non-managed table should throw exception
+truncate table external1;

http://git-wip-us.apache.org/repos/asf/hive/blob/7d4554dd/ql/src/test/queries/clientnegative/truncate_table_failure6.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientnegative/truncate_table_failure6.q b/ql/src/test/queries/clientnegative/truncate_table_failure6.q
new file mode 100644
index 0000000..b73ec63
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/truncate_table_failure6.q
@@ -0,0 +1,5 @@
+create table external1 (col1 int, col2 string);
+alter table external1 set tblproperties ('EXTERNAL'='TRUE');
+
+-- truncate on external table should throw exception. Property value of 'EXTERNAL' is not case sensitive
+truncate table external1;

http://git-wip-us.apache.org/repos/asf/hive/blob/7d4554dd/ql/src/test/results/clientnegative/truncate_table_failure5.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/truncate_table_failure5.q.out b/ql/src/test/results/clientnegative/truncate_table_failure5.q.out
new file mode 100644
index 0000000..d2f625d
--- /dev/null
+++ b/ql/src/test/results/clientnegative/truncate_table_failure5.q.out
@@ -0,0 +1,17 @@
+PREHOOK: query: create table external1 (col1 int, col2 string)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@external1
+POSTHOOK: query: create table external1 (col1 int, col2 string)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@external1
+PREHOOK: query: alter table external1 set tblproperties ('EXTERNAL'='true')
+PREHOOK: type: ALTERTABLE_PROPERTIES
+PREHOOK: Input: default@external1
+PREHOOK: Output: default@external1
+POSTHOOK: query: alter table external1 set tblproperties ('EXTERNAL'='true')
+POSTHOOK: type: ALTERTABLE_PROPERTIES
+POSTHOOK: Input: default@external1
+POSTHOOK: Output: default@external1
+FAILED: SemanticException [Error 10146]: Cannot truncate non-managed table external1.

http://git-wip-us.apache.org/repos/asf/hive/blob/7d4554dd/ql/src/test/results/clientnegative/truncate_table_failure6.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/truncate_table_failure6.q.out b/ql/src/test/results/clientnegative/truncate_table_failure6.q.out
new file mode 100644
index 0000000..88987f5
--- /dev/null
+++ b/ql/src/test/results/clientnegative/truncate_table_failure6.q.out
@@ -0,0 +1,17 @@
+PREHOOK: query: create table external1 (col1 int, col2 string)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@external1
+POSTHOOK: query: create table external1 (col1 int, col2 string)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@external1
+PREHOOK: query: alter table external1 set tblproperties ('EXTERNAL'='TRUE')
+PREHOOK: type: ALTERTABLE_PROPERTIES
+PREHOOK: Input: default@external1
+PREHOOK: Output: default@external1
+POSTHOOK: query: alter table external1 set tblproperties ('EXTERNAL'='TRUE')
+POSTHOOK: type: ALTERTABLE_PROPERTIES
+POSTHOOK: Input: default@external1
+POSTHOOK: Output: default@external1
+FAILED: SemanticException [Error 10146]: Cannot truncate non-managed table external1.