You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by su...@apache.org on 2017/01/13 17:38:14 UTC

hive git commit: HIVE-15537: Nested column pruning: fix issue when selecting struct field from array/map element (part 2) (Chao Sun, reviewed by Ferdinand Xu)

Repository: hive
Updated Branches:
  refs/heads/master a28b28f32 -> 4066da82c


HIVE-15537: Nested column pruning: fix issue when selecting struct field from array/map element (part 2) (Chao Sun, reviewed by Ferdinand Xu)


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

Branch: refs/heads/master
Commit: 4066da82c722ea2698fa9f66ffa9737cd1a8c235
Parents: a28b28f
Author: Chao Sun <su...@apache.org>
Authored: Tue Jan 3 21:10:13 2017 -0800
Committer: Chao Sun <su...@apache.org>
Committed: Fri Jan 13 09:37:07 2017 -0800

----------------------------------------------------------------------
 .../hive/ql/optimizer/ColumnPrunerProcCtx.java  |  48 +-
 .../clientpositive/nested_column_pruning.q      |  50 +-
 .../clientpositive/input_testxpath3.q.out       |   1 -
 .../clientpositive/nested_column_pruning.q.out  | 592 ++++++++++++++-----
 4 files changed, 528 insertions(+), 163 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/4066da82/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcCtx.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcCtx.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcCtx.java
index 2a0c469..e27fbdb 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcCtx.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcCtx.java
@@ -39,10 +39,10 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
 import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
 import org.apache.hadoop.hive.ql.plan.ExprNodeFieldDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
 import org.apache.hadoop.hive.ql.plan.OperatorDesc;
 import org.apache.hadoop.hive.ql.plan.SelectDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDFIndex;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
 
 import static org.apache.hadoop.hive.ql.optimizer.FieldNode.mergeFieldNodes;
 
@@ -239,40 +239,38 @@ public class ColumnPrunerProcCtx implements NodeProcessorCtx {
     FieldNode pathToRoot,
     List<FieldNode> paths) {
     if (desc instanceof ExprNodeColumnDesc) {
-      String f = ((ExprNodeColumnDesc) desc).getColumn();
-      FieldNode p = new FieldNode(f);
-      p.addFieldNodes(pathToRoot);
+      ExprNodeColumnDesc columnDesc = (ExprNodeColumnDesc) desc;
+      FieldNode p = new FieldNode(columnDesc.getColumn());
+      checkListAndMap(columnDesc, pathToRoot, p);
       paths.add(p);
     } else if (desc instanceof ExprNodeFieldDesc) {
       ExprNodeFieldDesc fieldDesc = (ExprNodeFieldDesc) desc;
       ExprNodeDesc childDesc = fieldDesc.getDesc();
-
-      // Check cases for arr[i].f and map[key].v
-      // For these we should not generate paths like arr.f or map.v
-      // Otherwise we would have a mismatch between type info and path
-      if (childDesc instanceof ExprNodeGenericFuncDesc) {
-        ExprNodeGenericFuncDesc funcDesc = (ExprNodeGenericFuncDesc) childDesc;
-        if (funcDesc.getGenericUDF() instanceof GenericUDFIndex) {
-          getNestedColsFromExprNodeDesc(funcDesc, pathToRoot, paths);
-          return;
-        }
-      }
-
-      String f = fieldDesc.getFieldName();
-      FieldNode p = new FieldNode(f);
-      p.addFieldNodes(pathToRoot);
+      FieldNode p = new FieldNode(fieldDesc.getFieldName());
+      checkListAndMap(fieldDesc, pathToRoot, p);
       getNestedColsFromExprNodeDesc(childDesc, p, paths);
     } else {
       List<ExprNodeDesc> children = desc.getChildren();
-      if (children == null || children.isEmpty()) {
-        return;
-      }
-      for (ExprNodeDesc c : children) {
-        getNestedColsFromExprNodeDesc(c, pathToRoot, paths);
+      if (children != null) {
+        for (ExprNodeDesc c : children) {
+          getNestedColsFromExprNodeDesc(c, pathToRoot, paths);
+        }
       }
     }
   }
 
+  private static void checkListAndMap(ExprNodeDesc desc, FieldNode pathToRoot, FieldNode fn) {
+    TypeInfo ti = desc.getTypeInfo();
+
+    // Check cases for arr[i].f and map[key].v
+    // For these we should not generate paths like arr.f or map.v
+    // Otherwise we would have a mismatch between type info and path
+    if (ti.getCategory() != ObjectInspector.Category.LIST
+        && ti.getCategory() != ObjectInspector.Category.MAP) {
+      fn.addFieldNodes(pathToRoot);
+    }
+  }
+
   /**
    * Create the list of internal columns for select tag of LV
    */

http://git-wip-us.apache.org/repos/asf/hive/blob/4066da82/ql/src/test/queries/clientpositive/nested_column_pruning.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/nested_column_pruning.q b/ql/src/test/queries/clientpositive/nested_column_pruning.q
index 35de3ed..80a791a 100644
--- a/ql/src/test/queries/clientpositive/nested_column_pruning.q
+++ b/ql/src/test/queries/clientpositive/nested_column_pruning.q
@@ -12,14 +12,19 @@ CREATE TABLE nested_tbl_1 (
   s1 struct<f1: boolean, f2: string, f3: struct<f4: int, f5: double>, f6: int>,
   s2 struct<f7: string, f8: struct<f9 : boolean, f10: array<int>, f11: map<string, boolean>>>,
   s3 struct<f12: array<struct<f13:string, f14:int>>>,
-  s4 map<string, struct<f15:int>>
+  s4 map<string, struct<f15:int>>,
+  s5 struct<f16: array<struct<f17:string, f18:struct<f19:int>>>>,
+  s6 map<string, struct<f20:array<struct<f21:struct<f22:int>>>>>
 ) STORED AS PARQUET;
 
 INSERT INTO TABLE nested_tbl_1 SELECT
   1, named_struct('f1', false, 'f2', 'foo', 'f3', named_struct('f4', 4, 'f5', cast(5.0 as double)), 'f6', 4),
   named_struct('f7', 'f7', 'f8', named_struct('f9', true, 'f10', array(10, 11), 'f11', map('key1', true, 'key2', false))),
   named_struct('f12', array(named_struct('f13', 'foo', 'f14', 14), named_struct('f13', 'bar', 'f14', 28))),
-  map('key1', named_struct('f15', 1), 'key2', named_struct('f15', 2))
+  map('key1', named_struct('f15', 1), 'key2', named_struct('f15', 2)),
+  named_struct('f16', array(named_struct('f17', 'foo', 'f18', named_struct('f19', 14)), named_struct('f17', 'bar', 'f18', named_struct('f19', 28)))),
+  map('key1', named_struct('f20', array(named_struct('f21', named_struct('f22', 1)))),
+      'key2', named_struct('f20', array(named_struct('f21', named_struct('f22', 2)))))
 FROM dummy;
 
 DROP TABLE IF EXISTS nested_tbl_2;
@@ -29,7 +34,10 @@ INSERT INTO TABLE nested_tbl_2 SELECT
   2, named_struct('f1', true, 'f2', 'bar', 'f3', named_struct('f4', 4, 'f5', cast(6.5 as double)), 'f6', 4),
   named_struct('f7', 'f72', 'f8', named_struct('f9', false, 'f10', array(20, 22), 'f11', map('key3', true, 'key4', false))),
   named_struct('f12', array(named_struct('f13', 'bar', 'f14', 28), named_struct('f13', 'foo', 'f14', 56))),
-  map('key3', named_struct('f15', 3), 'key4', named_struct('f15', 4))
+  map('key3', named_struct('f15', 3), 'key4', named_struct('f15', 4)),
+  named_struct('f16', array(named_struct('f17', 'bar', 'f18', named_struct('f19', 28)), named_struct('f17', 'foo', 'f18', named_struct('f19', 56)))),
+  map('key3', named_struct('f20', array(named_struct('f21', named_struct('f22', 3)))),
+      'key4', named_struct('f20', array(named_struct('f21', named_struct('f22', 4)))))
 FROM dummy;
 
 -- Testing only select statements
@@ -145,3 +153,39 @@ GROUP BY s4['key1'].f15;
 SELECT count(s1.f6), s4['key1'].f15
 FROM nested_tbl_1
 GROUP BY s4['key1'].f15;
+
+EXPLAIN
+SELECT count(s1.f6), s5.f16[0].f18.f19
+FROM nested_tbl_1
+GROUP BY s5.f16[0].f18.f19;
+
+SELECT count(s1.f6), s5.f16[0].f18.f19
+FROM nested_tbl_1
+GROUP BY s5.f16[0].f18.f19;
+
+EXPLAIN
+SELECT count(s1.f6), s5.f16.f18.f19
+FROM nested_tbl_1
+GROUP BY s5.f16.f18.f19;
+
+SELECT count(s1.f6), s5.f16.f18.f19
+FROM nested_tbl_1
+GROUP BY s5.f16.f18.f19;
+
+EXPLAIN
+SELECT count(s1.f6), s6['key1'].f20[0].f21.f22
+FROM nested_tbl_1
+GROUP BY s6['key1'].f20[0].f21.f22;
+
+SELECT count(s1.f6), s6['key1'].f20[0].f21.f22
+FROM nested_tbl_1
+GROUP BY s6['key1'].f20[0].f21.f22;
+
+EXPLAIN
+SELECT count(s1.f6), s6['key1'].f20.f21.f22
+FROM nested_tbl_1
+GROUP BY s6['key1'].f20.f21.f22;
+
+SELECT count(s1.f6), s6['key1'].f20.f21.f22
+FROM nested_tbl_1
+GROUP BY s6['key1'].f20.f21.f22;

http://git-wip-us.apache.org/repos/asf/hive/blob/4066da82/ql/src/test/results/clientpositive/input_testxpath3.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/input_testxpath3.q.out b/ql/src/test/results/clientpositive/input_testxpath3.q.out
index 2fe5c61..5779bfd 100644
--- a/ql/src/test/results/clientpositive/input_testxpath3.q.out
+++ b/ql/src/test/results/clientpositive/input_testxpath3.q.out
@@ -16,7 +16,6 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             alias: src_thrift
-            Pruned Column Paths: lintstring.myint
             Statistics: Num rows: 11 Data size: 3070 Basic stats: COMPLETE Column stats: NONE
             Select Operator
               expressions: mstringstring['key_9'] (type: string), lintstring.myint (type: array<int>)

http://git-wip-us.apache.org/repos/asf/hive/blob/4066da82/ql/src/test/results/clientpositive/nested_column_pruning.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/nested_column_pruning.q.out b/ql/src/test/results/clientpositive/nested_column_pruning.q.out
index da2908c..840bb12 100644
--- a/ql/src/test/results/clientpositive/nested_column_pruning.q.out
+++ b/ql/src/test/results/clientpositive/nested_column_pruning.q.out
@@ -28,7 +28,9 @@ PREHOOK: query: CREATE TABLE nested_tbl_1 (
   s1 struct<f1: boolean, f2: string, f3: struct<f4: int, f5: double>, f6: int>,
   s2 struct<f7: string, f8: struct<f9 : boolean, f10: array<int>, f11: map<string, boolean>>>,
   s3 struct<f12: array<struct<f13:string, f14:int>>>,
-  s4 map<string, struct<f15:int>>
+  s4 map<string, struct<f15:int>>,
+  s5 struct<f16: array<struct<f17:string, f18:struct<f19:int>>>>,
+  s6 map<string, struct<f20:array<struct<f21:struct<f22:int>>>>>
 ) STORED AS PARQUET
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
@@ -38,7 +40,9 @@ POSTHOOK: query: CREATE TABLE nested_tbl_1 (
   s1 struct<f1: boolean, f2: string, f3: struct<f4: int, f5: double>, f6: int>,
   s2 struct<f7: string, f8: struct<f9 : boolean, f10: array<int>, f11: map<string, boolean>>>,
   s3 struct<f12: array<struct<f13:string, f14:int>>>,
-  s4 map<string, struct<f15:int>>
+  s4 map<string, struct<f15:int>>,
+  s5 struct<f16: array<struct<f17:string, f18:struct<f19:int>>>>,
+  s6 map<string, struct<f20:array<struct<f21:struct<f22:int>>>>>
 ) STORED AS PARQUET
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
@@ -47,7 +51,10 @@ PREHOOK: query: INSERT INTO TABLE nested_tbl_1 SELECT
   1, named_struct('f1', false, 'f2', 'foo', 'f3', named_struct('f4', 4, 'f5', cast(5.0 as double)), 'f6', 4),
   named_struct('f7', 'f7', 'f8', named_struct('f9', true, 'f10', array(10, 11), 'f11', map('key1', true, 'key2', false))),
   named_struct('f12', array(named_struct('f13', 'foo', 'f14', 14), named_struct('f13', 'bar', 'f14', 28))),
-  map('key1', named_struct('f15', 1), 'key2', named_struct('f15', 2))
+  map('key1', named_struct('f15', 1), 'key2', named_struct('f15', 2)),
+  named_struct('f16', array(named_struct('f17', 'foo', 'f18', named_struct('f19', 14)), named_struct('f17', 'bar', 'f18', named_struct('f19', 28)))),
+  map('key1', named_struct('f20', array(named_struct('f21', named_struct('f22', 1)))),
+      'key2', named_struct('f20', array(named_struct('f21', named_struct('f22', 2)))))
 FROM dummy
 PREHOOK: type: QUERY
 PREHOOK: Input: default@dummy
@@ -56,7 +63,10 @@ POSTHOOK: query: INSERT INTO TABLE nested_tbl_1 SELECT
   1, named_struct('f1', false, 'f2', 'foo', 'f3', named_struct('f4', 4, 'f5', cast(5.0 as double)), 'f6', 4),
   named_struct('f7', 'f7', 'f8', named_struct('f9', true, 'f10', array(10, 11), 'f11', map('key1', true, 'key2', false))),
   named_struct('f12', array(named_struct('f13', 'foo', 'f14', 14), named_struct('f13', 'bar', 'f14', 28))),
-  map('key1', named_struct('f15', 1), 'key2', named_struct('f15', 2))
+  map('key1', named_struct('f15', 1), 'key2', named_struct('f15', 2)),
+  named_struct('f16', array(named_struct('f17', 'foo', 'f18', named_struct('f19', 14)), named_struct('f17', 'bar', 'f18', named_struct('f19', 28)))),
+  map('key1', named_struct('f20', array(named_struct('f21', named_struct('f22', 1)))),
+      'key2', named_struct('f20', array(named_struct('f21', named_struct('f22', 2)))))
 FROM dummy
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@dummy
@@ -66,6 +76,8 @@ POSTHOOK: Lineage: nested_tbl_1.s1 EXPRESSION []
 POSTHOOK: Lineage: nested_tbl_1.s2 EXPRESSION []
 POSTHOOK: Lineage: nested_tbl_1.s3 EXPRESSION []
 POSTHOOK: Lineage: nested_tbl_1.s4 EXPRESSION []
+POSTHOOK: Lineage: nested_tbl_1.s5 EXPRESSION []
+POSTHOOK: Lineage: nested_tbl_1.s6 EXPRESSION []
 PREHOOK: query: DROP TABLE IF EXISTS nested_tbl_2
 PREHOOK: type: DROPTABLE
 POSTHOOK: query: DROP TABLE IF EXISTS nested_tbl_2
@@ -82,7 +94,10 @@ PREHOOK: query: INSERT INTO TABLE nested_tbl_2 SELECT
   2, named_struct('f1', true, 'f2', 'bar', 'f3', named_struct('f4', 4, 'f5', cast(6.5 as double)), 'f6', 4),
   named_struct('f7', 'f72', 'f8', named_struct('f9', false, 'f10', array(20, 22), 'f11', map('key3', true, 'key4', false))),
   named_struct('f12', array(named_struct('f13', 'bar', 'f14', 28), named_struct('f13', 'foo', 'f14', 56))),
-  map('key3', named_struct('f15', 3), 'key4', named_struct('f15', 4))
+  map('key3', named_struct('f15', 3), 'key4', named_struct('f15', 4)),
+  named_struct('f16', array(named_struct('f17', 'bar', 'f18', named_struct('f19', 28)), named_struct('f17', 'foo', 'f18', named_struct('f19', 56)))),
+  map('key3', named_struct('f20', array(named_struct('f21', named_struct('f22', 3)))),
+      'key4', named_struct('f20', array(named_struct('f21', named_struct('f22', 4)))))
 FROM dummy
 PREHOOK: type: QUERY
 PREHOOK: Input: default@dummy
@@ -91,7 +106,10 @@ POSTHOOK: query: INSERT INTO TABLE nested_tbl_2 SELECT
   2, named_struct('f1', true, 'f2', 'bar', 'f3', named_struct('f4', 4, 'f5', cast(6.5 as double)), 'f6', 4),
   named_struct('f7', 'f72', 'f8', named_struct('f9', false, 'f10', array(20, 22), 'f11', map('key3', true, 'key4', false))),
   named_struct('f12', array(named_struct('f13', 'bar', 'f14', 28), named_struct('f13', 'foo', 'f14', 56))),
-  map('key3', named_struct('f15', 3), 'key4', named_struct('f15', 4))
+  map('key3', named_struct('f15', 3), 'key4', named_struct('f15', 4)),
+  named_struct('f16', array(named_struct('f17', 'bar', 'f18', named_struct('f19', 28)), named_struct('f17', 'foo', 'f18', named_struct('f19', 56)))),
+  map('key3', named_struct('f20', array(named_struct('f21', named_struct('f22', 3)))),
+      'key4', named_struct('f20', array(named_struct('f21', named_struct('f22', 4)))))
 FROM dummy
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@dummy
@@ -101,6 +119,8 @@ POSTHOOK: Lineage: nested_tbl_2.s1 EXPRESSION []
 POSTHOOK: Lineage: nested_tbl_2.s2 EXPRESSION []
 POSTHOOK: Lineage: nested_tbl_2.s3 EXPRESSION []
 POSTHOOK: Lineage: nested_tbl_2.s4 EXPRESSION []
+POSTHOOK: Lineage: nested_tbl_2.s5 EXPRESSION []
+POSTHOOK: Lineage: nested_tbl_2.s6 EXPRESSION []
 PREHOOK: query: -- Testing only select statements
 
 EXPLAIN SELECT a FROM nested_tbl_1
@@ -119,14 +139,14 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             alias: nested_tbl_1
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             Select Operator
               expressions: a (type: int)
               outputColumnNames: _col0
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               File Output Operator
                 compressed: false
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 table:
                     input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                     output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -162,14 +182,14 @@ STAGE PLANS:
           TableScan
             alias: nested_tbl_1
             Pruned Column Paths: s1.f1
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             Select Operator
               expressions: s1.f1 (type: boolean)
               outputColumnNames: _col0
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               File Output Operator
                 compressed: false
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 table:
                     input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                     output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -205,14 +225,14 @@ STAGE PLANS:
           TableScan
             alias: nested_tbl_1
             Pruned Column Paths: s1.f1, s1.f2
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             Select Operator
               expressions: s1.f1 (type: boolean), s1.f2 (type: string)
               outputColumnNames: _col0, _col1
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               File Output Operator
                 compressed: false
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 table:
                     input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                     output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -250,14 +270,14 @@ STAGE PLANS:
           TableScan
             alias: nested_tbl_1
             Pruned Column Paths: s1.f3
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             Select Operator
               expressions: s1.f3 (type: struct<f4:int,f5:double>), s1.f3.f4 (type: int)
               outputColumnNames: _col0, _col1
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               File Output Operator
                 compressed: false
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 table:
                     input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                     output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -295,14 +315,14 @@ STAGE PLANS:
           TableScan
             alias: nested_tbl_1
             Pruned Column Paths: s1.f3.f5
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             Select Operator
               expressions: s1.f3.f5 (type: double)
               outputColumnNames: _col0
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               File Output Operator
                 compressed: false
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 table:
                     input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                     output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -340,14 +360,14 @@ STAGE PLANS:
           TableScan
             alias: nested_tbl_1
             Pruned Column Paths: s1.f3.f4, s2.f8.f9
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             Select Operator
               expressions: s1.f3.f4 (type: int), s2.f8.f9 (type: boolean)
               outputColumnNames: _col0, _col1
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               File Output Operator
                 compressed: false
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 table:
                     input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                     output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -387,17 +407,17 @@ STAGE PLANS:
           TableScan
             alias: nested_tbl_1
             Pruned Column Paths: s1.f2, s1.f1
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             Filter Operator
               predicate: (s1.f1 = false) (type: boolean)
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               Select Operator
                 expressions: s1.f2 (type: string)
                 outputColumnNames: _col0
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 File Output Operator
                   compressed: false
-                  Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                   table:
                       input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                       output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -433,17 +453,17 @@ STAGE PLANS:
           TableScan
             alias: nested_tbl_1
             Pruned Column Paths: s1.f3.f5, s1.f3.f4
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             Filter Operator
               predicate: (s1.f3.f4 = 4) (type: boolean)
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               Select Operator
                 expressions: s1.f3.f5 (type: double)
                 outputColumnNames: _col0
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 File Output Operator
                   compressed: false
-                  Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                   table:
                       input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                       output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -479,17 +499,17 @@ STAGE PLANS:
           TableScan
             alias: nested_tbl_1
             Pruned Column Paths: s1.f2, s2.f8
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             Filter Operator
               predicate: ((s1.f2 = 'foo') and (size(s2.f8.f10) > 1) and s2.f8.f11['key1']) (type: boolean)
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               Select Operator
                 expressions: s2.f8 (type: struct<f9:boolean,f10:array<int>,f11:map<string,boolean>>)
                 outputColumnNames: _col0
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 File Output Operator
                   compressed: false
-                  Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                   table:
                       input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                       output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -533,32 +553,32 @@ STAGE PLANS:
           TableScan
             alias: nested_tbl_1
             Pruned Column Paths: s2.f8.f10
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             Lateral View Forward
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               Select Operator
                 expressions: s3 (type: struct<f12:array<struct<f13:string,f14:int>>>)
                 outputColumnNames: s3
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 Lateral View Join Operator
-                  outputColumnNames: _col3, _col8
-                  Statistics: Num rows: 2 Data size: 10 Basic stats: COMPLETE Column stats: NONE
+                  outputColumnNames: _col3, _col10
+                  Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE
                   Lateral View Forward
-                    Statistics: Num rows: 2 Data size: 10 Basic stats: COMPLETE Column stats: NONE
+                    Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE
                     Select Operator
-                      expressions: _col8 (type: int)
-                      outputColumnNames: _col8
-                      Statistics: Num rows: 2 Data size: 10 Basic stats: COMPLETE Column stats: NONE
+                      expressions: _col10 (type: int)
+                      outputColumnNames: _col10
+                      Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE
                       Lateral View Join Operator
-                        outputColumnNames: _col8, _col9
-                        Statistics: Num rows: 4 Data size: 20 Basic stats: COMPLETE Column stats: NONE
+                        outputColumnNames: _col10, _col11
+                        Statistics: Num rows: 4 Data size: 28 Basic stats: COMPLETE Column stats: NONE
                         Select Operator
-                          expressions: _col8 (type: int), _col9 (type: struct<f13:string,f14:int>)
+                          expressions: _col10 (type: int), _col11 (type: struct<f13:string,f14:int>)
                           outputColumnNames: _col0, _col1
-                          Statistics: Num rows: 4 Data size: 20 Basic stats: COMPLETE Column stats: NONE
+                          Statistics: Num rows: 4 Data size: 28 Basic stats: COMPLETE Column stats: NONE
                           File Output Operator
                             compressed: false
-                            Statistics: Num rows: 4 Data size: 20 Basic stats: COMPLETE Column stats: NONE
+                            Statistics: Num rows: 4 Data size: 28 Basic stats: COMPLETE Column stats: NONE
                             table:
                                 input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                                 output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -566,20 +586,20 @@ STAGE PLANS:
                     Select Operator
                       expressions: _col3.f12 (type: array<struct<f13:string,f14:int>>)
                       outputColumnNames: _col0
-                      Statistics: Num rows: 2 Data size: 10 Basic stats: COMPLETE Column stats: NONE
+                      Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE
                       UDTF Operator
-                        Statistics: Num rows: 2 Data size: 10 Basic stats: COMPLETE Column stats: NONE
+                        Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE
                         function name: explode
                         Lateral View Join Operator
-                          outputColumnNames: _col8, _col9
-                          Statistics: Num rows: 4 Data size: 20 Basic stats: COMPLETE Column stats: NONE
+                          outputColumnNames: _col10, _col11
+                          Statistics: Num rows: 4 Data size: 28 Basic stats: COMPLETE Column stats: NONE
                           Select Operator
-                            expressions: _col8 (type: int), _col9 (type: struct<f13:string,f14:int>)
+                            expressions: _col10 (type: int), _col11 (type: struct<f13:string,f14:int>)
                             outputColumnNames: _col0, _col1
-                            Statistics: Num rows: 4 Data size: 20 Basic stats: COMPLETE Column stats: NONE
+                            Statistics: Num rows: 4 Data size: 28 Basic stats: COMPLETE Column stats: NONE
                             File Output Operator
                               compressed: false
-                              Statistics: Num rows: 4 Data size: 20 Basic stats: COMPLETE Column stats: NONE
+                              Statistics: Num rows: 4 Data size: 28 Basic stats: COMPLETE Column stats: NONE
                               table:
                                   input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                                   output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -587,29 +607,29 @@ STAGE PLANS:
               Select Operator
                 expressions: s2.f8.f10 (type: array<int>)
                 outputColumnNames: _col0
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 UDTF Operator
-                  Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                   function name: explode
                   Lateral View Join Operator
-                    outputColumnNames: _col3, _col8
-                    Statistics: Num rows: 2 Data size: 10 Basic stats: COMPLETE Column stats: NONE
+                    outputColumnNames: _col3, _col10
+                    Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE
                     Lateral View Forward
-                      Statistics: Num rows: 2 Data size: 10 Basic stats: COMPLETE Column stats: NONE
+                      Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE
                       Select Operator
-                        expressions: _col8 (type: int)
-                        outputColumnNames: _col8
-                        Statistics: Num rows: 2 Data size: 10 Basic stats: COMPLETE Column stats: NONE
+                        expressions: _col10 (type: int)
+                        outputColumnNames: _col10
+                        Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE
                         Lateral View Join Operator
-                          outputColumnNames: _col8, _col9
-                          Statistics: Num rows: 4 Data size: 20 Basic stats: COMPLETE Column stats: NONE
+                          outputColumnNames: _col10, _col11
+                          Statistics: Num rows: 4 Data size: 28 Basic stats: COMPLETE Column stats: NONE
                           Select Operator
-                            expressions: _col8 (type: int), _col9 (type: struct<f13:string,f14:int>)
+                            expressions: _col10 (type: int), _col11 (type: struct<f13:string,f14:int>)
                             outputColumnNames: _col0, _col1
-                            Statistics: Num rows: 4 Data size: 20 Basic stats: COMPLETE Column stats: NONE
+                            Statistics: Num rows: 4 Data size: 28 Basic stats: COMPLETE Column stats: NONE
                             File Output Operator
                               compressed: false
-                              Statistics: Num rows: 4 Data size: 20 Basic stats: COMPLETE Column stats: NONE
+                              Statistics: Num rows: 4 Data size: 28 Basic stats: COMPLETE Column stats: NONE
                               table:
                                   input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                                   output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -617,20 +637,20 @@ STAGE PLANS:
                       Select Operator
                         expressions: _col3.f12 (type: array<struct<f13:string,f14:int>>)
                         outputColumnNames: _col0
-                        Statistics: Num rows: 2 Data size: 10 Basic stats: COMPLETE Column stats: NONE
+                        Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE
                         UDTF Operator
-                          Statistics: Num rows: 2 Data size: 10 Basic stats: COMPLETE Column stats: NONE
+                          Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE
                           function name: explode
                           Lateral View Join Operator
-                            outputColumnNames: _col8, _col9
-                            Statistics: Num rows: 4 Data size: 20 Basic stats: COMPLETE Column stats: NONE
+                            outputColumnNames: _col10, _col11
+                            Statistics: Num rows: 4 Data size: 28 Basic stats: COMPLETE Column stats: NONE
                             Select Operator
-                              expressions: _col8 (type: int), _col9 (type: struct<f13:string,f14:int>)
+                              expressions: _col10 (type: int), _col11 (type: struct<f13:string,f14:int>)
                               outputColumnNames: _col0, _col1
-                              Statistics: Num rows: 4 Data size: 20 Basic stats: COMPLETE Column stats: NONE
+                              Statistics: Num rows: 4 Data size: 28 Basic stats: COMPLETE Column stats: NONE
                               File Output Operator
                                 compressed: false
-                                Statistics: Num rows: 4 Data size: 20 Basic stats: COMPLETE Column stats: NONE
+                                Statistics: Num rows: 4 Data size: 28 Basic stats: COMPLETE Column stats: NONE
                                 table:
                                     input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                                     output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -675,14 +695,14 @@ STAGE PLANS:
           TableScan
             alias: nested_tbl_1
             Pruned Column Paths: s2.f8.f10, s1.f3.f4
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             Select Operator
               expressions: (s2.f8.f10[1] pmod s1.f3.f4) (type: int)
               outputColumnNames: _col0
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               File Output Operator
                 compressed: false
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 table:
                     input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                     output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -722,22 +742,22 @@ STAGE PLANS:
           TableScan
             alias: nested_tbl_1
             Pruned Column Paths: s1.f3.f5, s1.f3.f4
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             Select Operator
               expressions: s1.f3.f5 (type: double), s1.f3.f4 (type: int)
               outputColumnNames: _col0, _col1
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: count(_col1)
                 keys: _col0 (type: double)
                 mode: hash
                 outputColumnNames: _col0, _col1
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: double)
                   sort order: +
                   Map-reduce partition columns: _col0 (type: double)
-                  Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col1 (type: bigint)
       Reduce Operator Tree:
         Group By Operator
@@ -745,10 +765,10 @@ STAGE PLANS:
           keys: KEY._col0 (type: double)
           mode: mergepartial
           outputColumnNames: _col0, _col1
-          Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+          Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
           File Output Operator
             compressed: false
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             table:
                 input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                 output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -784,22 +804,22 @@ STAGE PLANS:
           TableScan
             alias: nested_tbl_1
             Pruned Column Paths: s1.f3
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             Select Operator
               expressions: s1.f3 (type: struct<f4:int,f5:double>), s1.f3.f4 (type: int)
               outputColumnNames: _col0, _col1
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: count(_col1)
                 keys: _col0 (type: struct<f4:int,f5:double>)
                 mode: hash
                 outputColumnNames: _col0, _col1
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: struct<f4:int,f5:double>)
                   sort order: +
                   Map-reduce partition columns: _col0 (type: struct<f4:int,f5:double>)
-                  Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col1 (type: bigint)
       Reduce Operator Tree:
         Group By Operator
@@ -807,10 +827,10 @@ STAGE PLANS:
           keys: KEY._col0 (type: struct<f4:int,f5:double>)
           mode: mergepartial
           outputColumnNames: _col0, _col1
-          Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+          Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
           File Output Operator
             compressed: false
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             table:
                 input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                 output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -847,22 +867,22 @@ STAGE PLANS:
           TableScan
             alias: nested_tbl_1
             Pruned Column Paths: s1.f3
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             Select Operator
               expressions: s1.f3 (type: struct<f4:int,f5:double>), s1.f3.f4 (type: int)
               outputColumnNames: _col0, _col1
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: count(_col1)
                 keys: _col0 (type: struct<f4:int,f5:double>)
                 mode: hash
                 outputColumnNames: _col0, _col1
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: struct<f4:int,f5:double>)
                   sort order: +
                   Map-reduce partition columns: _col0 (type: struct<f4:int,f5:double>)
-                  Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col1 (type: bigint)
       Reduce Operator Tree:
         Group By Operator
@@ -870,7 +890,7 @@ STAGE PLANS:
           keys: KEY._col0 (type: struct<f4:int,f5:double>)
           mode: mergepartial
           outputColumnNames: _col0, _col1
-          Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+          Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
           File Output Operator
             compressed: false
             table:
@@ -885,16 +905,16 @@ STAGE PLANS:
             Reduce Output Operator
               key expressions: _col0 (type: struct<f4:int,f5:double>)
               sort order: +
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               value expressions: _col1 (type: bigint)
       Reduce Operator Tree:
         Select Operator
           expressions: KEY.reducesinkkey0 (type: struct<f4:int,f5:double>), VALUE._col0 (type: bigint)
           outputColumnNames: _col0, _col1
-          Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+          Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
           File Output Operator
             compressed: false
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             table:
                 input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                 output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -939,32 +959,32 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             alias: t1
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             Select Operator
               expressions: s1 (type: struct<f1:boolean,f2:string,f3:struct<f4:int,f5:double>,f6:int>)
               outputColumnNames: _col0
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               Reduce Output Operator
                 key expressions: _col0.f3.f4 (type: int)
                 sort order: +
                 Map-reduce partition columns: _col0.f3.f4 (type: int)
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 value expressions: _col0 (type: struct<f1:boolean,f2:string,f3:struct<f4:int,f5:double>,f6:int>)
           TableScan
             alias: t2
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             Filter Operator
               predicate: (s2.f8.f9 = false) (type: boolean)
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               Select Operator
                 expressions: s1 (type: struct<f1:boolean,f2:string,f3:struct<f4:int,f5:double>,f6:int>), s2 (type: struct<f7:string,f8:struct<f9:boolean,f10:array<int>,f11:map<string,boolean>>>)
                 outputColumnNames: _col0, _col1
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0.f6 (type: int)
                   sort order: +
                   Map-reduce partition columns: _col0.f6 (type: int)
-                  Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col1 (type: struct<f7:string,f8:struct<f9:boolean,f10:array<int>,f11:map<string,boolean>>>)
       Reduce Operator Tree:
         Join Operator
@@ -974,14 +994,14 @@ STAGE PLANS:
             0 _col0.f3.f4 (type: int)
             1 _col0.f6 (type: int)
           outputColumnNames: _col0, _col2
-          Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+          Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
           Select Operator
             expressions: _col0.f3.f5 (type: double), _col2.f8 (type: struct<f9:boolean,f10:array<int>,f11:map<string,boolean>>)
             outputColumnNames: _col0, _col1
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             File Output Operator
               compressed: false
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               table:
                   input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                   output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -1030,32 +1050,32 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             alias: t1
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             Select Operator
               expressions: s1 (type: struct<f1:boolean,f2:string,f3:struct<f4:int,f5:double>,f6:int>)
               outputColumnNames: _col0
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               Reduce Output Operator
                 key expressions: _col0.f3.f4 (type: int)
                 sort order: +
                 Map-reduce partition columns: _col0.f3.f4 (type: int)
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 value expressions: _col0 (type: struct<f1:boolean,f2:string,f3:struct<f4:int,f5:double>,f6:int>)
           TableScan
             alias: t2
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             Filter Operator
               predicate: (s2.f8.f9 = true) (type: boolean)
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               Select Operator
                 expressions: s1 (type: struct<f1:boolean,f2:string,f3:struct<f4:int,f5:double>,f6:int>), s2 (type: struct<f7:string,f8:struct<f9:boolean,f10:array<int>,f11:map<string,boolean>>>)
                 outputColumnNames: _col0, _col1
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0.f6 (type: int)
                   sort order: +
                   Map-reduce partition columns: _col0.f6 (type: int)
-                  Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col1 (type: struct<f7:string,f8:struct<f9:boolean,f10:array<int>,f11:map<string,boolean>>>)
       Reduce Operator Tree:
         Join Operator
@@ -1065,14 +1085,14 @@ STAGE PLANS:
             0 _col0.f3.f4 (type: int)
             1 _col0.f6 (type: int)
           outputColumnNames: _col0, _col2
-          Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+          Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
           Select Operator
             expressions: _col0.f3.f5 (type: double), _col2.f8 (type: struct<f9:boolean,f10:array<int>,f11:map<string,boolean>>)
             outputColumnNames: _col0, _col1
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             File Output Operator
               compressed: false
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               table:
                   input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                   output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -1165,22 +1185,22 @@ STAGE PLANS:
           TableScan
             alias: nested_tbl_1
             Pruned Column Paths: s3.f12, s1.f6
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             Select Operator
               expressions: s3.f12[0].f14 (type: int), s1.f6 (type: int)
               outputColumnNames: _col0, _col1
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: count(_col1)
                 keys: _col0 (type: int)
                 mode: hash
                 outputColumnNames: _col0, _col1
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
-                  Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col1 (type: bigint)
       Reduce Operator Tree:
         Group By Operator
@@ -1188,14 +1208,14 @@ STAGE PLANS:
           keys: KEY._col0 (type: int)
           mode: mergepartial
           outputColumnNames: _col0, _col1
-          Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+          Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
           Select Operator
             expressions: _col1 (type: bigint), _col0 (type: int)
             outputColumnNames: _col0, _col1
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             File Output Operator
               compressed: false
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               table:
                   input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                   output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -1241,22 +1261,22 @@ STAGE PLANS:
           TableScan
             alias: nested_tbl_1
             Pruned Column Paths: s1.f6
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             Select Operator
               expressions: s4['key1'].f15 (type: int), s1.f6 (type: int)
               outputColumnNames: _col0, _col1
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: count(_col1)
                 keys: _col0 (type: int)
                 mode: hash
                 outputColumnNames: _col0, _col1
-                Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
-                  Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col1 (type: bigint)
       Reduce Operator Tree:
         Group By Operator
@@ -1264,14 +1284,14 @@ STAGE PLANS:
           keys: KEY._col0 (type: int)
           mode: mergepartial
           outputColumnNames: _col0, _col1
-          Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+          Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
           Select Operator
             expressions: _col1 (type: bigint), _col0 (type: int)
             outputColumnNames: _col0, _col1
-            Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
             File Output Operator
               compressed: false
-              Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               table:
                   input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                   output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -1296,3 +1316,307 @@ POSTHOOK: type: QUERY
 POSTHOOK: Input: default@nested_tbl_1
 #### A masked pattern was here ####
 1	1
+PREHOOK: query: EXPLAIN
+SELECT count(s1.f6), s5.f16[0].f18.f19
+FROM nested_tbl_1
+GROUP BY s5.f16[0].f18.f19
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN
+SELECT count(s1.f6), s5.f16[0].f18.f19
+FROM nested_tbl_1
+GROUP BY s5.f16[0].f18.f19
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: nested_tbl_1
+            Pruned Column Paths: s5.f16, s1.f6
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: s5.f16[0].f18.f19 (type: int), s1.f6 (type: int)
+              outputColumnNames: _col0, _col1
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+              Group By Operator
+                aggregations: count(_col1)
+                keys: _col0 (type: int)
+                mode: hash
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col0 (type: int)
+                  sort order: +
+                  Map-reduce partition columns: _col0 (type: int)
+                  Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col1 (type: bigint)
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations: count(VALUE._col0)
+          keys: KEY._col0 (type: int)
+          mode: mergepartial
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+          Select Operator
+            expressions: _col1 (type: bigint), _col0 (type: int)
+            outputColumnNames: _col0, _col1
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+            File Output Operator
+              compressed: false
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+              table:
+                  input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                  output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: SELECT count(s1.f6), s5.f16[0].f18.f19
+FROM nested_tbl_1
+GROUP BY s5.f16[0].f18.f19
+PREHOOK: type: QUERY
+PREHOOK: Input: default@nested_tbl_1
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT count(s1.f6), s5.f16[0].f18.f19
+FROM nested_tbl_1
+GROUP BY s5.f16[0].f18.f19
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@nested_tbl_1
+#### A masked pattern was here ####
+1	14
+PREHOOK: query: EXPLAIN
+SELECT count(s1.f6), s5.f16.f18.f19
+FROM nested_tbl_1
+GROUP BY s5.f16.f18.f19
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN
+SELECT count(s1.f6), s5.f16.f18.f19
+FROM nested_tbl_1
+GROUP BY s5.f16.f18.f19
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: nested_tbl_1
+            Pruned Column Paths: s1.f6, s5.f16
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: s5 (type: struct<f16:array<struct<f17:string,f18:struct<f19:int>>>>), s1 (type: struct<f1:boolean,f2:string,f3:struct<f4:int,f5:double>,f6:int>)
+              outputColumnNames: s5, s1
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+              Group By Operator
+                aggregations: count(s1.f6)
+                keys: s5.f16.f18.f19 (type: array<int>)
+                mode: hash
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col0 (type: array<int>)
+                  sort order: +
+                  Map-reduce partition columns: _col0 (type: array<int>)
+                  Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col1 (type: bigint)
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations: count(VALUE._col0)
+          keys: KEY._col0 (type: array<int>)
+          mode: mergepartial
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+          Select Operator
+            expressions: _col1 (type: bigint), _col0 (type: array<int>)
+            outputColumnNames: _col0, _col1
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+            File Output Operator
+              compressed: false
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+              table:
+                  input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                  output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: SELECT count(s1.f6), s5.f16.f18.f19
+FROM nested_tbl_1
+GROUP BY s5.f16.f18.f19
+PREHOOK: type: QUERY
+PREHOOK: Input: default@nested_tbl_1
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT count(s1.f6), s5.f16.f18.f19
+FROM nested_tbl_1
+GROUP BY s5.f16.f18.f19
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@nested_tbl_1
+#### A masked pattern was here ####
+1	[14,28]
+PREHOOK: query: EXPLAIN
+SELECT count(s1.f6), s6['key1'].f20[0].f21.f22
+FROM nested_tbl_1
+GROUP BY s6['key1'].f20[0].f21.f22
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN
+SELECT count(s1.f6), s6['key1'].f20[0].f21.f22
+FROM nested_tbl_1
+GROUP BY s6['key1'].f20[0].f21.f22
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: nested_tbl_1
+            Pruned Column Paths: s1.f6
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: s6['key1'].f20[0].f21.f22 (type: int), s1.f6 (type: int)
+              outputColumnNames: _col0, _col1
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+              Group By Operator
+                aggregations: count(_col1)
+                keys: _col0 (type: int)
+                mode: hash
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col0 (type: int)
+                  sort order: +
+                  Map-reduce partition columns: _col0 (type: int)
+                  Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col1 (type: bigint)
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations: count(VALUE._col0)
+          keys: KEY._col0 (type: int)
+          mode: mergepartial
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+          Select Operator
+            expressions: _col1 (type: bigint), _col0 (type: int)
+            outputColumnNames: _col0, _col1
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+            File Output Operator
+              compressed: false
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+              table:
+                  input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                  output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: SELECT count(s1.f6), s6['key1'].f20[0].f21.f22
+FROM nested_tbl_1
+GROUP BY s6['key1'].f20[0].f21.f22
+PREHOOK: type: QUERY
+PREHOOK: Input: default@nested_tbl_1
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT count(s1.f6), s6['key1'].f20[0].f21.f22
+FROM nested_tbl_1
+GROUP BY s6['key1'].f20[0].f21.f22
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@nested_tbl_1
+#### A masked pattern was here ####
+1	1
+PREHOOK: query: EXPLAIN
+SELECT count(s1.f6), s6['key1'].f20.f21.f22
+FROM nested_tbl_1
+GROUP BY s6['key1'].f20.f21.f22
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN
+SELECT count(s1.f6), s6['key1'].f20.f21.f22
+FROM nested_tbl_1
+GROUP BY s6['key1'].f20.f21.f22
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: nested_tbl_1
+            Pruned Column Paths: s1.f6
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: s6 (type: map<string,struct<f20:array<struct<f21:struct<f22:int>>>>>), s1 (type: struct<f1:boolean,f2:string,f3:struct<f4:int,f5:double>,f6:int>)
+              outputColumnNames: s6, s1
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+              Group By Operator
+                aggregations: count(s1.f6)
+                keys: s6['key1'].f20.f21.f22 (type: array<int>)
+                mode: hash
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col0 (type: array<int>)
+                  sort order: +
+                  Map-reduce partition columns: _col0 (type: array<int>)
+                  Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col1 (type: bigint)
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations: count(VALUE._col0)
+          keys: KEY._col0 (type: array<int>)
+          mode: mergepartial
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+          Select Operator
+            expressions: _col1 (type: bigint), _col0 (type: array<int>)
+            outputColumnNames: _col0, _col1
+            Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+            File Output Operator
+              compressed: false
+              Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
+              table:
+                  input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                  output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: SELECT count(s1.f6), s6['key1'].f20.f21.f22
+FROM nested_tbl_1
+GROUP BY s6['key1'].f20.f21.f22
+PREHOOK: type: QUERY
+PREHOOK: Input: default@nested_tbl_1
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT count(s1.f6), s6['key1'].f20.f21.f22
+FROM nested_tbl_1
+GROUP BY s6['key1'].f20.f21.f22
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@nested_tbl_1
+#### A masked pattern was here ####
+1	[1]