diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/parse/TestReplicationScenarios.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/parse/TestReplicationScenarios.java index 146fb37a51..345870ef45 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/parse/TestReplicationScenarios.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/parse/TestReplicationScenarios.java @@ -1923,6 +1923,21 @@ public void testViewsReplication() throws IOException { // view is referring to old database, so no data verifyRun("SELECT * from " + dbName + "_dupe.virtual_view2", empty, driverMirror); verifyRun("SELECT * from " + dbName + "_dupe.mat_view2", unptn_data, driverMirror); + + // Test "alter table" + run("ALTER VIEW " + dbName + ".virtual_view RENAME TO " + dbName + ".virtual_view_rename", driver); + verifySetup("SELECT * from " + dbName + ".virtual_view_rename", unptn_data, driver); + + // Perform REPL-DUMP/LOAD + advanceDumpDir(); + run("REPL DUMP " + dbName + " FROM " + incrementalDumpId, driver); + incrementalDumpLocn = getResult(0, 0, driver); + incrementalDumpId = getResult(0, 1, true, driver); + LOG.info("Incremental-dump: Dumped to {} with id {}", incrementalDumpLocn, incrementalDumpId); + run("EXPLAIN REPL LOAD " + dbName + "_dupe FROM '" + incrementalDumpLocn + "'", driverMirror); + printOutput(driverMirror); + run("REPL LOAD " + dbName + "_dupe FROM '" + incrementalDumpLocn + "'", driverMirror); + verifyRun("SELECT * from " + dbName + "_dupe.virtual_view_rename", empty, driverMirror); } @Test diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/ImportTableDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/ImportTableDesc.java index e574a479b4..a4fb378b83 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ImportTableDesc.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ImportTableDesc.java @@ -300,8 +300,12 @@ public String getSerName() { * @param replaceMode Determine if this CreateTable should behave like a replace-into alter instead */ public void setReplaceMode(boolean replaceMode) { - if (TYPE.TABLE.equals(getTableType())) { - createTblDesc.setReplaceMode(replaceMode); + switch (getTableType()) { + case TABLE: + createTblDesc.setReplaceMode(replaceMode); + break; + case VIEW: + createViewDesc.setOrReplace(replaceMode); } }