This is an automated email from the ASF dual-hosted git repository.
pgaref pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new 8b20fcb HIVE-25520 - Enable concatenate for external table. (Harish
Jaiprakash, reviewed by Panos Garefalakis)
8b20fcb is described below
commit 8b20fcbce030802fa4533422bda1f5194dd30949
Author: Harish Jaiprakash <[email protected]>
AuthorDate: Wed Oct 6 23:38:27 2021 +0530
HIVE-25520 - Enable concatenate for external table. (Harish Jaiprakash,
reviewed by Panos Garefalakis)
---
.../java/org/apache/hadoop/hive/conf/HiveConf.java | 3 +++
.../concatenate/AlterTableConcatenateAnalyzer.java | 7 ++++++-
.../external_table_concatenate_fail.q | 2 ++
.../clientpositive/external_table_concatenate.q | 4 ++++
.../external_table_concatenate_fail.q.out | 9 ++++++++
.../llap/external_table_concatenate.q.out | 24 ++++++++++++++++++++++
6 files changed, 48 insertions(+), 1 deletion(-)
diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
index cf96fff..65fa491 100644
--- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
+++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
@@ -3256,6 +3256,9 @@ public class HiveConf extends Configuration {
TRANSACTIONAL_CONCATENATE_NOBLOCK("hive.transactional.concatenate.noblock",
false,
"Will cause 'alter table T concatenate' to be non-blocking"),
+ CONCATENATE_EXTERNAL_TABLE("hive.concatenate.external.table", false,
+ "Enable concatenate for external tables. This allows 'alter table
`tablename` concatenate' " +
+ "on external tables."),
HIVE_COMPACTOR_COMPACT_MM("hive.compactor.compact.insert.only", true,
"Whether the compactor should compact insert-only tables. A safety
switch."),
diff --git
a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/concatenate/AlterTableConcatenateAnalyzer.java
b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/concatenate/AlterTableConcatenateAnalyzer.java
index ce44882..8d7f5cd 100644
---
a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/concatenate/AlterTableConcatenateAnalyzer.java
+++
b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/concatenate/AlterTableConcatenateAnalyzer.java
@@ -78,8 +78,13 @@ public class AlterTableConcatenateAnalyzer extends
AbstractAlterTableAnalyzer {
if (table.isNonNative()) {
throw new
SemanticException(ErrorMsg.CONCATENATE_UNSUPPORTED_TABLE_NON_NATIVE.getMsg());
}
+
if (table.getTableType() != TableType.MANAGED_TABLE) {
- throw new
SemanticException(ErrorMsg.CONCATENATE_UNSUPPORTED_TABLE_NOT_MANAGED.getMsg());
+ // Enable concatenate for external tables if config is set.
+ if (!conf.getBoolVar(ConfVars.CONCATENATE_EXTERNAL_TABLE)
+ || table.getTableType() != TableType.EXTERNAL_TABLE) {
+ throw new
SemanticException(ErrorMsg.CONCATENATE_UNSUPPORTED_TABLE_NOT_MANAGED.getMsg());
+ }
}
if (table.isPartitioned()) {
diff --git
a/ql/src/test/queries/clientnegative/external_table_concatenate_fail.q
b/ql/src/test/queries/clientnegative/external_table_concatenate_fail.q
new file mode 100644
index 0000000..e6d034c
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/external_table_concatenate_fail.q
@@ -0,0 +1,2 @@
+create external table test_ext_concat (i int) stored as orc;
+alter table test_ext_concat concatenate;
diff --git a/ql/src/test/queries/clientpositive/external_table_concatenate.q
b/ql/src/test/queries/clientpositive/external_table_concatenate.q
new file mode 100644
index 0000000..66311c0
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/external_table_concatenate.q
@@ -0,0 +1,4 @@
+SET hive.concatenate.external.table=true;
+create external table test_ext_concat (i int) stored as orc;
+alter table test_ext_concat concatenate;
+drop table test_ext_concat;
diff --git
a/ql/src/test/results/clientnegative/external_table_concatenate_fail.q.out
b/ql/src/test/results/clientnegative/external_table_concatenate_fail.q.out
new file mode 100644
index 0000000..056bbf3
--- /dev/null
+++ b/ql/src/test/results/clientnegative/external_table_concatenate_fail.q.out
@@ -0,0 +1,9 @@
+PREHOOK: query: create external table test_ext_concat (i int) stored as orc
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@test_ext_concat
+POSTHOOK: query: create external table test_ext_concat (i int) stored as orc
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@test_ext_concat
+FAILED: SemanticException [Error 30034]: Concatenate/Merge can only be
performed on managed tables
diff --git
a/ql/src/test/results/clientpositive/llap/external_table_concatenate.q.out
b/ql/src/test/results/clientpositive/llap/external_table_concatenate.q.out
new file mode 100644
index 0000000..2d767cd
--- /dev/null
+++ b/ql/src/test/results/clientpositive/llap/external_table_concatenate.q.out
@@ -0,0 +1,24 @@
+PREHOOK: query: create external table test_ext_concat (i int) stored as orc
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@test_ext_concat
+POSTHOOK: query: create external table test_ext_concat (i int) stored as orc
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@test_ext_concat
+PREHOOK: query: alter table test_ext_concat concatenate
+PREHOOK: type: ALTER_TABLE_MERGE
+PREHOOK: Input: default@test_ext_concat
+PREHOOK: Output: default@test_ext_concat
+POSTHOOK: query: alter table test_ext_concat concatenate
+POSTHOOK: type: ALTER_TABLE_MERGE
+POSTHOOK: Input: default@test_ext_concat
+POSTHOOK: Output: default@test_ext_concat
+PREHOOK: query: drop table test_ext_concat
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@test_ext_concat
+PREHOOK: Output: default@test_ext_concat
+POSTHOOK: query: drop table test_ext_concat
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@test_ext_concat
+POSTHOOK: Output: default@test_ext_concat