You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by jc...@apache.org on 2018/08/06 01:45:13 UTC

hive git commit: HIVE-20314: Include partition pruning in materialized view rewriting (Jesus Camacho Rodriguez, reviewed by Ashutosh Chauhan)

Repository: hive
Updated Branches:
  refs/heads/master df5caa0e7 -> c6275eeec


HIVE-20314: Include partition pruning in materialized view rewriting (Jesus Camacho Rodriguez, reviewed by Ashutosh Chauhan)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/c6275eee
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/c6275eee
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/c6275eee

Branch: refs/heads/master
Commit: c6275eeece5fba2fe5dbeae468c54b39ec447253
Parents: df5caa0
Author: Jesus Camacho Rodriguez <jc...@apache.org>
Authored: Sat Aug 4 09:06:51 2018 -0700
Committer: Jesus Camacho Rodriguez <jc...@apache.org>
Committed: Sun Aug 5 18:44:30 2018 -0700

----------------------------------------------------------------------
 .../test/resources/testconfiguration.properties |   1 +
 .../ql/optimizer/calcite/RelOptHiveTable.java   |   4 +
 .../calcite/reloperators/HiveTableScan.java     |  20 +-
 .../calcite/rules/HivePartitionPruneRule.java   |  24 +-
 .../hadoop/hive/ql/parse/CalcitePlanner.java    |   4 +
 .../materialized_view_partitioned_2.q           |  46 ++
 .../llap/materialized_view_partitioned_2.q.out  | 550 +++++++++++++++++++
 7 files changed, 643 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/c6275eee/itests/src/test/resources/testconfiguration.properties
----------------------------------------------------------------------
diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties
index a13ad28..fa90750 100644
--- a/itests/src/test/resources/testconfiguration.properties
+++ b/itests/src/test/resources/testconfiguration.properties
@@ -565,6 +565,7 @@ minillaplocal.query.files=\
   materialized_view_describe.q,\
   materialized_view_drop.q,\
   materialized_view_partitioned.q,\
+  materialized_view_partitioned_2.q,\
   materialized_view_rebuild.q,\
   materialized_view_rewrite_empty.q,\
   materialized_view_rewrite_1.q,\

http://git-wip-us.apache.org/repos/asf/hive/blob/c6275eee/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/RelOptHiveTable.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/RelOptHiveTable.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/RelOptHiveTable.java
index 37e6d4c..42e60de 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/RelOptHiveTable.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/RelOptHiveTable.java
@@ -735,4 +735,8 @@ public class RelOptHiveTable implements RelOptTable {
         ? super.hashCode() : this.getHiveTableMD().hashCode();
   }
 
+  public String getPartitionListKey() {
+    return partitionList != null ? partitionList.getKey() : null;
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/c6275eee/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveTableScan.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveTableScan.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveTableScan.java
index 5fda6f9..d64db03 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveTableScan.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveTableScan.java
@@ -126,6 +126,16 @@ public class HiveTableScan extends TableScan implements HiveRelNode {
         newRowtype, this.useQBIdInDigest, this.insideView);
   }
 
+  /**
+   * Copy TableScan operator with a new Row Schema. The new Row Schema can only
+   * be a subset of this TS schema. Copies underlying RelOptHiveTable object
+   * too.
+   */
+  public HiveTableScan copyIncludingTable(RelDataType newRowtype) {
+    return new HiveTableScan(getCluster(), getTraitSet(), ((RelOptHiveTable) table).copy(newRowtype), this.tblAlias, this.concatQbIDAlias,
+        newRowtype, this.useQBIdInDigest, this.insideView);
+  }
+
   @Override public RelWriter explainTerms(RelWriter pw) {
     if (this.useQBIdInDigest) {
       // TODO: Only the qualified name should be left here
@@ -255,9 +265,15 @@ public class HiveTableScan extends TableScan implements HiveRelNode {
 
   // We need to include isInsideView inside digest to differentiate direct
   // tables and tables inside view. Otherwise, Calcite will treat them as the same.
+  // Also include partition list key to trigger cost evaluation even if an
+  // expression was already generated.
   public String computeDigest() {
-    String digest = super.computeDigest();
-    return digest + "[" + this.isInsideView() + "]";
+    String digest = super.computeDigest() + "[" + this.isInsideView() + "]";
+    String partitionListKey = ((RelOptHiveTable) table).getPartitionListKey();
+    if (partitionListKey != null) {
+      return digest + "[" + partitionListKey + "]";
+    }
+    return digest;
   }
 
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/c6275eee/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HivePartitionPruneRule.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HivePartitionPruneRule.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HivePartitionPruneRule.java
index 97802b8..39973d8 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HivePartitionPruneRule.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HivePartitionPruneRule.java
@@ -22,11 +22,14 @@ import org.apache.calcite.plan.RelOptRuleCall;
 import org.apache.calcite.rel.core.Filter;
 import org.apache.calcite.rex.RexNode;
 import org.apache.calcite.util.Pair;
+import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.ql.optimizer.calcite.RelOptHiveTable;
 import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveFilter;
 import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveTableScan;
 
+import java.util.Collections;
+
 public class HivePartitionPruneRule extends RelOptRule {
 
   HiveConf conf;
@@ -45,13 +48,26 @@ public class HivePartitionPruneRule extends RelOptRule {
 
   protected void perform(RelOptRuleCall call, Filter filter,
       HiveTableScan tScan) {
-
+    // Original table
     RelOptHiveTable hiveTable = (RelOptHiveTable) tScan.getTable();
-    RexNode predicate = filter.getCondition();
 
+    // Copy original table scan and table
+    HiveTableScan tScanCopy = tScan.copyIncludingTable(tScan.getRowType());
+    RelOptHiveTable hiveTableCopy = (RelOptHiveTable) tScanCopy.getTable();
+
+    // Execute partition pruning
+    RexNode predicate = filter.getCondition();
     Pair<RexNode, RexNode> predicates = PartitionPrune
-        .extractPartitionPredicates(filter.getCluster(), hiveTable, predicate);
+        .extractPartitionPredicates(filter.getCluster(), hiveTableCopy, predicate);
     RexNode partColExpr = predicates.left;
-    hiveTable.computePartitionList(conf, partColExpr, tScan.getPartOrVirtualCols());
+    hiveTableCopy.computePartitionList(conf, partColExpr, tScanCopy.getPartOrVirtualCols());
+
+    if (StringUtils.equals(hiveTableCopy.getPartitionListKey(), hiveTable.getPartitionListKey())) {
+      // Nothing changed, we do not need to produce a new expression
+      return;
+    }
+
+    call.transformTo(filter.copy(
+        filter.getTraitSet(), Collections.singletonList(tScanCopy)));
   }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/c6275eee/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
index e6e0330..d2d5152 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
@@ -2232,6 +2232,10 @@ public class CalcitePlanner extends SemanticAnalyzer {
         planner.addRule(HiveMaterializedViewRule.INSTANCE_JOIN);
         planner.addRule(HiveMaterializedViewRule.INSTANCE_PROJECT_AGGREGATE);
         planner.addRule(HiveMaterializedViewRule.INSTANCE_AGGREGATE);
+        // Partition pruner rule
+        planner.addRule(HiveFilterProjectTSTransposeRule.INSTANCE);
+        planner.addRule(new HivePartitionPruneRule(conf));
+
         // Optimize plan
         planner.setRoot(basePlan);
         basePlan = planner.findBestExp();

http://git-wip-us.apache.org/repos/asf/hive/blob/c6275eee/ql/src/test/queries/clientpositive/materialized_view_partitioned_2.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/materialized_view_partitioned_2.q b/ql/src/test/queries/clientpositive/materialized_view_partitioned_2.q
new file mode 100644
index 0000000..a3f437e
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/materialized_view_partitioned_2.q
@@ -0,0 +1,46 @@
+--! qt:dataset:src
+
+set hive.support.concurrency=true;
+set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
+
+CREATE TABLE src_txn_2 stored as orc TBLPROPERTIES ('transactional' = 'true')
+AS SELECT * FROM src where key > 200 and key < 300;
+
+CREATE MATERIALIZED VIEW partition_mv_1 PARTITIONED ON (key) AS
+SELECT value, key FROM src_txn_2;
+
+CREATE MATERIALIZED VIEW partition_mv_2 PARTITIONED ON (value) AS
+SELECT key, value FROM src_txn_2;
+
+CREATE MATERIALIZED VIEW partition_mv_3 PARTITIONED ON (key) AS
+SELECT value, key FROM src_txn_2 where key > 220 and key < 230;
+
+CREATE MATERIALIZED VIEW partition_mv_4 PARTITIONED ON (key) AS
+SELECT value, key FROM src_txn_2 where key > 222 and key < 228;
+
+-- SHOULD CHOOSE partition_mv_1 SINCE ONLY partition_mv_1 AND
+-- partition_mv_2 ARE VALID BUT PRUNING KICKS IN FOR THE FORMER
+EXPLAIN
+SELECT * FROM src_txn_2 where key > 210 and key < 230;
+
+SELECT * FROM src_txn_2 where key > 210 and key < 230;
+
+-- SHOULD CHOOSE partition_mv_2 SINCE ONLY partition_mv_2 AND
+-- partition_mv_1 ARE VALID BUT PRUNING KICKS IN FOR THE FORMER
+EXPLAIN
+SELECT * FROM src_txn_2 where value > 'val_220' and value < 'val_230';
+
+SELECT * FROM src_txn_2 where value > 'val_220' and value < 'val_230';
+
+-- SHOULD CHOOSE partition_mv_4 SINCE IT IS THE MOST EFFICIENT
+-- READING ONLY ONE PARTITION
+EXPLAIN
+SELECT * FROM src_txn_2 where key > 224 and key < 226;
+
+SELECT * FROM src_txn_2 where key > 223 and key < 225;
+
+DROP MATERIALIZED VIEW partition_mv_1;
+DROP MATERIALIZED VIEW partition_mv_2;
+DROP MATERIALIZED VIEW partition_mv_3;
+DROP MATERIALIZED VIEW partition_mv_4;
+DROP TABLE src_txn_2;

http://git-wip-us.apache.org/repos/asf/hive/blob/c6275eee/ql/src/test/results/clientpositive/llap/materialized_view_partitioned_2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/materialized_view_partitioned_2.q.out b/ql/src/test/results/clientpositive/llap/materialized_view_partitioned_2.q.out
new file mode 100644
index 0000000..ab03522
--- /dev/null
+++ b/ql/src/test/results/clientpositive/llap/materialized_view_partitioned_2.q.out
@@ -0,0 +1,550 @@
+PREHOOK: query: CREATE TABLE src_txn_2 stored as orc TBLPROPERTIES ('transactional' = 'true')
+AS SELECT * FROM src where key > 200 and key < 300
+PREHOOK: type: CREATETABLE_AS_SELECT
+PREHOOK: Input: default@src
+PREHOOK: Output: database:default
+PREHOOK: Output: default@src_txn_2
+POSTHOOK: query: CREATE TABLE src_txn_2 stored as orc TBLPROPERTIES ('transactional' = 'true')
+AS SELECT * FROM src where key > 200 and key < 300
+POSTHOOK: type: CREATETABLE_AS_SELECT
+POSTHOOK: Input: default@src
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@src_txn_2
+POSTHOOK: Lineage: src_txn_2.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: src_txn_2.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: CREATE MATERIALIZED VIEW partition_mv_1 PARTITIONED ON (key) AS
+SELECT value, key FROM src_txn_2
+PREHOOK: type: CREATE_MATERIALIZED_VIEW
+PREHOOK: Input: default@src_txn_2
+PREHOOK: Output: database:default
+PREHOOK: Output: default@partition_mv_1
+PREHOOK: Output: default@partition_mv_1
+POSTHOOK: query: CREATE MATERIALIZED VIEW partition_mv_1 PARTITIONED ON (key) AS
+SELECT value, key FROM src_txn_2
+POSTHOOK: type: CREATE_MATERIALIZED_VIEW
+POSTHOOK: Input: default@src_txn_2
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@partition_mv_1
+POSTHOOK: Output: default@partition_mv_1@key=201
+POSTHOOK: Output: default@partition_mv_1@key=202
+POSTHOOK: Output: default@partition_mv_1@key=203
+POSTHOOK: Output: default@partition_mv_1@key=205
+POSTHOOK: Output: default@partition_mv_1@key=207
+POSTHOOK: Output: default@partition_mv_1@key=208
+POSTHOOK: Output: default@partition_mv_1@key=209
+POSTHOOK: Output: default@partition_mv_1@key=213
+POSTHOOK: Output: default@partition_mv_1@key=214
+POSTHOOK: Output: default@partition_mv_1@key=216
+POSTHOOK: Output: default@partition_mv_1@key=217
+POSTHOOK: Output: default@partition_mv_1@key=218
+POSTHOOK: Output: default@partition_mv_1@key=219
+POSTHOOK: Output: default@partition_mv_1@key=221
+POSTHOOK: Output: default@partition_mv_1@key=222
+POSTHOOK: Output: default@partition_mv_1@key=223
+POSTHOOK: Output: default@partition_mv_1@key=224
+POSTHOOK: Output: default@partition_mv_1@key=226
+POSTHOOK: Output: default@partition_mv_1@key=228
+POSTHOOK: Output: default@partition_mv_1@key=229
+POSTHOOK: Output: default@partition_mv_1@key=230
+POSTHOOK: Output: default@partition_mv_1@key=233
+POSTHOOK: Output: default@partition_mv_1@key=235
+POSTHOOK: Output: default@partition_mv_1@key=237
+POSTHOOK: Output: default@partition_mv_1@key=238
+POSTHOOK: Output: default@partition_mv_1@key=239
+POSTHOOK: Output: default@partition_mv_1@key=241
+POSTHOOK: Output: default@partition_mv_1@key=242
+POSTHOOK: Output: default@partition_mv_1@key=244
+POSTHOOK: Output: default@partition_mv_1@key=247
+POSTHOOK: Output: default@partition_mv_1@key=248
+POSTHOOK: Output: default@partition_mv_1@key=249
+POSTHOOK: Output: default@partition_mv_1@key=252
+POSTHOOK: Output: default@partition_mv_1@key=255
+POSTHOOK: Output: default@partition_mv_1@key=256
+POSTHOOK: Output: default@partition_mv_1@key=257
+POSTHOOK: Output: default@partition_mv_1@key=258
+POSTHOOK: Output: default@partition_mv_1@key=260
+POSTHOOK: Output: default@partition_mv_1@key=262
+POSTHOOK: Output: default@partition_mv_1@key=263
+POSTHOOK: Output: default@partition_mv_1@key=265
+POSTHOOK: Output: default@partition_mv_1@key=266
+POSTHOOK: Output: default@partition_mv_1@key=272
+POSTHOOK: Output: default@partition_mv_1@key=273
+POSTHOOK: Output: default@partition_mv_1@key=274
+POSTHOOK: Output: default@partition_mv_1@key=275
+POSTHOOK: Output: default@partition_mv_1@key=277
+POSTHOOK: Output: default@partition_mv_1@key=278
+POSTHOOK: Output: default@partition_mv_1@key=280
+POSTHOOK: Output: default@partition_mv_1@key=281
+POSTHOOK: Output: default@partition_mv_1@key=282
+POSTHOOK: Output: default@partition_mv_1@key=283
+POSTHOOK: Output: default@partition_mv_1@key=284
+POSTHOOK: Output: default@partition_mv_1@key=285
+POSTHOOK: Output: default@partition_mv_1@key=286
+POSTHOOK: Output: default@partition_mv_1@key=287
+POSTHOOK: Output: default@partition_mv_1@key=288
+POSTHOOK: Output: default@partition_mv_1@key=289
+POSTHOOK: Output: default@partition_mv_1@key=291
+POSTHOOK: Output: default@partition_mv_1@key=292
+POSTHOOK: Output: default@partition_mv_1@key=296
+POSTHOOK: Output: default@partition_mv_1@key=298
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=201).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=202).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=203).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=205).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=207).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=208).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=209).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=213).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=214).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=216).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=217).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=218).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=219).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=221).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=222).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=223).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=224).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=226).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=228).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=229).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=230).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=233).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=235).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=237).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=238).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=239).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=241).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=242).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=244).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=247).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=248).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=249).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=252).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=255).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=256).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=257).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=258).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=260).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=262).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=263).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=265).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=266).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=272).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=273).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=274).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=275).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=277).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=278).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=280).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=281).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=282).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=283).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=284).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=285).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=286).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=287).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=288).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=289).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=291).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=292).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=296).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_1 PARTITION(key=298).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+PREHOOK: query: CREATE MATERIALIZED VIEW partition_mv_2 PARTITIONED ON (value) AS
+SELECT key, value FROM src_txn_2
+PREHOOK: type: CREATE_MATERIALIZED_VIEW
+PREHOOK: Input: default@src_txn_2
+PREHOOK: Output: database:default
+PREHOOK: Output: default@partition_mv_2
+PREHOOK: Output: default@partition_mv_2
+POSTHOOK: query: CREATE MATERIALIZED VIEW partition_mv_2 PARTITIONED ON (value) AS
+SELECT key, value FROM src_txn_2
+POSTHOOK: type: CREATE_MATERIALIZED_VIEW
+POSTHOOK: Input: default@src_txn_2
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@partition_mv_2
+POSTHOOK: Output: default@partition_mv_2@value=val_201
+POSTHOOK: Output: default@partition_mv_2@value=val_202
+POSTHOOK: Output: default@partition_mv_2@value=val_203
+POSTHOOK: Output: default@partition_mv_2@value=val_205
+POSTHOOK: Output: default@partition_mv_2@value=val_207
+POSTHOOK: Output: default@partition_mv_2@value=val_208
+POSTHOOK: Output: default@partition_mv_2@value=val_209
+POSTHOOK: Output: default@partition_mv_2@value=val_213
+POSTHOOK: Output: default@partition_mv_2@value=val_214
+POSTHOOK: Output: default@partition_mv_2@value=val_216
+POSTHOOK: Output: default@partition_mv_2@value=val_217
+POSTHOOK: Output: default@partition_mv_2@value=val_218
+POSTHOOK: Output: default@partition_mv_2@value=val_219
+POSTHOOK: Output: default@partition_mv_2@value=val_221
+POSTHOOK: Output: default@partition_mv_2@value=val_222
+POSTHOOK: Output: default@partition_mv_2@value=val_223
+POSTHOOK: Output: default@partition_mv_2@value=val_224
+POSTHOOK: Output: default@partition_mv_2@value=val_226
+POSTHOOK: Output: default@partition_mv_2@value=val_228
+POSTHOOK: Output: default@partition_mv_2@value=val_229
+POSTHOOK: Output: default@partition_mv_2@value=val_230
+POSTHOOK: Output: default@partition_mv_2@value=val_233
+POSTHOOK: Output: default@partition_mv_2@value=val_235
+POSTHOOK: Output: default@partition_mv_2@value=val_237
+POSTHOOK: Output: default@partition_mv_2@value=val_238
+POSTHOOK: Output: default@partition_mv_2@value=val_239
+POSTHOOK: Output: default@partition_mv_2@value=val_241
+POSTHOOK: Output: default@partition_mv_2@value=val_242
+POSTHOOK: Output: default@partition_mv_2@value=val_244
+POSTHOOK: Output: default@partition_mv_2@value=val_247
+POSTHOOK: Output: default@partition_mv_2@value=val_248
+POSTHOOK: Output: default@partition_mv_2@value=val_249
+POSTHOOK: Output: default@partition_mv_2@value=val_252
+POSTHOOK: Output: default@partition_mv_2@value=val_255
+POSTHOOK: Output: default@partition_mv_2@value=val_256
+POSTHOOK: Output: default@partition_mv_2@value=val_257
+POSTHOOK: Output: default@partition_mv_2@value=val_258
+POSTHOOK: Output: default@partition_mv_2@value=val_260
+POSTHOOK: Output: default@partition_mv_2@value=val_262
+POSTHOOK: Output: default@partition_mv_2@value=val_263
+POSTHOOK: Output: default@partition_mv_2@value=val_265
+POSTHOOK: Output: default@partition_mv_2@value=val_266
+POSTHOOK: Output: default@partition_mv_2@value=val_272
+POSTHOOK: Output: default@partition_mv_2@value=val_273
+POSTHOOK: Output: default@partition_mv_2@value=val_274
+POSTHOOK: Output: default@partition_mv_2@value=val_275
+POSTHOOK: Output: default@partition_mv_2@value=val_277
+POSTHOOK: Output: default@partition_mv_2@value=val_278
+POSTHOOK: Output: default@partition_mv_2@value=val_280
+POSTHOOK: Output: default@partition_mv_2@value=val_281
+POSTHOOK: Output: default@partition_mv_2@value=val_282
+POSTHOOK: Output: default@partition_mv_2@value=val_283
+POSTHOOK: Output: default@partition_mv_2@value=val_284
+POSTHOOK: Output: default@partition_mv_2@value=val_285
+POSTHOOK: Output: default@partition_mv_2@value=val_286
+POSTHOOK: Output: default@partition_mv_2@value=val_287
+POSTHOOK: Output: default@partition_mv_2@value=val_288
+POSTHOOK: Output: default@partition_mv_2@value=val_289
+POSTHOOK: Output: default@partition_mv_2@value=val_291
+POSTHOOK: Output: default@partition_mv_2@value=val_292
+POSTHOOK: Output: default@partition_mv_2@value=val_296
+POSTHOOK: Output: default@partition_mv_2@value=val_298
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_201).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_202).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_203).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_205).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_207).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_208).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_209).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_213).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_214).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_216).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_217).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_218).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_219).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_221).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_222).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_223).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_224).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_226).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_228).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_229).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_230).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_233).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_235).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_237).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_238).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_239).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_241).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_242).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_244).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_247).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_248).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_249).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_252).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_255).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_256).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_257).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_258).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_260).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_262).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_263).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_265).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_266).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_272).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_273).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_274).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_275).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_277).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_278).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_280).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_281).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_282).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_283).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_284).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_285).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_286).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_287).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_288).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_289).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_291).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_292).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_296).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_2 PARTITION(value=val_298).key SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:key, type:string, comment:null), ]
+PREHOOK: query: CREATE MATERIALIZED VIEW partition_mv_3 PARTITIONED ON (key) AS
+SELECT value, key FROM src_txn_2 where key > 220 and key < 230
+PREHOOK: type: CREATE_MATERIALIZED_VIEW
+PREHOOK: Input: default@src_txn_2
+PREHOOK: Output: database:default
+PREHOOK: Output: default@partition_mv_3
+PREHOOK: Output: default@partition_mv_3
+POSTHOOK: query: CREATE MATERIALIZED VIEW partition_mv_3 PARTITIONED ON (key) AS
+SELECT value, key FROM src_txn_2 where key > 220 and key < 230
+POSTHOOK: type: CREATE_MATERIALIZED_VIEW
+POSTHOOK: Input: default@src_txn_2
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@partition_mv_3
+POSTHOOK: Output: default@partition_mv_3@key=221
+POSTHOOK: Output: default@partition_mv_3@key=222
+POSTHOOK: Output: default@partition_mv_3@key=223
+POSTHOOK: Output: default@partition_mv_3@key=224
+POSTHOOK: Output: default@partition_mv_3@key=226
+POSTHOOK: Output: default@partition_mv_3@key=228
+POSTHOOK: Output: default@partition_mv_3@key=229
+POSTHOOK: Lineage: partition_mv_3 PARTITION(key=221).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_3 PARTITION(key=222).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_3 PARTITION(key=223).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_3 PARTITION(key=224).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_3 PARTITION(key=226).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_3 PARTITION(key=228).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_3 PARTITION(key=229).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+PREHOOK: query: CREATE MATERIALIZED VIEW partition_mv_4 PARTITIONED ON (key) AS
+SELECT value, key FROM src_txn_2 where key > 222 and key < 228
+PREHOOK: type: CREATE_MATERIALIZED_VIEW
+PREHOOK: Input: default@src_txn_2
+PREHOOK: Output: database:default
+PREHOOK: Output: default@partition_mv_4
+PREHOOK: Output: default@partition_mv_4
+POSTHOOK: query: CREATE MATERIALIZED VIEW partition_mv_4 PARTITIONED ON (key) AS
+SELECT value, key FROM src_txn_2 where key > 222 and key < 228
+POSTHOOK: type: CREATE_MATERIALIZED_VIEW
+POSTHOOK: Input: default@src_txn_2
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@partition_mv_4
+POSTHOOK: Output: default@partition_mv_4@key=223
+POSTHOOK: Output: default@partition_mv_4@key=224
+POSTHOOK: Output: default@partition_mv_4@key=226
+POSTHOOK: Lineage: partition_mv_4 PARTITION(key=223).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_4 PARTITION(key=224).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+POSTHOOK: Lineage: partition_mv_4 PARTITION(key=226).value SIMPLE [(src_txn_2)src_txn_2.FieldSchema(name:value, type:string, comment:null), ]
+PREHOOK: query: EXPLAIN
+SELECT * FROM src_txn_2 where key > 210 and key < 230
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN
+SELECT * FROM src_txn_2 where key > 210 and key < 230
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: default.partition_mv_1
+          filterExpr: ((UDFToDouble(key) > 210.0D) and (UDFToDouble(key) < 230.0D)) (type: boolean)
+          Filter Operator
+            predicate: ((UDFToDouble(key) < 230.0D) and (UDFToDouble(key) > 210.0D)) (type: boolean)
+            Select Operator
+              expressions: key (type: string), value (type: string)
+              outputColumnNames: _col0, _col1
+              ListSink
+
+PREHOOK: query: SELECT * FROM src_txn_2 where key > 210 and key < 230
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_mv_1
+PREHOOK: Input: default@partition_mv_1@key=213
+PREHOOK: Input: default@partition_mv_1@key=214
+PREHOOK: Input: default@partition_mv_1@key=216
+PREHOOK: Input: default@partition_mv_1@key=217
+PREHOOK: Input: default@partition_mv_1@key=218
+PREHOOK: Input: default@partition_mv_1@key=219
+PREHOOK: Input: default@partition_mv_1@key=221
+PREHOOK: Input: default@partition_mv_1@key=222
+PREHOOK: Input: default@partition_mv_1@key=223
+PREHOOK: Input: default@partition_mv_1@key=224
+PREHOOK: Input: default@partition_mv_1@key=226
+PREHOOK: Input: default@partition_mv_1@key=228
+PREHOOK: Input: default@partition_mv_1@key=229
+PREHOOK: Input: default@src_txn_2
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM src_txn_2 where key > 210 and key < 230
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_mv_1
+POSTHOOK: Input: default@partition_mv_1@key=213
+POSTHOOK: Input: default@partition_mv_1@key=214
+POSTHOOK: Input: default@partition_mv_1@key=216
+POSTHOOK: Input: default@partition_mv_1@key=217
+POSTHOOK: Input: default@partition_mv_1@key=218
+POSTHOOK: Input: default@partition_mv_1@key=219
+POSTHOOK: Input: default@partition_mv_1@key=221
+POSTHOOK: Input: default@partition_mv_1@key=222
+POSTHOOK: Input: default@partition_mv_1@key=223
+POSTHOOK: Input: default@partition_mv_1@key=224
+POSTHOOK: Input: default@partition_mv_1@key=226
+POSTHOOK: Input: default@partition_mv_1@key=228
+POSTHOOK: Input: default@partition_mv_1@key=229
+POSTHOOK: Input: default@src_txn_2
+#### A masked pattern was here ####
+213	val_213
+213	val_213
+214	val_214
+216	val_216
+216	val_216
+217	val_217
+217	val_217
+218	val_218
+219	val_219
+219	val_219
+221	val_221
+221	val_221
+222	val_222
+223	val_223
+223	val_223
+224	val_224
+224	val_224
+226	val_226
+228	val_228
+229	val_229
+229	val_229
+PREHOOK: query: EXPLAIN
+SELECT * FROM src_txn_2 where value > 'val_220' and value < 'val_230'
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN
+SELECT * FROM src_txn_2 where value > 'val_220' and value < 'val_230'
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: default.partition_mv_2
+          filterExpr: ((value < 'val_230') and (value > 'val_220')) (type: boolean)
+          Select Operator
+            expressions: key (type: string), value (type: string)
+            outputColumnNames: _col0, _col1
+            ListSink
+
+PREHOOK: query: SELECT * FROM src_txn_2 where value > 'val_220' and value < 'val_230'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_mv_2
+PREHOOK: Input: default@partition_mv_2@value=val_221
+PREHOOK: Input: default@partition_mv_2@value=val_222
+PREHOOK: Input: default@partition_mv_2@value=val_223
+PREHOOK: Input: default@partition_mv_2@value=val_224
+PREHOOK: Input: default@partition_mv_2@value=val_226
+PREHOOK: Input: default@partition_mv_2@value=val_228
+PREHOOK: Input: default@partition_mv_2@value=val_229
+PREHOOK: Input: default@src_txn_2
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM src_txn_2 where value > 'val_220' and value < 'val_230'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_mv_2
+POSTHOOK: Input: default@partition_mv_2@value=val_221
+POSTHOOK: Input: default@partition_mv_2@value=val_222
+POSTHOOK: Input: default@partition_mv_2@value=val_223
+POSTHOOK: Input: default@partition_mv_2@value=val_224
+POSTHOOK: Input: default@partition_mv_2@value=val_226
+POSTHOOK: Input: default@partition_mv_2@value=val_228
+POSTHOOK: Input: default@partition_mv_2@value=val_229
+POSTHOOK: Input: default@src_txn_2
+#### A masked pattern was here ####
+221	val_221
+221	val_221
+222	val_222
+223	val_223
+223	val_223
+224	val_224
+224	val_224
+226	val_226
+228	val_228
+229	val_229
+229	val_229
+PREHOOK: query: EXPLAIN
+SELECT * FROM src_txn_2 where key > 224 and key < 226
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN
+SELECT * FROM src_txn_2 where key > 224 and key < 226
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: default.partition_mv_4
+          filterExpr: ((UDFToDouble(key) > 224.0D) and (UDFToDouble(key) < 226.0D)) (type: boolean)
+          Filter Operator
+            predicate: ((UDFToDouble(key) < 226.0D) and (UDFToDouble(key) > 224.0D)) (type: boolean)
+            Select Operator
+              expressions: key (type: string), value (type: string)
+              outputColumnNames: _col0, _col1
+              ListSink
+
+PREHOOK: query: SELECT * FROM src_txn_2 where key > 223 and key < 225
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_mv_4
+PREHOOK: Input: default@partition_mv_4@key=224
+PREHOOK: Input: default@src_txn_2
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM src_txn_2 where key > 223 and key < 225
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_mv_4
+POSTHOOK: Input: default@partition_mv_4@key=224
+POSTHOOK: Input: default@src_txn_2
+#### A masked pattern was here ####
+224	val_224
+224	val_224
+PREHOOK: query: DROP MATERIALIZED VIEW partition_mv_1
+PREHOOK: type: DROP_MATERIALIZED_VIEW
+PREHOOK: Input: default@partition_mv_1
+PREHOOK: Output: default@partition_mv_1
+POSTHOOK: query: DROP MATERIALIZED VIEW partition_mv_1
+POSTHOOK: type: DROP_MATERIALIZED_VIEW
+POSTHOOK: Input: default@partition_mv_1
+POSTHOOK: Output: default@partition_mv_1
+PREHOOK: query: DROP MATERIALIZED VIEW partition_mv_2
+PREHOOK: type: DROP_MATERIALIZED_VIEW
+PREHOOK: Input: default@partition_mv_2
+PREHOOK: Output: default@partition_mv_2
+POSTHOOK: query: DROP MATERIALIZED VIEW partition_mv_2
+POSTHOOK: type: DROP_MATERIALIZED_VIEW
+POSTHOOK: Input: default@partition_mv_2
+POSTHOOK: Output: default@partition_mv_2
+PREHOOK: query: DROP MATERIALIZED VIEW partition_mv_3
+PREHOOK: type: DROP_MATERIALIZED_VIEW
+PREHOOK: Input: default@partition_mv_3
+PREHOOK: Output: default@partition_mv_3
+POSTHOOK: query: DROP MATERIALIZED VIEW partition_mv_3
+POSTHOOK: type: DROP_MATERIALIZED_VIEW
+POSTHOOK: Input: default@partition_mv_3
+POSTHOOK: Output: default@partition_mv_3
+PREHOOK: query: DROP MATERIALIZED VIEW partition_mv_4
+PREHOOK: type: DROP_MATERIALIZED_VIEW
+PREHOOK: Input: default@partition_mv_4
+PREHOOK: Output: default@partition_mv_4
+POSTHOOK: query: DROP MATERIALIZED VIEW partition_mv_4
+POSTHOOK: type: DROP_MATERIALIZED_VIEW
+POSTHOOK: Input: default@partition_mv_4
+POSTHOOK: Output: default@partition_mv_4
+PREHOOK: query: DROP TABLE src_txn_2
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@src_txn_2
+PREHOOK: Output: default@src_txn_2
+POSTHOOK: query: DROP TABLE src_txn_2
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@src_txn_2
+POSTHOOK: Output: default@src_txn_2