diff --git ql/src/java/org/apache/hadoop/hive/ql/hooks/WriteEntity.java ql/src/java/org/apache/hadoop/hive/ql/hooks/WriteEntity.java index f75eb85d2f..470fd0b8d2 100644 --- ql/src/java/org/apache/hadoop/hive/ql/hooks/WriteEntity.java +++ ql/src/java/org/apache/hadoop/hive/ql/hooks/WriteEntity.java @@ -214,13 +214,13 @@ public static WriteType determineAlterTableWriteType(AlterTableType op) { case SET_SKEWED_LOCATION: case INTO_BUCKETS: case ALTERPARTITION: - case ADDCOLS: case RENAME: case TRUNCATE: case MERGEFILES: case DROP_CONSTRAINT: return WriteType.DDL_EXCLUSIVE; + case ADDCOLS: case ADDPARTITION: case SET_SERDE_PROPS: case ADDPROPS: diff --git ql/src/test/org/apache/hadoop/hive/ql/lockmgr/TestDbTxnManager2.java ql/src/test/org/apache/hadoop/hive/ql/lockmgr/TestDbTxnManager2.java index 1687425bcb..f538589f71 100644 --- ql/src/test/org/apache/hadoop/hive/ql/lockmgr/TestDbTxnManager2.java +++ ql/src/test/org/apache/hadoop/hive/ql/lockmgr/TestDbTxnManager2.java @@ -2739,6 +2739,20 @@ public void testAddPartitionLocks() throws Exception { checkLock(LockType.EXCLUSIVE, LockState.ACQUIRED, "default", "T", null, locks); } + @Test + public void testAddColumnLocks() throws Exception { + dropTable(new String[] {"T"}); + driver.run("create table T (a int, b int) " + + "stored as orc " + + "tblproperties('transactional'='true')"); + driver.run("insert into T values(0,0),(0,1)"); + driver.compileAndRespond("alter table t add columns(c int)"); + txnMgr.acquireLocks(driver.getPlan(), ctx, "username"); + List locks = getLocks(); + Assert.assertEquals("Unexpected lock count", 1, locks.size()); + checkLock(LockType.SHARED_READ, LockState.ACQUIRED, "default", "T", null, locks); + } + @Test public void testLoadData() throws Exception { testLoadData(false);