You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ma...@apache.org on 2020/02/17 04:59:50 UTC
[hive] branch master updated: HIVE-22890 : Repl load fails if table
name contains _function. (Aasha Medhi, reviewed by Mahesh Kumar Behera)
This is an automated email from the ASF dual-hosted git repository.
mahesh 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 db97be2 HIVE-22890 : Repl load fails if table name contains _function. (Aasha Medhi, reviewed by Mahesh Kumar Behera)
db97be2 is described below
commit db97be2b7c029516e1e42cadf682f97a797dd5ad
Author: Aasha Medhi <aa...@gmail.com>
AuthorDate: Mon Feb 17 10:21:09 2020 +0530
HIVE-22890 : Repl load fails if table name contains _function. (Aasha Medhi, reviewed by Mahesh Kumar Behera)
Signed-off-by: Mahesh Kumar Behera <ma...@apache.org>
---
.../TestReplicationScenariosExternalTables.java | 46 ++++++++++++++++++++++
.../events/filesystem/DatabaseEventsIterator.java | 2 +-
2 files changed, 47 insertions(+), 1 deletion(-)
diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/parse/TestReplicationScenariosExternalTables.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/parse/TestReplicationScenariosExternalTables.java
index 1815824..7a90dcc 100644
--- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/parse/TestReplicationScenariosExternalTables.java
+++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/parse/TestReplicationScenariosExternalTables.java
@@ -855,6 +855,52 @@ public class TestReplicationScenariosExternalTables extends BaseReplicationAcros
.verifyReplTargetProperty(replicatedDbName);
}
+ @Test
+ public void replicationWithTableNameContainsKeywords() throws Throwable {
+ List<String> loadWithClause = externalTableBasePathWithClause();
+
+ WarehouseInstance.Tuple tuple = primary
+ .run("use " + primaryDbName)
+ .run("create external table t1_functions (id int)")
+ .run("insert into table t1_functions values (1)")
+ .run("insert into table t1_functions values (2)")
+ .run("create external table t2_constraints (place string) partitioned by (country string)")
+ .run("insert into table t2_constraints partition(country='india') values ('bangalore')")
+ .run("insert into table t2_constraints partition(country='us') values ('austin')")
+ .run("insert into table t2_constraints partition(country='france') values ('paris')")
+ .dump(primaryDbName, null);
+
+ replica.load(replicatedDbName, tuple.dumpLocation, loadWithClause)
+ .run("repl status " + replicatedDbName)
+ .verifyResult(tuple.lastReplicationId)
+ .run("use " + replicatedDbName)
+ .run("show tables like 't1_functions'")
+ .verifyResults(new String[] {"t1_functions"})
+ .run("show tables like 't2_constraints'")
+ .verifyResults(new String[] {"t2_constraints"})
+ .run("select id from t1_functions")
+ .verifyResults(new String[] {"1", "2"})
+ .verifyReplTargetProperty(replicatedDbName);
+
+ tuple = primary.run("use " + primaryDbName)
+ .run("create external table t3_bootstrap (id int)")
+ .run("insert into table t3_bootstrap values (10)")
+ .run("insert into table t3_bootstrap values (20)")
+ .run("create table t4_tables (id int)")
+ .run("insert into table t4_tables values (10)")
+ .run("insert into table t4_tables values (20)")
+ .dump(primaryDbName, tuple.lastReplicationId);
+
+ replica.load(replicatedDbName, tuple.dumpLocation, loadWithClause)
+ .run("use " + replicatedDbName)
+ .run("show tables like 't3_bootstrap'")
+ .verifyResults(new String[] {"t3_bootstrap"})
+ .run("show tables like 't4_tables'")
+ .verifyResults(new String[] {"t4_tables"})
+ .verifyReplTargetProperty(replicatedDbName);
+ }
+
+
private List<String> externalTableBasePathWithClause() throws IOException, SemanticException {
return ReplicationTestUtils.externalTableBasePathWithClause(REPLICA_EXTERNAL_BASE, replica);
}
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/repl/bootstrap/events/filesystem/DatabaseEventsIterator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/repl/bootstrap/events/filesystem/DatabaseEventsIterator.java
index 4c84797..72baee6 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/repl/bootstrap/events/filesystem/DatabaseEventsIterator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/repl/bootstrap/events/filesystem/DatabaseEventsIterator.java
@@ -170,7 +170,7 @@ class DatabaseEventsIterator implements Iterator<BootstrapEvent> {
}
String currentPath = next.toString();
- if (currentPath.contains(FUNCTIONS_ROOT_DIR_NAME)) {
+ if (currentPath.contains(Path.SEPARATOR + FUNCTIONS_ROOT_DIR_NAME + Path.SEPARATOR)) {
LOG.debug("functions directory: {}", next.toString());
return postProcessing(new FSFunctionEvent(next));
}