Repository: hive Updated Branches: refs/heads/branch-3 ae4df6279 -> 9adf5a950
HIVE-17457 - IOW Acid Insert Overwrite when the transaction fails (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/9adf5a95 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/9adf5a95 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/9adf5a95 Branch: refs/heads/branch-3 Commit: 9adf5a95069ae5bbd65ce90b779c8dab180e0e70 Parents: ae4df62 Author: Eugene Koifman <ekoif...@apache.org> Authored: Thu May 3 09:23:30 2018 -0700 Committer: Eugene Koifman <ekoif...@apache.org> Committed: Thu May 3 09:23:30 2018 -0700 ---------------------------------------------------------------------- .../hadoop/hive/ql/lockmgr/DbTxnManager.java | 2 +- .../apache/hadoop/hive/ql/TestTxnCommands.java | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/9adf5a95/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java b/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java index 68b4c3b..94f6b00 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java @@ -361,7 +361,7 @@ public final class DbTxnManager extends HiveTxnManagerImpl { return true; case INSERT_OVERWRITE: //see HIVE-18154 - return false; // TODO: is this still relevant for insert-only tables? + return false; default: //not relevant for LOAD return false; http://git-wip-us.apache.org/repos/asf/hive/blob/9adf5a95/ql/src/test/org/apache/hadoop/hive/ql/TestTxnCommands.java ---------------------------------------------------------------------- diff --git a/ql/src/test/org/apache/hadoop/hive/ql/TestTxnCommands.java b/ql/src/test/org/apache/hadoop/hive/ql/TestTxnCommands.java index 6a3be39..6faba42 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/TestTxnCommands.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/TestTxnCommands.java @@ -74,11 +74,26 @@ public class TestTxnCommands extends TxnCommandsBaseForTests { return TEST_DATA_DIR; } - @Test//todo: what is this for? + /** + * tests that a failing Insert Overwrite (which creates a new base_x) is properly marked as + * aborted. + */ + @Test public void testInsertOverwrite() throws Exception { runStatementOnDriver("insert overwrite table " + Table.NONACIDORCTBL + " select a,b from " + Table.NONACIDORCTBL2); runStatementOnDriver("create table " + Table.NONACIDORCTBL2 + "3(a int, b int) clustered by (a) into " + BUCKET_COUNT + " buckets stored as orc TBLPROPERTIES ('transactional'='false')"); - + runStatementOnDriver("insert into " + Table.ACIDTBL + " values(1,2)"); + List<String> rs = runStatementOnDriver("select a from " + Table.ACIDTBL + " where b = 2"); + Assert.assertEquals(1, rs.size()); + Assert.assertEquals("1", rs.get(0)); + hiveConf.setBoolVar(HiveConf.ConfVars.HIVETESTMODEROLLBACKTXN, true); + runStatementOnDriver("insert into " + Table.ACIDTBL + " values(3,2)"); + hiveConf.setBoolVar(HiveConf.ConfVars.HIVETESTMODEROLLBACKTXN, false); + runStatementOnDriver("insert into " + Table.ACIDTBL + " values(5,6)"); + rs = runStatementOnDriver("select a from " + Table.ACIDTBL + " order by a"); + Assert.assertEquals(2, rs.size()); + Assert.assertEquals("1", rs.get(0)); + Assert.assertEquals("5", rs.get(1)); } @Ignore("not needed but useful for testing") @Test