hive git commit: HIVE-10950: Unit test against HBase Metastore (Daniel Dai, Vaibhav Gumashta)

2015-07-24 Thread vgumashta
Repository: hive
Updated Branches:
  refs/heads/hbase-metastore cb3702164 - 5acf458c4


HIVE-10950: Unit test against HBase Metastore (Daniel Dai, Vaibhav Gumashta)


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

Branch: refs/heads/hbase-metastore
Commit: 5acf458c449bd2464076c243150760797ae57092
Parents: cb37021
Author: Vaibhav Gumashta vgumas...@apache.org
Authored: Fri Jul 24 09:13:02 2015 -0700
Committer: Vaibhav Gumashta vgumas...@apache.org
Committed: Fri Jul 24 09:13:02 2015 -0700

--
 data/conf/hbase/hive-site.xml   | 263 +++
 itests/qtest/pom.xml|  19 ++
 .../test/resources/testconfiguration.properties |  46 
 itests/util/pom.xml |  12 +
 .../org/apache/hadoop/hive/ql/QTestUtil.java|  72 -
 .../hive/metastore/hbase/HBaseReadWrite.java|   8 +-
 6 files changed, 411 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hive/blob/5acf458c/data/conf/hbase/hive-site.xml
--
diff --git a/data/conf/hbase/hive-site.xml b/data/conf/hbase/hive-site.xml
new file mode 100644
index 000..2cde40f
--- /dev/null
+++ b/data/conf/hbase/hive-site.xml
@@ -0,0 +1,263 @@
+?xml version=1.0?
+?xml-stylesheet type=text/xsl href=configuration.xsl?
+!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the License); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an AS IS BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+--
+
+configuration
+
+property
+  namehive.in.test/name
+  valuetrue/value
+  descriptionInternal marker for test. Used for masking env-dependent 
values/description
+/property
+
+!-- Hive Configuration can either be stored in this file or in the hadoop 
configuration files  --
+!-- that are implied by Hadoop setup variables.   
 --
+!-- Aside from Hadoop setup variables - this file is provided as a 
convenience so that Hive--
+!-- users do not have to edit hadoop configuration files (that may be managed 
as a centralized --
+!-- resource).
 --
+
+!-- Hive Execution Parameters --
+property
+  namehadoop.tmp.dir/name
+  value${test.tmp.dir}/hadoop-tmp/value
+  descriptionA base for other temporary directories./description
+/property
+
+!--
+property
+  namehive.exec.reducers.max/name
+  value1/value
+  descriptionmaximum number of reducers/description
+/property
+--
+
+property
+  namehive.exec.scratchdir/name
+  value${test.tmp.dir}/scratchdir/value
+  descriptionScratch space for Hive jobs/description
+/property
+
+property
+  namehive.exec.local.scratchdir/name
+  value${test.tmp.dir}/localscratchdir//value
+  descriptionLocal scratch space for Hive jobs/description
+/property
+
+property
+  namejavax.jdo.option.ConnectionURL/name
+  
valuejdbc:derby:;databaseName=${test.tmp.dir}/junit_metastore_db;create=true/value
+/property
+
+property
+  namehive.stats.dbconnectionstring/name
+  
valuejdbc:derby:;databaseName=${test.tmp.dir}/TempStatsStore;create=true/value
+/property
+
+
+property
+  namejavax.jdo.option.ConnectionDriverName/name
+  valueorg.apache.derby.jdbc.EmbeddedDriver/value
+/property
+
+property
+  namejavax.jdo.option.ConnectionUserName/name
+  valueAPP/value
+/property
+
+property
+  namejavax.jdo.option.ConnectionPassword/name
+  valuemine/value
+/property
+
+property
+  !--  this should eventually be deprecated since the metastore should supply 
this --
+  namehive.metastore.warehouse.dir/name
+  value${test.warehouse.dir}/value
+  description/description
+/property
+
+property
+  namehive.metastore.metadb.dir/name
+  valuefile://${test.tmp.dir}/metadb//value
+  description
+  Required by metastore server or if the uris argument below is not supplied
+  /description
+/property
+
+property
+  nametest.log.dir/name
+  value${test.tmp.dir}/log//value
+  description/description
+/property
+
+property
+  

[2/2] hive git commit: HIVE-11333: ColumnPruner prunes columns of UnionOperator that should be kept (Pengcheng Xiong, via Jesus Camacho Rodriguez)

2015-07-24 Thread jcamacho
HIVE-11333: ColumnPruner prunes columns of UnionOperator that should be kept 
(Pengcheng Xiong, via Jesus Camacho Rodriguez)


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

Branch: refs/heads/master
Commit: 2773b9d9fc9a1b16fcf22b4a976348fe591c6168
Parents: 393d690
Author: Pengcheng Xiong pxi...@hortonworks.com
Authored: Fri Jul 24 18:03:23 2015 +0200
Committer: Jesus Camacho Rodriguez jcama...@apache.org
Committed: Fri Jul 24 18:03:41 2015 +0200

--
 .../hadoop/hive/ql/optimizer/ColumnPruner.java  |   4 +
 .../hive/ql/optimizer/ColumnPrunerProcCtx.java  |  31 +-
 .../ql/optimizer/ColumnPrunerProcFactory.java   |  40 +++
 .../results/clientpositive/spark/union16.q.out  | 304 +---
 .../results/clientpositive/spark/union2.q.out   |  28 +-
 .../results/clientpositive/spark/union9.q.out   |  40 ++-
 .../clientpositive/spark/union_view.q.out   |  24 ++
 .../results/clientpositive/tez/union2.q.out |  28 +-
 .../results/clientpositive/tez/union9.q.out |  40 ++-
 .../tez/vector_null_projection.q.out|   4 +
 .../test/results/clientpositive/union16.q.out   | 354 +++
 ql/src/test/results/clientpositive/union2.q.out |  32 +-
 ql/src/test/results/clientpositive/union9.q.out |  46 +--
 .../results/clientpositive/union_view.q.out |  24 ++
 .../clientpositive/vector_null_projection.q.out |   4 +
 15 files changed, 631 insertions(+), 372 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hive/blob/2773b9d9/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPruner.java
--
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPruner.java 
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPruner.java
index b8f5c71..9a45458 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPruner.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPruner.java
@@ -35,6 +35,7 @@ import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
 import org.apache.hadoop.hive.ql.exec.ScriptOperator;
 import org.apache.hadoop.hive.ql.exec.SelectOperator;
 import org.apache.hadoop.hive.ql.exec.TableScanOperator;
+import org.apache.hadoop.hive.ql.exec.UnionOperator;
 import org.apache.hadoop.hive.ql.lib.DefaultGraphWalker;
 import org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher;
 import org.apache.hadoop.hive.ql.lib.Dispatcher;
@@ -119,6 +120,9 @@ public class ColumnPruner implements Transform {
 opRules.put(new RuleRegExp(R12,
 LimitOperator.getOperatorName() + %),
 ColumnPrunerProcFactory.getLimitProc());
+opRules.put(new RuleRegExp(R13,
+UnionOperator.getOperatorName() + %),
+ColumnPrunerProcFactory.getUnionProc());
 // The dispatcher fires the processor corresponding to the closest matching
 // rule and passes the context along
 Dispatcher disp = new DefaultRuleDispatcher(ColumnPrunerProcFactory

http://git-wip-us.apache.org/repos/asf/hive/blob/2773b9d9/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 692319e..c076d4e 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
@@ -28,6 +28,7 @@ import org.apache.hadoop.hive.ql.exec.CommonJoinOperator;
 import org.apache.hadoop.hive.ql.exec.Operator;
 import org.apache.hadoop.hive.ql.exec.RowSchema;
 import org.apache.hadoop.hive.ql.exec.SelectOperator;
+import org.apache.hadoop.hive.ql.exec.UnionOperator;
 import org.apache.hadoop.hive.ql.exec.Utilities;
 import org.apache.hadoop.hive.ql.lib.NodeProcessorCtx;
 import org.apache.hadoop.hive.ql.parse.ParseContext;
@@ -47,10 +48,13 @@ public class ColumnPrunerProcCtx implements 
NodeProcessorCtx {
 
   private final MapCommonJoinOperator, MapByte, ListString 
joinPrunedColLists;
 
+  private final MapUnionOperator, ListInteger unionPrunedColLists;
+
   public ColumnPrunerProcCtx(ParseContext pctx) {
 this.pctx = pctx;
 prunedColLists = new HashMapOperator? extends OperatorDesc, 
ListString();
 joinPrunedColLists = new HashMapCommonJoinOperator, MapByte, 
ListString();
+unionPrunedColLists = new HashMap();
   }
 
   public ParseContext getParseContext() {
@@ -61,6 +65,10 @@ public class ColumnPrunerProcCtx implements NodeProcessorCtx 
{
 return joinPrunedColLists;
   }
 
+  public MapUnionOperator, 

hive git commit: HIVE-11290 Cursor attributes %ISOPEN, %FOUND, %NOTFOUND and SYS_REFCURSOR variable (Dmitry Tolpeko via gates)

2015-07-24 Thread gates
Repository: hive
Updated Branches:
  refs/heads/master 2773b9d9f - 92e98858e


HIVE-11290 Cursor attributes %ISOPEN, %FOUND, %NOTFOUND and SYS_REFCURSOR 
variable (Dmitry Tolpeko via gates)


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

Branch: refs/heads/master
Commit: 92e98858e742bbb669ccbf790a71a618c581df21
Parents: 2773b9d
Author: Alan Gates ga...@hortonworks.com
Authored: Fri Jul 24 10:43:45 2015 -0700
Committer: Alan Gates ga...@hortonworks.com
Committed: Fri Jul 24 10:43:45 2015 -0700

--
 .../antlr4/org/apache/hive/hplsql/Hplsql.g4 | 38 ++--
 .../main/java/org/apache/hive/hplsql/Conn.java  |  6 ++
 .../main/java/org/apache/hive/hplsql/Exec.java  | 21 ++-
 .../java/org/apache/hive/hplsql/Expression.java | 28 +
 .../main/java/org/apache/hive/hplsql/Query.java | 55 +
 .../main/java/org/apache/hive/hplsql/Stmt.java  | 60 --
 .../main/java/org/apache/hive/hplsql/Var.java   | 20 +-
 .../src/test/queries/db/cursor_attributes.sql   | 60 ++
 hplsql/src/test/queries/db/select_into.sql  | 17 +
 .../src/test/queries/db/set_current_schema.sql  |  6 ++
 hplsql/src/test/queries/db/sys_refcursor.sql| 65 
 hplsql/src/test/queries/db/use.sql  |  2 +
 .../test/results/db/cursor_attributes.out.txt   | 33 ++
 hplsql/src/test/results/db/select_into.out.txt  | 19 ++
 .../test/results/db/set_current_schema.out.txt  | 12 
 .../src/test/results/db/sys_refcursor.out.txt   | 36 +++
 hplsql/src/test/results/db/use.out.txt  |  4 ++
 17 files changed, 453 insertions(+), 29 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hive/blob/92e98858/hplsql/src/main/antlr4/org/apache/hive/hplsql/Hplsql.g4
--
diff --git a/hplsql/src/main/antlr4/org/apache/hive/hplsql/Hplsql.g4 
b/hplsql/src/main/antlr4/org/apache/hive/hplsql/Hplsql.g4
index 70312b2..4104d13 100644
--- a/hplsql/src/main/antlr4/org/apache/hive/hplsql/Hplsql.g4
+++ b/hplsql/src/main/antlr4/org/apache/hive/hplsql/Hplsql.g4
@@ -98,7 +98,8 @@ expr_stmt : // Standalone expression
  ;
 
 assignment_stmt :   // Assignment statement
-   T_SET? assignment_stmt_item (T_COMMA assignment_stmt_item)*  
+   T_SET set_session_option
+ | T_SET? assignment_stmt_item (T_COMMA assignment_stmt_item)*  
  ;
 
 assignment_stmt_item : 
@@ -145,9 +146,9 @@ declare_block : // Declaration block

  
 declare_stmt_item :
-   declare_var_item 
+   declare_cursor_item
+ | declare_var_item 
  | declare_condition_item  
- | declare_cursor_item
  | declare_handler_item
  | declare_temporary_table_item
  ;
@@ -254,6 +255,7 @@ dtype :  // Data types
  | T_RESULT_SET_LOCATOR T_VARYING
  | T_SMALLINT
  | T_STRING
+ | T_SYS_REFCURSOR
  | T_TIMESTAMP
  | T_VARCHAR
  | T_VARCHAR2
@@ -391,7 +393,7 @@ map_object_stmt :
  ;
  
 open_stmt : // OPEN cursor statement
-   T_OPEN L_ID (T_FOR (expr | select_stmt))?
+   T_OPEN L_ID (T_FOR (select_stmt | expr))?
  ;
 
 fetch_stmt :// FETCH cursor statement
@@ -460,6 +462,14 @@ rollback_stmt : // ROLLBACK statement
T_ROLLBACK T_WORK?
  ;
  
+set_session_option :  
+   set_current_schema_option
+ ;
+
+set_current_schema_option :  
+   ((T_CURRENT? T_SCHEMA) | T_CURRENT_SCHEMA) T_EQUAL? expr
+ ;
+ 
 signal_stmt :  // SIGNAL statement
T_SIGNAL ident
  ;
@@ -675,6 +685,7 @@ bool_expr :   // Boolean 
condition
 bool_expr_atom :
   bool_expr_unary
 | bool_expr_binary
+| expr
 ;
 
 bool_expr_unary :
@@ -722,6 +733,7 @@ expr :
  | T_OPEN_P expr T_CLOSE_P 
  | expr_concat
  | expr_case
+ | expr_cursor_attribute
  | expr_agg_window_func
  | expr_spec_func
  | expr_func  
@@ -777,6 +789,10 @@ expr_case_searched :
T_CASE (T_WHEN bool_expr T_THEN expr)+ (T_ELSE expr)? T_END
  ;
  
+expr_cursor_attribute :
+  ident '%' (T_ISOPEN | T_FOUND | T_NOTFOUND)
+;
+ 
 expr_agg_window_func :
T_AVG T_OPEN_P expr_func_all_distinct? expr T_CLOSE_P 
expr_func_over_clause?
  | T_COUNT T_OPEN_P ((expr_func_all_distinct? expr) | '*') T_CLOSE_P 
expr_func_over_clause?
@@ -937,6 +953,7 @@ non_reserved_words :  // Tokens that 
are not reserved words
  | T_CS
  | T_CURRENT 
  | T_CURRENT_DATE
+ | T_CURRENT_SCHEMA
  | 

hive git commit: HIVE-11172 : Vectorization wrong results for aggregate query with where clause without group by (Hari Subramaniyan, reviewed by Matt McCline)

2015-07-24 Thread harisankar
Repository: hive
Updated Branches:
  refs/heads/branch-1.2 b75633f9b - d43f36d81


HIVE-11172 : Vectorization wrong results for aggregate query with where clause 
without group by (Hari Subramaniyan, reviewed by Matt McCline)


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

Branch: refs/heads/branch-1.2
Commit: d43f36d81def6b06febdb39ef77303f0e4d390de
Parents: b75633f
Author: Hari Subramaniyan harisan...@apache.org
Authored: Tue Jul 21 03:03:45 2015 -0700
Committer: Hari Subramaniyan harisan...@apache.org
Committed: Fri Jul 24 10:26:40 2015 -0700

--
 .../UDAFTemplates/VectorUDAFMinMaxString.txt|  3 +-
 .../vector_aggregate_without_gby.q  | 14 +++
 .../vector_aggregate_without_gby.q.out  | 96 
 3 files changed, 112 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/hive/blob/d43f36d8/ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxString.txt
--
diff --git a/ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxString.txt 
b/ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxString.txt
index 7e0dda6..cdce457 100644
--- a/ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxString.txt
+++ b/ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxString.txt
@@ -319,7 +319,8 @@ public class ClassName extends VectorAggregateExpression {
 int batchSize,
 int[] selected) {
 
-  for (int i=0; i batchSize; ++i) {
+  for (int j=0; j batchSize; ++j) {
+int i = selected[j];
 myagg.checkValue(inputColumn.vector[i],
   inputColumn.start[i],
   inputColumn.length[i]);

http://git-wip-us.apache.org/repos/asf/hive/blob/d43f36d8/ql/src/test/queries/clientpositive/vector_aggregate_without_gby.q
--
diff --git a/ql/src/test/queries/clientpositive/vector_aggregate_without_gby.q 
b/ql/src/test/queries/clientpositive/vector_aggregate_without_gby.q
new file mode 100644
index 000..9a026ed
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/vector_aggregate_without_gby.q
@@ -0,0 +1,14 @@
+create table testvec(id int, dt int, greg_dt string) stored as orc;
+insert into table testvec
+values 
+(1,20150330, '2015-03-30'),
+(2,20150301, '2015-03-01'),
+(3,20150502, '2015-05-02'),
+(4,20150401, '2015-04-01'),
+(5,20150313, '2015-03-13'),
+(6,20150314, '2015-03-14'),
+(7,20150404, '2015-04-04');
+set hive.vectorized.execution.enabled=true;
+set hive.map.aggr=true;
+explain select max(dt), max(greg_dt) from testvec where id=5;
+select max(dt), max(greg_dt) from testvec where id=5;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d43f36d8/ql/src/test/results/clientpositive/vector_aggregate_without_gby.q.out
--
diff --git 
a/ql/src/test/results/clientpositive/vector_aggregate_without_gby.q.out 
b/ql/src/test/results/clientpositive/vector_aggregate_without_gby.q.out
new file mode 100644
index 000..1175cb8
--- /dev/null
+++ b/ql/src/test/results/clientpositive/vector_aggregate_without_gby.q.out
@@ -0,0 +1,96 @@
+PREHOOK: query: create table testvec(id int, dt int, greg_dt string) stored as 
orc
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@testvec
+POSTHOOK: query: create table testvec(id int, dt int, greg_dt string) stored 
as orc
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@testvec
+PREHOOK: query: insert into table testvec
+values 
+(1,20150330, '2015-03-30'),
+(2,20150301, '2015-03-01'),
+(3,20150502, '2015-05-02'),
+(4,20150401, '2015-04-01'),
+(5,20150313, '2015-03-13'),
+(6,20150314, '2015-03-14'),
+(7,20150404, '2015-04-04')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@testvec
+POSTHOOK: query: insert into table testvec
+values 
+(1,20150330, '2015-03-30'),
+(2,20150301, '2015-03-01'),
+(3,20150502, '2015-05-02'),
+(4,20150401, '2015-04-01'),
+(5,20150313, '2015-03-13'),
+(6,20150314, '2015-03-14'),
+(7,20150404, '2015-04-04')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@testvec
+POSTHOOK: Lineage: testvec.dt EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, 
type:string, comment:), ]
+POSTHOOK: Lineage: testvec.greg_dt SIMPLE 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, 
type:string, comment:), ]
+POSTHOOK: Lineage: testvec.id EXPRESSION 

[1/2] hive git commit: HIVE-11333: ColumnPruner prunes columns of UnionOperator that should be kept (Pengcheng Xiong, via Jesus Camacho Rodriguez)

2015-07-24 Thread jcamacho
Repository: hive
Updated Branches:
  refs/heads/master 393d690bb - 2773b9d9f


http://git-wip-us.apache.org/repos/asf/hive/blob/2773b9d9/ql/src/test/results/clientpositive/union16.q.out
--
diff --git a/ql/src/test/results/clientpositive/union16.q.out 
b/ql/src/test/results/clientpositive/union16.q.out
index f503440..9f7dd68 100644
--- a/ql/src/test/results/clientpositive/union16.q.out
+++ b/ql/src/test/results/clientpositive/union16.q.out
@@ -74,463 +74,513 @@ STAGE PLANS:
   Map Operator Tree:
   TableScan
 alias: src
-Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: COMPLETE
+Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
 Select Operator
-  Statistics: Num rows: 500 Data size: 0 Basic stats: PARTIAL 
Column stats: COMPLETE
+  expressions: value (type: string)
+  outputColumnNames: _col0
+  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
   Union
-Statistics: Num rows: 12500 Data size: 0 Basic stats: PARTIAL 
Column stats: COMPLETE
+Statistics: Num rows: 12500 Data size: 132800 Basic stats: 
COMPLETE Column stats: NONE
 Select Operator
-  Statistics: Num rows: 12500 Data size: 0 Basic stats: 
PARTIAL Column stats: COMPLETE
+  Statistics: Num rows: 12500 Data size: 132800 Basic stats: 
COMPLETE Column stats: NONE
   Group By Operator
 aggregations: count(1)
 mode: hash
 outputColumnNames: _col0
-Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
+Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: NONE
 Reduce Output Operator
   sort order: 
-  Statistics: Num rows: 1 Data size: 8 Basic stats: 
COMPLETE Column stats: COMPLETE
+  Statistics: Num rows: 1 Data size: 8 Basic stats: 
COMPLETE Column stats: NONE
   value expressions: _col0 (type: bigint)
   TableScan
 alias: src
-Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: COMPLETE
+Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
 Select Operator
-  Statistics: Num rows: 500 Data size: 0 Basic stats: PARTIAL 
Column stats: COMPLETE
+  expressions: value (type: string)
+  outputColumnNames: _col0
+  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
   Union
-Statistics: Num rows: 12500 Data size: 0 Basic stats: PARTIAL 
Column stats: COMPLETE
+Statistics: Num rows: 12500 Data size: 132800 Basic stats: 
COMPLETE Column stats: NONE
 Select Operator
-  Statistics: Num rows: 12500 Data size: 0 Basic stats: 
PARTIAL Column stats: COMPLETE
+  Statistics: Num rows: 12500 Data size: 132800 Basic stats: 
COMPLETE Column stats: NONE
   Group By Operator
 aggregations: count(1)
 mode: hash
 outputColumnNames: _col0
-Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
+Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: NONE
 Reduce Output Operator
   sort order: 
-  Statistics: Num rows: 1 Data size: 8 Basic stats: 
COMPLETE Column stats: COMPLETE
+  Statistics: Num rows: 1 Data size: 8 Basic stats: 
COMPLETE Column stats: NONE
   value expressions: _col0 (type: bigint)
   TableScan
 alias: src
-Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: COMPLETE
+Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
 Select Operator
-  Statistics: Num rows: 500 Data size: 0 Basic stats: PARTIAL 
Column stats: COMPLETE
+  expressions: value (type: string)
+  outputColumnNames: _col0
+  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
   Union
-Statistics: Num rows: 12500 Data size: 0 Basic stats: PARTIAL 
Column stats: COMPLETE
+Statistics: Num rows: 12500 Data size: 132800 Basic stats: 
COMPLETE Column stats: NONE
 Select Operator
-  Statistics: Num rows: 12500 Data size: 0 Basic stats: 
PARTIAL Column stats: COMPLETE
+