You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by we...@apache.org on 2017/05/16 22:53:10 UTC
[05/18] hive git commit: HIVE-14879 : integrate MM tables into ACID:
replace MM metastore calls and structures with ACID ones (Wei Zheng)
http://git-wip-us.apache.org/repos/asf/hive/blob/77511070/ql/src/java/org/apache/hadoop/hive/ql/plan/LoadTableDesc.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/LoadTableDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/LoadTableDesc.java
index 762d946..5bb52b4 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/LoadTableDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/LoadTableDesc.java
@@ -42,7 +42,8 @@ public class LoadTableDesc extends org.apache.hadoop.hive.ql.plan.LoadDesc
// Need to remember whether this is an acid compliant operation, and if so whether it is an
// insert, update, or delete.
private AcidUtils.Operation writeType;
- private Long mmWriteId;
+ private Long txnId;
+ private int stmtId;
// TODO: the below seems like they should just be combined into partitionDesc
private org.apache.hadoop.hive.ql.plan.TableDesc table;
@@ -65,11 +66,11 @@ public class LoadTableDesc extends org.apache.hadoop.hive.ql.plan.LoadDesc
final org.apache.hadoop.hive.ql.plan.TableDesc table,
final Map<String, String> partitionSpec,
final boolean replace,
- final AcidUtils.Operation writeType, Long mmWriteId) {
+ final AcidUtils.Operation writeType, Long txnId) {
super(sourcePath);
Utilities.LOG14535.info("creating part LTD from " + sourcePath + " to "
+ ((table.getProperties() == null) ? "null" : table.getTableName()));
- init(table, partitionSpec, replace, writeType, mmWriteId);
+ init(table, partitionSpec, replace, writeType, txnId);
}
/**
@@ -83,15 +84,15 @@ public class LoadTableDesc extends org.apache.hadoop.hive.ql.plan.LoadDesc
final TableDesc table,
final Map<String, String> partitionSpec,
final boolean replace,
- final Long mmWriteId) {
- this(sourcePath, table, partitionSpec, replace, AcidUtils.Operation.NOT_ACID, mmWriteId);
+ final Long txnId) {
+ this(sourcePath, table, partitionSpec, replace, AcidUtils.Operation.NOT_ACID, txnId);
}
public LoadTableDesc(final Path sourcePath,
final org.apache.hadoop.hive.ql.plan.TableDesc table,
final Map<String, String> partitionSpec,
- final AcidUtils.Operation writeType, Long mmWriteId) {
- this(sourcePath, table, partitionSpec, true, writeType, mmWriteId);
+ final AcidUtils.Operation writeType, Long txnId) {
+ this(sourcePath, table, partitionSpec, true, writeType, txnId);
}
/**
@@ -102,22 +103,22 @@ public class LoadTableDesc extends org.apache.hadoop.hive.ql.plan.LoadDesc
*/
public LoadTableDesc(final Path sourcePath,
final org.apache.hadoop.hive.ql.plan.TableDesc table,
- final Map<String, String> partitionSpec, Long mmWriteId) {
- this(sourcePath, table, partitionSpec, true, AcidUtils.Operation.NOT_ACID, mmWriteId);
+ final Map<String, String> partitionSpec, Long txnId) {
+ this(sourcePath, table, partitionSpec, true, AcidUtils.Operation.NOT_ACID, txnId);
}
public LoadTableDesc(final Path sourcePath,
final org.apache.hadoop.hive.ql.plan.TableDesc table,
final DynamicPartitionCtx dpCtx,
final AcidUtils.Operation writeType,
- boolean isReplace, Long mmWriteId) {
+ boolean isReplace, Long txnId) {
super(sourcePath);
Utilities.LOG14535.info("creating LTD from " + sourcePath + " to " + table.getTableName()/*, new Exception()*/);
this.dpCtx = dpCtx;
if (dpCtx != null && dpCtx.getPartSpec() != null && partitionSpec == null) {
- init(table, dpCtx.getPartSpec(), isReplace, writeType, mmWriteId);
+ init(table, dpCtx.getPartSpec(), isReplace, writeType, txnId);
} else {
- init(table, new LinkedHashMap<String, String>(), isReplace, writeType, mmWriteId);
+ init(table, new LinkedHashMap<String, String>(), isReplace, writeType, txnId);
}
}
@@ -125,12 +126,12 @@ public class LoadTableDesc extends org.apache.hadoop.hive.ql.plan.LoadDesc
final org.apache.hadoop.hive.ql.plan.TableDesc table,
final Map<String, String> partitionSpec,
final boolean replace,
- AcidUtils.Operation writeType, Long mmWriteId) {
+ AcidUtils.Operation writeType, Long txnId) {
this.table = table;
this.partitionSpec = partitionSpec;
this.replace = replace;
this.writeType = writeType;
- this.mmWriteId = mmWriteId;
+ this.txnId = txnId;
}
@Explain(displayName = "table", explainLevels = { Level.USER, Level.DEFAULT, Level.EXTENDED })
@@ -158,11 +159,11 @@ public class LoadTableDesc extends org.apache.hadoop.hive.ql.plan.LoadDesc
@Explain(displayName = "micromanaged table")
public Boolean isMmTableExplain() {
- return mmWriteId != null? true : null;
+ return txnId != null? true : null;
}
public boolean isMmTable() {
- return mmWriteId != null;
+ return txnId != null;
}
public void setReplace(boolean replace) {
@@ -203,8 +204,20 @@ public class LoadTableDesc extends org.apache.hadoop.hive.ql.plan.LoadDesc
return writeType;
}
- public Long getMmWriteId() {
- return mmWriteId;
+ public Long getTxnId() {
+ return txnId;
+ }
+
+ public void setTxnId(Long txnId) {
+ this.txnId = txnId;
+ }
+
+ public int getStmtId() {
+ return stmtId;
+ }
+
+ public void setStmtId(int stmtId) {
+ this.stmtId = stmtId;
}
public void setIntermediateInMmWrite(boolean b) {
http://git-wip-us.apache.org/repos/asf/hive/blob/77511070/ql/src/test/org/apache/hadoop/hive/ql/exec/TestExecDriver.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/TestExecDriver.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/TestExecDriver.java
index 4a13e1f..55b9da9 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/exec/TestExecDriver.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/TestExecDriver.java
@@ -141,7 +141,7 @@ public class TestExecDriver extends TestCase {
db.dropTable(MetaStoreUtils.DEFAULT_DATABASE_NAME, src, true, true);
db.createTable(src, cols, null, TextInputFormat.class,
HiveIgnoreKeyTextOutputFormat.class);
- db.loadTable(hadoopDataFile[i], src, false, true, false, false, false, null);
+ db.loadTable(hadoopDataFile[i], src, false, true, false, false, false, null, 0);
i++;
}
http://git-wip-us.apache.org/repos/asf/hive/blob/77511070/ql/src/test/queries/clientpositive/mm_all.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/mm_all.q b/ql/src/test/queries/clientpositive/mm_all.q
index e2c8e97..8971292 100644
--- a/ql/src/test/queries/clientpositive/mm_all.q
+++ b/ql/src/test/queries/clientpositive/mm_all.q
@@ -33,7 +33,6 @@ drop table part_mm;
drop table simple_mm;
create table simple_mm(key int) stored as orc tblproperties ("transactional"="true", "transactional_properties"="insert_only");
insert into table simple_mm select key from intermediate;
-insert overwrite table simple_mm select key from intermediate;
select * from simple_mm order by key;
insert into table simple_mm select key from intermediate;
select * from simple_mm order by key;
@@ -193,47 +192,6 @@ set hive.merge.mapredfiles=false;
-- TODO: need to include merge+union+DP, but it's broken for now
-drop table ctas0_mm;
-create table ctas0_mm tblproperties ("transactional"="true", "transactional_properties"="insert_only") as select * from intermediate;
-select * from ctas0_mm;
-drop table ctas0_mm;
-
-drop table ctas1_mm;
-create table ctas1_mm tblproperties ("transactional"="true", "transactional_properties"="insert_only") as
- select * from intermediate union all select * from intermediate;
-select * from ctas1_mm;
-drop table ctas1_mm;
-
-
-
-drop table iow0_mm;
-create table iow0_mm(key int) tblproperties("transactional"="true", "transactional_properties"="insert_only");
-insert overwrite table iow0_mm select key from intermediate;
-insert into table iow0_mm select key + 1 from intermediate;
-select * from iow0_mm order by key;
-insert overwrite table iow0_mm select key + 2 from intermediate;
-select * from iow0_mm order by key;
-drop table iow0_mm;
-
-
-drop table iow1_mm;
-create table iow1_mm(key int) partitioned by (key2 int) tblproperties("transactional"="true", "transactional_properties"="insert_only");
-insert overwrite table iow1_mm partition (key2)
-select key as k1, key from intermediate union all select key as k1, key from intermediate;
-insert into table iow1_mm partition (key2)
-select key + 1 as k1, key from intermediate union all select key as k1, key from intermediate;
-select * from iow1_mm order by key, key2;
-insert overwrite table iow1_mm partition (key2)
-select key + 3 as k1, key from intermediate union all select key + 4 as k1, key from intermediate;
-select * from iow1_mm order by key, key2;
-insert overwrite table iow1_mm partition (key2)
-select key + 3 as k1, key + 3 from intermediate union all select key + 2 as k1, key + 2 from intermediate;
-select * from iow1_mm order by key, key2;
-drop table iow1_mm;
-
-
-
-
drop table load0_mm;
create table load0_mm (key string, value string) stored as textfile tblproperties("transactional"="true", "transactional_properties"="insert_only");
load data local inpath '../../data/files/kv1.txt' into table load0_mm;
@@ -279,174 +237,11 @@ drop table load2_mm;
drop table intermediate2;
-drop table intermediate_nonpart;
-drop table intermmediate_part;
-drop table intermmediate_nonpart;
-create table intermediate_nonpart(key int, p int);
-insert into intermediate_nonpart select * from intermediate;
-create table intermmediate_nonpart(key int, p int) tblproperties("transactional"="true", "transactional_properties"="insert_only");
-insert into intermmediate_nonpart select * from intermediate;
-create table intermmediate(key int) partitioned by (p int) tblproperties("transactional"="true", "transactional_properties"="insert_only");
-insert into table intermmediate partition(p) select key, p from intermediate;
-
-set hive.exim.test.mode=true;
-
-export table intermediate_nonpart to 'ql/test/data/exports/intermediate_nonpart';
-export table intermmediate_nonpart to 'ql/test/data/exports/intermmediate_nonpart';
-export table intermediate to 'ql/test/data/exports/intermediate_part';
-export table intermmediate to 'ql/test/data/exports/intermmediate_part';
-
-drop table intermediate_nonpart;
-drop table intermmediate_part;
-drop table intermmediate_nonpart;
-
--- non-MM export to MM table, with and without partitions
-
-drop table import0_mm;
-create table import0_mm(key int, p int) tblproperties("transactional"="true", "transactional_properties"="insert_only");
-import table import0_mm from 'ql/test/data/exports/intermediate_nonpart';
-select * from import0_mm order by key, p;
-drop table import0_mm;
-
-
-
-drop table import1_mm;
-create table import1_mm(key int) partitioned by (p int)
- stored as orc tblproperties("transactional"="true", "transactional_properties"="insert_only");
-import table import1_mm from 'ql/test/data/exports/intermediate_part';
-select * from import1_mm order by key, p;
-drop table import1_mm;
-
-
--- MM export into new MM table, non-part and part
-
---drop table import2_mm;
---import table import2_mm from 'ql/test/data/exports/intermmediate_nonpart';
---desc import2_mm;
---select * from import2_mm order by key, p;
---drop table import2_mm;
---
---drop table import3_mm;
---import table import3_mm from 'ql/test/data/exports/intermmediate_part';
---desc import3_mm;
---select * from import3_mm order by key, p;
---drop table import3_mm;
-
--- MM export into existing MM table, non-part and partial part
-
-drop table import4_mm;
-create table import4_mm(key int, p int) tblproperties("transactional"="true", "transactional_properties"="insert_only");
-import table import4_mm from 'ql/test/data/exports/intermmediate_nonpart';
-select * from import4_mm order by key, p;
-drop table import4_mm;
-
-drop table import5_mm;
-create table import5_mm(key int) partitioned by (p int) tblproperties("transactional"="true", "transactional_properties"="insert_only");
-import table import5_mm partition(p=455) from 'ql/test/data/exports/intermmediate_part';
-select * from import5_mm order by key, p;
-drop table import5_mm;
-
--- MM export into existing non-MM table, non-part and part
-
-drop table import6_mm;
-create table import6_mm(key int, p int);
-import table import6_mm from 'ql/test/data/exports/intermmediate_nonpart';
-select * from import6_mm order by key, p;
-drop table import6_mm;
-
-drop table import7_mm;
-create table import7_mm(key int) partitioned by (p int);
-import table import7_mm from 'ql/test/data/exports/intermmediate_part';
-select * from import7_mm order by key, p;
-drop table import7_mm;
-
-set hive.exim.test.mode=false;
-
-
-
drop table multi0_1_mm;
drop table multi0_2_mm;
create table multi0_1_mm (key int, key2 int) tblproperties("transactional"="true", "transactional_properties"="insert_only");
create table multi0_2_mm (key int, key2 int) tblproperties("transactional"="true", "transactional_properties"="insert_only");
-from intermediate
-insert overwrite table multi0_1_mm select key, p
-insert overwrite table multi0_2_mm select p, key;
-
-select * from multi0_1_mm order by key, key2;
-select * from multi0_2_mm order by key, key2;
-
-set hive.merge.mapredfiles=true;
-set hive.merge.sparkfiles=true;
-set hive.merge.tezfiles=true;
-
-from intermediate
-insert into table multi0_1_mm select p, key
-insert overwrite table multi0_2_mm select key, p;
-select * from multi0_1_mm order by key, key2;
-select * from multi0_2_mm order by key, key2;
-
-set hive.merge.mapredfiles=false;
-set hive.merge.sparkfiles=false;
-set hive.merge.tezfiles=false;
-
-drop table multi0_1_mm;
-drop table multi0_2_mm;
-
-
-drop table multi1_mm;
-create table multi1_mm (key int, key2 int) partitioned by (p int) tblproperties("transactional"="true", "transactional_properties"="insert_only");
-from intermediate
-insert into table multi1_mm partition(p=1) select p, key
-insert into table multi1_mm partition(p=2) select key, p;
-select * from multi1_mm order by key, key2, p;
-from intermediate
-insert into table multi1_mm partition(p=2) select p, key
-insert overwrite table multi1_mm partition(p=1) select key, p;
-select * from multi1_mm order by key, key2, p;
-
-from intermediate
-insert into table multi1_mm partition(p) select p, key, p
-insert into table multi1_mm partition(p=1) select key, p;
-select key, key2, p from multi1_mm order by key, key2, p;
-
-from intermediate
-insert into table multi1_mm partition(p) select p, key, 1
-insert into table multi1_mm partition(p=1) select key, p;
-select key, key2, p from multi1_mm order by key, key2, p;
-drop table multi1_mm;
-
-
-
-
-set datanucleus.cache.collections=false;
-set hive.stats.autogather=true;
-
-drop table stats_mm;
-create table stats_mm(key int) tblproperties("transactional"="true", "transactional_properties"="insert_only");
-insert overwrite table stats_mm select key from intermediate;
-desc formatted stats_mm;
-
-insert into table stats_mm select key from intermediate;
-desc formatted stats_mm;
-drop table stats_mm;
-
-drop table stats2_mm;
-create table stats2_mm tblproperties("transactional"="true", "transactional_properties"="insert_only") as select array(key, value) from src;
-desc formatted stats2_mm;
-drop table stats2_mm;
-
-
-set hive.optimize.skewjoin=true;
-set hive.skewjoin.key=2;
-set hive.optimize.metadataonly=false;
-
-CREATE TABLE skewjoin_mm(key INT, value STRING) STORED AS TEXTFILE tblproperties ("transactional"="true", "transactional_properties"="insert_only");
-FROM src src1 JOIN src src2 ON (src1.key = src2.key) INSERT OVERWRITE TABLE skewjoin_mm SELECT src1.key, src2.value;
-select count(distinct key) from skewjoin_mm;
-drop table skewjoin_mm;
-
-set hive.optimize.skewjoin=false;
set hive.optimize.index.filter=true;
set hive.auto.convert.join=false;
http://git-wip-us.apache.org/repos/asf/hive/blob/77511070/ql/src/test/queries/clientpositive/mm_conversions.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/mm_conversions.q b/ql/src/test/queries/clientpositive/mm_conversions.q
index 2dc7a74..62faeac 100644
--- a/ql/src/test/queries/clientpositive/mm_conversions.q
+++ b/ql/src/test/queries/clientpositive/mm_conversions.q
@@ -4,7 +4,8 @@ set hive.fetch.task.conversion=none;
set tez.grouping.min-size=1;
set tez.grouping.max-size=2;
set hive.exec.dynamic.partition.mode=nonstrict;
-
+set hive.support.concurrency=true;
+set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
-- Force multiple writers when reading
drop table intermediate;
@@ -13,29 +14,31 @@ insert into table intermediate partition(p='455') select distinct key from src w
insert into table intermediate partition(p='456') select distinct key from src where key is not null order by key asc limit 1;
insert into table intermediate partition(p='457') select distinct key from src where key >= 100 order by key asc limit 1;
-drop table simple_from_mm;
-create table simple_from_mm(key int) stored as orc tblproperties ("transactional"="true", "transactional_properties"="insert_only");
-insert into table simple_from_mm select key from intermediate;
-insert into table simple_from_mm select key from intermediate;
-select * from simple_from_mm s1 order by key;
-alter table simple_from_mm unset tblproperties('transactional_properties', 'transactional');
-select * from simple_from_mm s2 order by key;
-insert into table simple_from_mm select key from intermediate;
-select * from simple_from_mm s3 order by key;
-alter table simple_from_mm set tblproperties("transactional"="true", "transactional_properties"="insert_only");
-select * from simple_from_mm s4 order by key;
-insert into table simple_from_mm select key from intermediate;
-select * from simple_from_mm s5 order by key;
-alter table simple_from_mm set tblproperties("transactional"="false", 'transactional_properties'='false');
-select * from simple_from_mm s6 order by key;
-insert into table simple_from_mm select key from intermediate;
-select * from simple_from_mm s7 order by key;
-drop table simple_from_mm;
+drop table simple_from_mm1;
+create table simple_from_mm1(key int) stored as orc tblproperties ("transactional"="true", "transactional_properties"="insert_only");
+insert into table simple_from_mm1 select key from intermediate;
+insert into table simple_from_mm1 select key from intermediate;
+select * from simple_from_mm1 s1 order by key;
+alter table simple_from_mm1 unset tblproperties('transactional_properties', 'transactional');
+select * from simple_from_mm1 s2 order by key;
+insert into table simple_from_mm1 select key from intermediate;
+select * from simple_from_mm1 s3 order by key;
+drop table simple_from_mm1;
+
+drop table simple_from_mm2;
+create table simple_from_mm2(key int) stored as orc tblproperties ("transactional"="true", "transactional_properties"="insert_only");
+insert into table simple_from_mm2 select key from intermediate;
+insert into table simple_from_mm2 select key from intermediate;
+select * from simple_from_mm2 s1 order by key;
+alter table simple_from_mm2 set tblproperties("transactional"="false", 'transactional_properties'='false');
+select * from simple_from_mm2 s2 order by key;
+insert into table simple_from_mm2 select key from intermediate;
+select * from simple_from_mm2 s3 order by key;
+drop table simple_from_mm2;
drop table simple_to_mm;
create table simple_to_mm(key int) stored as orc;
insert into table simple_to_mm select key from intermediate;
-insert into table simple_to_mm select key from intermediate;
select * from simple_to_mm s1 order by key;
alter table simple_to_mm set tblproperties("transactional"="true", "transactional_properties"="insert_only");
select * from simple_to_mm s2 order by key;
@@ -44,27 +47,29 @@ insert into table simple_to_mm select key from intermediate;
select * from simple_to_mm s3 order by key;
drop table simple_to_mm;
-drop table part_from_mm;
-create table part_from_mm(key int) partitioned by (key_mm int) stored as orc tblproperties ("transactional"="true", "transactional_properties"="insert_only");
-insert into table part_from_mm partition(key_mm='455') select key from intermediate;
-insert into table part_from_mm partition(key_mm='455') select key from intermediate;
-insert into table part_from_mm partition(key_mm='456') select key from intermediate;
-select * from part_from_mm s1 order by key, key_mm;
-alter table part_from_mm unset tblproperties('transactional_properties', 'transactional');
-select * from part_from_mm s2 order by key, key_mm;
-insert into table part_from_mm partition(key_mm='456') select key from intermediate;
-insert into table part_from_mm partition(key_mm='457') select key from intermediate;
-select * from part_from_mm s3 order by key, key_mm;
-alter table part_from_mm set tblproperties("transactional"="true", "transactional_properties"="insert_only");
-select * from part_from_mm s4 order by key, key_mm;
-insert into table part_from_mm partition(key_mm='456') select key from intermediate;
-insert into table part_from_mm partition(key_mm='455') select key from intermediate;
-select * from part_from_mm s5 order by key, key_mm;
-alter table part_from_mm set tblproperties("transactional"="false", 'transactional_properties'='false');
-select * from part_from_mm s6 order by key, key_mm;
-insert into table part_from_mm partition(key_mm='457') select key from intermediate;
-select * from part_from_mm s7 order by key, key_mm;
-drop table part_from_mm;
+drop table part_from_mm1;
+create table part_from_mm1(key int) partitioned by (key_mm int) stored as orc tblproperties ("transactional"="true", "transactional_properties"="insert_only");
+insert into table part_from_mm1 partition(key_mm='455') select key from intermediate;
+insert into table part_from_mm1 partition(key_mm='455') select key from intermediate;
+insert into table part_from_mm1 partition(key_mm='456') select key from intermediate;
+select * from part_from_mm1 s1 order by key, key_mm;
+alter table part_from_mm1 unset tblproperties('transactional_properties', 'transactional');
+select * from part_from_mm1 s2 order by key, key_mm;
+insert into table part_from_mm1 partition(key_mm='456') select key from intermediate;
+insert into table part_from_mm1 partition(key_mm='457') select key from intermediate;
+select * from part_from_mm1 s3 order by key, key_mm;
+drop table part_from_mm1;
+
+drop table part_from_mm2;
+create table part_from_mm2(key int) partitioned by (key_mm int) stored as orc tblproperties ("transactional"="true", "transactional_properties"="insert_only");
+insert into table part_from_mm2 partition(key_mm='456') select key from intermediate;--fails here
+insert into table part_from_mm2 partition(key_mm='455') select key from intermediate;
+select * from part_from_mm2 s1 order by key, key_mm;
+alter table part_from_mm2 set tblproperties("transactional"="false", 'transactional_properties'='false');
+select * from part_from_mm2 s2 order by key, key_mm;
+insert into table part_from_mm2 partition(key_mm='457') select key from intermediate;
+select * from part_from_mm2 s3 order by key, key_mm;
+drop table part_from_mm2;
drop table part_to_mm;
create table part_to_mm(key int) partitioned by (key_mm int) stored as orc;
http://git-wip-us.apache.org/repos/asf/hive/blob/77511070/ql/src/test/queries/clientpositive/mm_exim.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/mm_exim.q b/ql/src/test/queries/clientpositive/mm_exim.q
new file mode 100644
index 0000000..2cdb001
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/mm_exim.q
@@ -0,0 +1,98 @@
+set hive.mapred.mode=nonstrict;
+set hive.explain.user=false;
+set hive.fetch.task.conversion=none;
+set tez.grouping.min-size=1;
+set tez.grouping.max-size=2;
+set hive.exec.dynamic.partition.mode=nonstrict;
+set hive.support.concurrency=true;
+set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
+
+
+drop table intermediate;
+create table intermediate(key int) partitioned by (p int) stored as orc;
+insert into table intermediate partition(p='455') select distinct key from src where key >= 0 order by key desc limit 2;
+insert into table intermediate partition(p='456') select distinct key from src where key is not null order by key asc limit 2;
+insert into table intermediate partition(p='457') select distinct key from src where key >= 100 order by key asc limit 2;
+
+drop table intermediate_nonpart;
+drop table intermmediate_part;
+drop table intermmediate_nonpart;
+create table intermediate_nonpart(key int, p int);
+insert into intermediate_nonpart select * from intermediate;
+create table intermmediate_nonpart(key int, p int) tblproperties("transactional"="true", "transactional_properties"="insert_only");
+insert into intermmediate_nonpart select * from intermediate;
+create table intermmediate(key int) partitioned by (p int) tblproperties("transactional"="true", "transactional_properties"="insert_only");
+insert into table intermmediate partition(p) select key, p from intermediate;
+
+set hive.exim.test.mode=true;
+
+export table intermediate_nonpart to 'ql/test/data/exports/intermediate_nonpart';
+export table intermmediate_nonpart to 'ql/test/data/exports/intermmediate_nonpart';
+export table intermediate to 'ql/test/data/exports/intermediate_part';
+export table intermmediate to 'ql/test/data/exports/intermmediate_part';
+
+drop table intermediate_nonpart;
+drop table intermmediate_part;
+drop table intermmediate_nonpart;
+
+-- non-MM export to MM table, with and without partitions
+
+drop table import0_mm;
+create table import0_mm(key int, p int) tblproperties("transactional"="true", "transactional_properties"="insert_only");
+import table import0_mm from 'ql/test/data/exports/intermediate_nonpart';
+select * from import0_mm order by key, p;
+drop table import0_mm;
+
+
+
+drop table import1_mm;
+create table import1_mm(key int) partitioned by (p int)
+ stored as orc tblproperties("transactional"="true", "transactional_properties"="insert_only");
+import table import1_mm from 'ql/test/data/exports/intermediate_part';
+select * from import1_mm order by key, p;
+drop table import1_mm;
+
+
+-- MM export into new MM table, non-part and part
+
+--drop table import2_mm;
+--import table import2_mm from 'ql/test/data/exports/intermmediate_nonpart';
+--desc import2_mm;
+--select * from import2_mm order by key, p;
+--drop table import2_mm;
+--
+--drop table import3_mm;
+--import table import3_mm from 'ql/test/data/exports/intermmediate_part';
+--desc import3_mm;
+--select * from import3_mm order by key, p;
+--drop table import3_mm;
+
+-- MM export into existing MM table, non-part and partial part
+
+drop table import4_mm;
+create table import4_mm(key int, p int) tblproperties("transactional"="true", "transactional_properties"="insert_only");
+import table import4_mm from 'ql/test/data/exports/intermmediate_nonpart';
+select * from import4_mm order by key, p;
+drop table import4_mm;
+
+drop table import5_mm;
+create table import5_mm(key int) partitioned by (p int) tblproperties("transactional"="true", "transactional_properties"="insert_only");
+import table import5_mm partition(p=455) from 'ql/test/data/exports/intermmediate_part';
+select * from import5_mm order by key, p;
+drop table import5_mm;
+
+-- MM export into existing non-MM table, non-part and part
+
+drop table import6_mm;
+create table import6_mm(key int, p int);
+import table import6_mm from 'ql/test/data/exports/intermmediate_nonpart';
+select * from import6_mm order by key, p;
+drop table import6_mm;
+
+drop table import7_mm;
+create table import7_mm(key int) partitioned by (p int);
+import table import7_mm from 'ql/test/data/exports/intermmediate_part';
+select * from import7_mm order by key, p;
+drop table import7_mm;
+
+set hive.exim.test.mode=false;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hive/blob/77511070/ql/src/test/queries/clientpositive/mm_insertonly_acid.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/mm_insertonly_acid.q b/ql/src/test/queries/clientpositive/mm_insertonly_acid.q
deleted file mode 100644
index 7da99c5..0000000
--- a/ql/src/test/queries/clientpositive/mm_insertonly_acid.q
+++ /dev/null
@@ -1,16 +0,0 @@
-set hive.mapred.mode=nonstrict;
-set hive.explain.user=false;
-set hive.fetch.task.conversion=none;
-set hive.exec.dynamic.partition.mode=nonstrict;
-set hive.support.concurrency=true;
-set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
-
-
-drop table qtr_acid;
-create table qtr_acid (key int) partitioned by (p int) tblproperties ("transactional"="true", "transactional_properties"="insert_only");
-insert into table qtr_acid partition(p='123') select distinct key from src where key > 0 order by key asc limit 10;
-insert into table qtr_acid partition(p='456') select distinct key from src where key > 0 order by key desc limit 10;
-explain
-select * from qtr_acid order by key;
-select * from qtr_acid order by key;
-drop table qtr_acid;
\ No newline at end of file