You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by xu...@apache.org on 2014/10/24 21:19:08 UTC

svn commit: r1634122 [6/6] - in /hive/branches/spark: itests/src/test/resources/ ql/src/test/results/clientpositive/spark/

Added: hive/branches/spark/ql/src/test/results/clientpositive/spark/groupby_complex_types.q.out
URL: http://svn.apache.org/viewvc/hive/branches/spark/ql/src/test/results/clientpositive/spark/groupby_complex_types.q.out?rev=1634122&view=auto
==============================================================================
--- hive/branches/spark/ql/src/test/results/clientpositive/spark/groupby_complex_types.q.out (added)
+++ hive/branches/spark/ql/src/test/results/clientpositive/spark/groupby_complex_types.q.out Fri Oct 24 19:19:08 2014
@@ -0,0 +1,1193 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+
+CREATE TABLE DEST1(key ARRAY<STRING>, value BIGINT) STORED AS TEXTFILE
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@DEST1
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+
+CREATE TABLE DEST1(key ARRAY<STRING>, value BIGINT) STORED AS TEXTFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@DEST1
+PREHOOK: query: CREATE TABLE DEST2(key MAP<STRING, STRING>, value BIGINT) STORED AS TEXTFILE
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@DEST2
+POSTHOOK: query: CREATE TABLE DEST2(key MAP<STRING, STRING>, value BIGINT) STORED AS TEXTFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@DEST2
+PREHOOK: query: CREATE TABLE DEST3(key STRUCT<col1:STRING, col2:STRING>, value BIGINT) STORED AS TEXTFILE
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@DEST3
+POSTHOOK: query: CREATE TABLE DEST3(key STRUCT<col1:STRING, col2:STRING>, value BIGINT) STORED AS TEXTFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@DEST3
+PREHOOK: query: EXPLAIN
+FROM SRC
+INSERT OVERWRITE TABLE DEST1 SELECT ARRAY(SRC.key), COUNT(1) GROUP BY ARRAY(SRC.key)
+INSERT OVERWRITE TABLE DEST2 SELECT MAP(SRC.key, SRC.value), COUNT(1) GROUP BY MAP(SRC.key, SRC.value)
+INSERT OVERWRITE TABLE DEST3 SELECT STRUCT(SRC.key, SRC.value), COUNT(1) GROUP BY STRUCT(SRC.key, SRC.value)
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN
+FROM SRC
+INSERT OVERWRITE TABLE DEST1 SELECT ARRAY(SRC.key), COUNT(1) GROUP BY ARRAY(SRC.key)
+INSERT OVERWRITE TABLE DEST2 SELECT MAP(SRC.key, SRC.value), COUNT(1) GROUP BY MAP(SRC.key, SRC.value)
+INSERT OVERWRITE TABLE DEST3 SELECT STRUCT(SRC.key, SRC.value), COUNT(1) GROUP BY STRUCT(SRC.key, SRC.value)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-3 is a root stage
+  Stage-4 depends on stages: Stage-3
+  Stage-0 depends on stages: Stage-4
+  Stage-5 depends on stages: Stage-0
+  Stage-1 depends on stages: Stage-4
+  Stage-6 depends on stages: Stage-1
+  Stage-2 depends on stages: Stage-4
+  Stage-7 depends on stages: Stage-2
+
+STAGE PLANS:
+  Stage: Stage-3
+    Spark
+      Edges:
+        Reducer 2 <- Map 1 (GROUP, 1)
+        Reducer 3 <- Map 1 (GROUP, 1)
+        Reducer 4 <- Map 1 (GROUP, 1)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: src
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  Select Operator
+                    expressions: key (type: string)
+                    outputColumnNames: key
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                    Group By Operator
+                      aggregations: count(1)
+                      keys: array(key) (type: array<string>)
+                      mode: hash
+                      outputColumnNames: _col0, _col1
+                      Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: array<string>)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: array<string>)
+                        Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                        value expressions: _col1 (type: bigint)
+                  Select Operator
+                    expressions: key (type: string), value (type: string)
+                    outputColumnNames: key, value
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                    Group By Operator
+                      aggregations: count(1)
+                      keys: map(key:value) (type: map<string,string>)
+                      mode: hash
+                      outputColumnNames: _col0, _col1
+                      Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: map<string,string>)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: map<string,string>)
+                        Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                        value expressions: _col1 (type: bigint)
+                  Select Operator
+                    expressions: key (type: string), value (type: string)
+                    outputColumnNames: key, value
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                    Group By Operator
+                      aggregations: count(1)
+                      keys: struct(key,value) (type: struct<col1:string,col2:string>)
+                      mode: hash
+                      outputColumnNames: _col0, _col1
+                      Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: struct<col1:string,col2:string>)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: struct<col1:string,col2:string>)
+                        Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                        value expressions: _col1 (type: bigint)
+        Reducer 2 
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: count(VALUE._col0)
+                keys: KEY._col0 (type: array<string>)
+                mode: mergepartial
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                Select Operator
+                  expressions: _col0 (type: array<string>), _col1 (type: bigint)
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                  File Output Operator
+                    compressed: false
+                    Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                    table:
+                        input format: org.apache.hadoop.mapred.TextInputFormat
+                        output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+                        serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+                        name: default.dest1
+        Reducer 3 
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: count(VALUE._col0)
+                keys: KEY._col0 (type: map<string,string>)
+                mode: mergepartial
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                Select Operator
+                  expressions: _col0 (type: map<string,string>), _col1 (type: bigint)
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                  File Output Operator
+                    compressed: false
+                    Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                    table:
+                        input format: org.apache.hadoop.mapred.TextInputFormat
+                        output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+                        serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+                        name: default.dest2
+        Reducer 4 
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: count(VALUE._col0)
+                keys: KEY._col0 (type: struct<col1:string,col2:string>)
+                mode: mergepartial
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                Select Operator
+                  expressions: _col0 (type: struct<col1:string,col2:string>), _col1 (type: bigint)
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                  File Output Operator
+                    compressed: false
+                    Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                    table:
+                        input format: org.apache.hadoop.mapred.TextInputFormat
+                        output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+                        serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+                        name: default.dest3
+
+  Stage: Stage-4
+    Dependency Collection
+
+  Stage: Stage-0
+    Move Operator
+      tables:
+          replace: true
+          table:
+              input format: org.apache.hadoop.mapred.TextInputFormat
+              output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+              serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+              name: default.dest1
+
+  Stage: Stage-5
+    Stats-Aggr Operator
+
+  Stage: Stage-1
+    Move Operator
+      tables:
+          replace: true
+          table:
+              input format: org.apache.hadoop.mapred.TextInputFormat
+              output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+              serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+              name: default.dest2
+
+  Stage: Stage-6
+    Stats-Aggr Operator
+
+  Stage: Stage-2
+    Move Operator
+      tables:
+          replace: true
+          table:
+              input format: org.apache.hadoop.mapred.TextInputFormat
+              output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+              serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+              name: default.dest3
+
+  Stage: Stage-7
+    Stats-Aggr Operator
+
+PREHOOK: query: FROM SRC
+INSERT OVERWRITE TABLE DEST1 SELECT ARRAY(SRC.key), COUNT(1) GROUP BY ARRAY(SRC.key)
+INSERT OVERWRITE TABLE DEST2 SELECT MAP(SRC.key, SRC.value), COUNT(1) GROUP BY MAP(SRC.key, SRC.value)
+INSERT OVERWRITE TABLE DEST3 SELECT STRUCT(SRC.key, SRC.value), COUNT(1) GROUP BY STRUCT(SRC.key, SRC.value)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@dest1
+PREHOOK: Output: default@dest2
+PREHOOK: Output: default@dest3
+[Error 30017]: Skipping stats aggregation by error org.apache.hadoop.hive.ql.metadata.HiveException: [Error 30015]: Stats aggregator of type counter cannot be connected to
+[Error 30017]: Skipping stats aggregation by error org.apache.hadoop.hive.ql.metadata.HiveException: [Error 30015]: Stats aggregator of type counter cannot be connected to
+[Error 30017]: Skipping stats aggregation by error org.apache.hadoop.hive.ql.metadata.HiveException: [Error 30015]: Stats aggregator of type counter cannot be connected to
+POSTHOOK: query: FROM SRC
+INSERT OVERWRITE TABLE DEST1 SELECT ARRAY(SRC.key), COUNT(1) GROUP BY ARRAY(SRC.key)
+INSERT OVERWRITE TABLE DEST2 SELECT MAP(SRC.key, SRC.value), COUNT(1) GROUP BY MAP(SRC.key, SRC.value)
+INSERT OVERWRITE TABLE DEST3 SELECT STRUCT(SRC.key, SRC.value), COUNT(1) GROUP BY STRUCT(SRC.key, SRC.value)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@dest1
+POSTHOOK: Output: default@dest2
+POSTHOOK: Output: default@dest3
+POSTHOOK: Lineage: dest1.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: dest1.value EXPRESSION [(src)src.null, ]
+POSTHOOK: Lineage: dest2.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), (src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: dest2.value EXPRESSION [(src)src.null, ]
+POSTHOOK: Lineage: dest3.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), (src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: dest3.value EXPRESSION [(src)src.null, ]
+PREHOOK: query: SELECT DEST1.* FROM DEST1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@dest1
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT DEST1.* FROM DEST1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@dest1
+#### A masked pattern was here ####
+["0"]	3
+["10"]	1
+["100"]	2
+["103"]	2
+["104"]	2
+["105"]	1
+["11"]	1
+["111"]	1
+["113"]	2
+["114"]	1
+["116"]	1
+["118"]	2
+["119"]	3
+["12"]	2
+["120"]	2
+["125"]	2
+["126"]	1
+["128"]	3
+["129"]	2
+["131"]	1
+["133"]	1
+["134"]	2
+["136"]	1
+["137"]	2
+["138"]	4
+["143"]	1
+["145"]	1
+["146"]	2
+["149"]	2
+["15"]	2
+["150"]	1
+["152"]	2
+["153"]	1
+["155"]	1
+["156"]	1
+["157"]	1
+["158"]	1
+["160"]	1
+["162"]	1
+["163"]	1
+["164"]	2
+["165"]	2
+["166"]	1
+["167"]	3
+["168"]	1
+["169"]	4
+["17"]	1
+["170"]	1
+["172"]	2
+["174"]	2
+["175"]	2
+["176"]	2
+["177"]	1
+["178"]	1
+["179"]	2
+["18"]	2
+["180"]	1
+["181"]	1
+["183"]	1
+["186"]	1
+["187"]	3
+["189"]	1
+["19"]	1
+["190"]	1
+["191"]	2
+["192"]	1
+["193"]	3
+["194"]	1
+["195"]	2
+["196"]	1
+["197"]	2
+["199"]	3
+["2"]	1
+["20"]	1
+["200"]	2
+["201"]	1
+["202"]	1
+["203"]	2
+["205"]	2
+["207"]	2
+["208"]	3
+["209"]	2
+["213"]	2
+["214"]	1
+["216"]	2
+["217"]	2
+["218"]	1
+["219"]	2
+["221"]	2
+["222"]	1
+["223"]	2
+["224"]	2
+["226"]	1
+["228"]	1
+["229"]	2
+["230"]	5
+["233"]	2
+["235"]	1
+["237"]	2
+["238"]	2
+["239"]	2
+["24"]	2
+["241"]	1
+["242"]	2
+["244"]	1
+["247"]	1
+["248"]	1
+["249"]	1
+["252"]	1
+["255"]	2
+["256"]	2
+["257"]	1
+["258"]	1
+["26"]	2
+["260"]	1
+["262"]	1
+["263"]	1
+["265"]	2
+["266"]	1
+["27"]	1
+["272"]	2
+["273"]	3
+["274"]	1
+["275"]	1
+["277"]	4
+["278"]	2
+["28"]	1
+["280"]	2
+["281"]	2
+["282"]	2
+["283"]	1
+["284"]	1
+["285"]	1
+["286"]	1
+["287"]	1
+["288"]	2
+["289"]	1
+["291"]	1
+["292"]	1
+["296"]	1
+["298"]	3
+["30"]	1
+["302"]	1
+["305"]	1
+["306"]	1
+["307"]	2
+["308"]	1
+["309"]	2
+["310"]	1
+["311"]	3
+["315"]	1
+["316"]	3
+["317"]	2
+["318"]	3
+["321"]	2
+["322"]	2
+["323"]	1
+["325"]	2
+["327"]	3
+["33"]	1
+["331"]	2
+["332"]	1
+["333"]	2
+["335"]	1
+["336"]	1
+["338"]	1
+["339"]	1
+["34"]	1
+["341"]	1
+["342"]	2
+["344"]	2
+["345"]	1
+["348"]	5
+["35"]	3
+["351"]	1
+["353"]	2
+["356"]	1
+["360"]	1
+["362"]	1
+["364"]	1
+["365"]	1
+["366"]	1
+["367"]	2
+["368"]	1
+["369"]	3
+["37"]	2
+["373"]	1
+["374"]	1
+["375"]	1
+["377"]	1
+["378"]	1
+["379"]	1
+["382"]	2
+["384"]	3
+["386"]	1
+["389"]	1
+["392"]	1
+["393"]	1
+["394"]	1
+["395"]	2
+["396"]	3
+["397"]	2
+["399"]	2
+["4"]	1
+["400"]	1
+["401"]	5
+["402"]	1
+["403"]	3
+["404"]	2
+["406"]	4
+["407"]	1
+["409"]	3
+["41"]	1
+["411"]	1
+["413"]	2
+["414"]	2
+["417"]	3
+["418"]	1
+["419"]	1
+["42"]	2
+["421"]	1
+["424"]	2
+["427"]	1
+["429"]	2
+["43"]	1
+["430"]	3
+["431"]	3
+["432"]	1
+["435"]	1
+["436"]	1
+["437"]	1
+["438"]	3
+["439"]	2
+["44"]	1
+["443"]	1
+["444"]	1
+["446"]	1
+["448"]	1
+["449"]	1
+["452"]	1
+["453"]	1
+["454"]	3
+["455"]	1
+["457"]	1
+["458"]	2
+["459"]	2
+["460"]	1
+["462"]	2
+["463"]	2
+["466"]	3
+["467"]	1
+["468"]	4
+["469"]	5
+["47"]	1
+["470"]	1
+["472"]	1
+["475"]	1
+["477"]	1
+["478"]	2
+["479"]	1
+["480"]	3
+["481"]	1
+["482"]	1
+["483"]	1
+["484"]	1
+["485"]	1
+["487"]	1
+["489"]	4
+["490"]	1
+["491"]	1
+["492"]	2
+["493"]	1
+["494"]	1
+["495"]	1
+["496"]	1
+["497"]	1
+["498"]	3
+["5"]	3
+["51"]	2
+["53"]	1
+["54"]	1
+["57"]	1
+["58"]	2
+["64"]	1
+["65"]	1
+["66"]	1
+["67"]	2
+["69"]	1
+["70"]	3
+["72"]	2
+["74"]	1
+["76"]	2
+["77"]	1
+["78"]	1
+["8"]	1
+["80"]	1
+["82"]	1
+["83"]	2
+["84"]	2
+["85"]	1
+["86"]	1
+["87"]	1
+["9"]	1
+["90"]	3
+["92"]	1
+["95"]	2
+["96"]	1
+["97"]	2
+["98"]	2
+PREHOOK: query: SELECT DEST2.* FROM DEST2
+PREHOOK: type: QUERY
+PREHOOK: Input: default@dest2
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT DEST2.* FROM DEST2
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@dest2
+#### A masked pattern was here ####
+{"0":"val_0"}	3
+{"10":"val_10"}	1
+{"100":"val_100"}	2
+{"103":"val_103"}	2
+{"104":"val_104"}	2
+{"105":"val_105"}	1
+{"11":"val_11"}	1
+{"111":"val_111"}	1
+{"113":"val_113"}	2
+{"114":"val_114"}	1
+{"116":"val_116"}	1
+{"118":"val_118"}	2
+{"119":"val_119"}	3
+{"12":"val_12"}	2
+{"120":"val_120"}	2
+{"125":"val_125"}	2
+{"126":"val_126"}	1
+{"128":"val_128"}	3
+{"129":"val_129"}	2
+{"131":"val_131"}	1
+{"133":"val_133"}	1
+{"134":"val_134"}	2
+{"136":"val_136"}	1
+{"137":"val_137"}	2
+{"138":"val_138"}	4
+{"143":"val_143"}	1
+{"145":"val_145"}	1
+{"146":"val_146"}	2
+{"149":"val_149"}	2
+{"15":"val_15"}	2
+{"150":"val_150"}	1
+{"152":"val_152"}	2
+{"153":"val_153"}	1
+{"155":"val_155"}	1
+{"156":"val_156"}	1
+{"157":"val_157"}	1
+{"158":"val_158"}	1
+{"160":"val_160"}	1
+{"162":"val_162"}	1
+{"163":"val_163"}	1
+{"164":"val_164"}	2
+{"165":"val_165"}	2
+{"166":"val_166"}	1
+{"167":"val_167"}	3
+{"168":"val_168"}	1
+{"169":"val_169"}	4
+{"17":"val_17"}	1
+{"170":"val_170"}	1
+{"172":"val_172"}	2
+{"174":"val_174"}	2
+{"175":"val_175"}	2
+{"176":"val_176"}	2
+{"177":"val_177"}	1
+{"178":"val_178"}	1
+{"179":"val_179"}	2
+{"18":"val_18"}	2
+{"180":"val_180"}	1
+{"181":"val_181"}	1
+{"183":"val_183"}	1
+{"186":"val_186"}	1
+{"187":"val_187"}	3
+{"189":"val_189"}	1
+{"19":"val_19"}	1
+{"190":"val_190"}	1
+{"191":"val_191"}	2
+{"192":"val_192"}	1
+{"193":"val_193"}	3
+{"194":"val_194"}	1
+{"195":"val_195"}	2
+{"196":"val_196"}	1
+{"197":"val_197"}	2
+{"199":"val_199"}	3
+{"2":"val_2"}	1
+{"20":"val_20"}	1
+{"200":"val_200"}	2
+{"201":"val_201"}	1
+{"202":"val_202"}	1
+{"203":"val_203"}	2
+{"205":"val_205"}	2
+{"207":"val_207"}	2
+{"208":"val_208"}	3
+{"209":"val_209"}	2
+{"213":"val_213"}	2
+{"214":"val_214"}	1
+{"216":"val_216"}	2
+{"217":"val_217"}	2
+{"218":"val_218"}	1
+{"219":"val_219"}	2
+{"221":"val_221"}	2
+{"222":"val_222"}	1
+{"223":"val_223"}	2
+{"224":"val_224"}	2
+{"226":"val_226"}	1
+{"228":"val_228"}	1
+{"229":"val_229"}	2
+{"230":"val_230"}	5
+{"233":"val_233"}	2
+{"235":"val_235"}	1
+{"237":"val_237"}	2
+{"238":"val_238"}	2
+{"239":"val_239"}	2
+{"24":"val_24"}	2
+{"241":"val_241"}	1
+{"242":"val_242"}	2
+{"244":"val_244"}	1
+{"247":"val_247"}	1
+{"248":"val_248"}	1
+{"249":"val_249"}	1
+{"252":"val_252"}	1
+{"255":"val_255"}	2
+{"256":"val_256"}	2
+{"257":"val_257"}	1
+{"258":"val_258"}	1
+{"26":"val_26"}	2
+{"260":"val_260"}	1
+{"262":"val_262"}	1
+{"263":"val_263"}	1
+{"265":"val_265"}	2
+{"266":"val_266"}	1
+{"27":"val_27"}	1
+{"272":"val_272"}	2
+{"273":"val_273"}	3
+{"274":"val_274"}	1
+{"275":"val_275"}	1
+{"277":"val_277"}	4
+{"278":"val_278"}	2
+{"28":"val_28"}	1
+{"280":"val_280"}	2
+{"281":"val_281"}	2
+{"282":"val_282"}	2
+{"283":"val_283"}	1
+{"284":"val_284"}	1
+{"285":"val_285"}	1
+{"286":"val_286"}	1
+{"287":"val_287"}	1
+{"288":"val_288"}	2
+{"289":"val_289"}	1
+{"291":"val_291"}	1
+{"292":"val_292"}	1
+{"296":"val_296"}	1
+{"298":"val_298"}	3
+{"30":"val_30"}	1
+{"302":"val_302"}	1
+{"305":"val_305"}	1
+{"306":"val_306"}	1
+{"307":"val_307"}	2
+{"308":"val_308"}	1
+{"309":"val_309"}	2
+{"310":"val_310"}	1
+{"311":"val_311"}	3
+{"315":"val_315"}	1
+{"316":"val_316"}	3
+{"317":"val_317"}	2
+{"318":"val_318"}	3
+{"321":"val_321"}	2
+{"322":"val_322"}	2
+{"323":"val_323"}	1
+{"325":"val_325"}	2
+{"327":"val_327"}	3
+{"33":"val_33"}	1
+{"331":"val_331"}	2
+{"332":"val_332"}	1
+{"333":"val_333"}	2
+{"335":"val_335"}	1
+{"336":"val_336"}	1
+{"338":"val_338"}	1
+{"339":"val_339"}	1
+{"34":"val_34"}	1
+{"341":"val_341"}	1
+{"342":"val_342"}	2
+{"344":"val_344"}	2
+{"345":"val_345"}	1
+{"348":"val_348"}	5
+{"35":"val_35"}	3
+{"351":"val_351"}	1
+{"353":"val_353"}	2
+{"356":"val_356"}	1
+{"360":"val_360"}	1
+{"362":"val_362"}	1
+{"364":"val_364"}	1
+{"365":"val_365"}	1
+{"366":"val_366"}	1
+{"367":"val_367"}	2
+{"368":"val_368"}	1
+{"369":"val_369"}	3
+{"37":"val_37"}	2
+{"373":"val_373"}	1
+{"374":"val_374"}	1
+{"375":"val_375"}	1
+{"377":"val_377"}	1
+{"378":"val_378"}	1
+{"379":"val_379"}	1
+{"382":"val_382"}	2
+{"384":"val_384"}	3
+{"386":"val_386"}	1
+{"389":"val_389"}	1
+{"392":"val_392"}	1
+{"393":"val_393"}	1
+{"394":"val_394"}	1
+{"395":"val_395"}	2
+{"396":"val_396"}	3
+{"397":"val_397"}	2
+{"399":"val_399"}	2
+{"4":"val_4"}	1
+{"400":"val_400"}	1
+{"401":"val_401"}	5
+{"402":"val_402"}	1
+{"403":"val_403"}	3
+{"404":"val_404"}	2
+{"406":"val_406"}	4
+{"407":"val_407"}	1
+{"409":"val_409"}	3
+{"41":"val_41"}	1
+{"411":"val_411"}	1
+{"413":"val_413"}	2
+{"414":"val_414"}	2
+{"417":"val_417"}	3
+{"418":"val_418"}	1
+{"419":"val_419"}	1
+{"42":"val_42"}	2
+{"421":"val_421"}	1
+{"424":"val_424"}	2
+{"427":"val_427"}	1
+{"429":"val_429"}	2
+{"43":"val_43"}	1
+{"430":"val_430"}	3
+{"431":"val_431"}	3
+{"432":"val_432"}	1
+{"435":"val_435"}	1
+{"436":"val_436"}	1
+{"437":"val_437"}	1
+{"438":"val_438"}	3
+{"439":"val_439"}	2
+{"44":"val_44"}	1
+{"443":"val_443"}	1
+{"444":"val_444"}	1
+{"446":"val_446"}	1
+{"448":"val_448"}	1
+{"449":"val_449"}	1
+{"452":"val_452"}	1
+{"453":"val_453"}	1
+{"454":"val_454"}	3
+{"455":"val_455"}	1
+{"457":"val_457"}	1
+{"458":"val_458"}	2
+{"459":"val_459"}	2
+{"460":"val_460"}	1
+{"462":"val_462"}	2
+{"463":"val_463"}	2
+{"466":"val_466"}	3
+{"467":"val_467"}	1
+{"468":"val_468"}	4
+{"469":"val_469"}	5
+{"47":"val_47"}	1
+{"470":"val_470"}	1
+{"472":"val_472"}	1
+{"475":"val_475"}	1
+{"477":"val_477"}	1
+{"478":"val_478"}	2
+{"479":"val_479"}	1
+{"480":"val_480"}	3
+{"481":"val_481"}	1
+{"482":"val_482"}	1
+{"483":"val_483"}	1
+{"484":"val_484"}	1
+{"485":"val_485"}	1
+{"487":"val_487"}	1
+{"489":"val_489"}	4
+{"490":"val_490"}	1
+{"491":"val_491"}	1
+{"492":"val_492"}	2
+{"493":"val_493"}	1
+{"494":"val_494"}	1
+{"495":"val_495"}	1
+{"496":"val_496"}	1
+{"497":"val_497"}	1
+{"498":"val_498"}	3
+{"5":"val_5"}	3
+{"51":"val_51"}	2
+{"53":"val_53"}	1
+{"54":"val_54"}	1
+{"57":"val_57"}	1
+{"58":"val_58"}	2
+{"64":"val_64"}	1
+{"65":"val_65"}	1
+{"66":"val_66"}	1
+{"67":"val_67"}	2
+{"69":"val_69"}	1
+{"70":"val_70"}	3
+{"72":"val_72"}	2
+{"74":"val_74"}	1
+{"76":"val_76"}	2
+{"77":"val_77"}	1
+{"78":"val_78"}	1
+{"8":"val_8"}	1
+{"80":"val_80"}	1
+{"82":"val_82"}	1
+{"83":"val_83"}	2
+{"84":"val_84"}	2
+{"85":"val_85"}	1
+{"86":"val_86"}	1
+{"87":"val_87"}	1
+{"9":"val_9"}	1
+{"90":"val_90"}	3
+{"92":"val_92"}	1
+{"95":"val_95"}	2
+{"96":"val_96"}	1
+{"97":"val_97"}	2
+{"98":"val_98"}	2
+PREHOOK: query: SELECT DEST3.* FROM DEST3
+PREHOOK: type: QUERY
+PREHOOK: Input: default@dest3
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT DEST3.* FROM DEST3
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@dest3
+#### A masked pattern was here ####
+{"col1":"0","col2":"val_0"}	3
+{"col1":"10","col2":"val_10"}	1
+{"col1":"100","col2":"val_100"}	2
+{"col1":"103","col2":"val_103"}	2
+{"col1":"104","col2":"val_104"}	2
+{"col1":"105","col2":"val_105"}	1
+{"col1":"11","col2":"val_11"}	1
+{"col1":"111","col2":"val_111"}	1
+{"col1":"113","col2":"val_113"}	2
+{"col1":"114","col2":"val_114"}	1
+{"col1":"116","col2":"val_116"}	1
+{"col1":"118","col2":"val_118"}	2
+{"col1":"119","col2":"val_119"}	3
+{"col1":"12","col2":"val_12"}	2
+{"col1":"120","col2":"val_120"}	2
+{"col1":"125","col2":"val_125"}	2
+{"col1":"126","col2":"val_126"}	1
+{"col1":"128","col2":"val_128"}	3
+{"col1":"129","col2":"val_129"}	2
+{"col1":"131","col2":"val_131"}	1
+{"col1":"133","col2":"val_133"}	1
+{"col1":"134","col2":"val_134"}	2
+{"col1":"136","col2":"val_136"}	1
+{"col1":"137","col2":"val_137"}	2
+{"col1":"138","col2":"val_138"}	4
+{"col1":"143","col2":"val_143"}	1
+{"col1":"145","col2":"val_145"}	1
+{"col1":"146","col2":"val_146"}	2
+{"col1":"149","col2":"val_149"}	2
+{"col1":"15","col2":"val_15"}	2
+{"col1":"150","col2":"val_150"}	1
+{"col1":"152","col2":"val_152"}	2
+{"col1":"153","col2":"val_153"}	1
+{"col1":"155","col2":"val_155"}	1
+{"col1":"156","col2":"val_156"}	1
+{"col1":"157","col2":"val_157"}	1
+{"col1":"158","col2":"val_158"}	1
+{"col1":"160","col2":"val_160"}	1
+{"col1":"162","col2":"val_162"}	1
+{"col1":"163","col2":"val_163"}	1
+{"col1":"164","col2":"val_164"}	2
+{"col1":"165","col2":"val_165"}	2
+{"col1":"166","col2":"val_166"}	1
+{"col1":"167","col2":"val_167"}	3
+{"col1":"168","col2":"val_168"}	1
+{"col1":"169","col2":"val_169"}	4
+{"col1":"17","col2":"val_17"}	1
+{"col1":"170","col2":"val_170"}	1
+{"col1":"172","col2":"val_172"}	2
+{"col1":"174","col2":"val_174"}	2
+{"col1":"175","col2":"val_175"}	2
+{"col1":"176","col2":"val_176"}	2
+{"col1":"177","col2":"val_177"}	1
+{"col1":"178","col2":"val_178"}	1
+{"col1":"179","col2":"val_179"}	2
+{"col1":"18","col2":"val_18"}	2
+{"col1":"180","col2":"val_180"}	1
+{"col1":"181","col2":"val_181"}	1
+{"col1":"183","col2":"val_183"}	1
+{"col1":"186","col2":"val_186"}	1
+{"col1":"187","col2":"val_187"}	3
+{"col1":"189","col2":"val_189"}	1
+{"col1":"19","col2":"val_19"}	1
+{"col1":"190","col2":"val_190"}	1
+{"col1":"191","col2":"val_191"}	2
+{"col1":"192","col2":"val_192"}	1
+{"col1":"193","col2":"val_193"}	3
+{"col1":"194","col2":"val_194"}	1
+{"col1":"195","col2":"val_195"}	2
+{"col1":"196","col2":"val_196"}	1
+{"col1":"197","col2":"val_197"}	2
+{"col1":"199","col2":"val_199"}	3
+{"col1":"2","col2":"val_2"}	1
+{"col1":"20","col2":"val_20"}	1
+{"col1":"200","col2":"val_200"}	2
+{"col1":"201","col2":"val_201"}	1
+{"col1":"202","col2":"val_202"}	1
+{"col1":"203","col2":"val_203"}	2
+{"col1":"205","col2":"val_205"}	2
+{"col1":"207","col2":"val_207"}	2
+{"col1":"208","col2":"val_208"}	3
+{"col1":"209","col2":"val_209"}	2
+{"col1":"213","col2":"val_213"}	2
+{"col1":"214","col2":"val_214"}	1
+{"col1":"216","col2":"val_216"}	2
+{"col1":"217","col2":"val_217"}	2
+{"col1":"218","col2":"val_218"}	1
+{"col1":"219","col2":"val_219"}	2
+{"col1":"221","col2":"val_221"}	2
+{"col1":"222","col2":"val_222"}	1
+{"col1":"223","col2":"val_223"}	2
+{"col1":"224","col2":"val_224"}	2
+{"col1":"226","col2":"val_226"}	1
+{"col1":"228","col2":"val_228"}	1
+{"col1":"229","col2":"val_229"}	2
+{"col1":"230","col2":"val_230"}	5
+{"col1":"233","col2":"val_233"}	2
+{"col1":"235","col2":"val_235"}	1
+{"col1":"237","col2":"val_237"}	2
+{"col1":"238","col2":"val_238"}	2
+{"col1":"239","col2":"val_239"}	2
+{"col1":"24","col2":"val_24"}	2
+{"col1":"241","col2":"val_241"}	1
+{"col1":"242","col2":"val_242"}	2
+{"col1":"244","col2":"val_244"}	1
+{"col1":"247","col2":"val_247"}	1
+{"col1":"248","col2":"val_248"}	1
+{"col1":"249","col2":"val_249"}	1
+{"col1":"252","col2":"val_252"}	1
+{"col1":"255","col2":"val_255"}	2
+{"col1":"256","col2":"val_256"}	2
+{"col1":"257","col2":"val_257"}	1
+{"col1":"258","col2":"val_258"}	1
+{"col1":"26","col2":"val_26"}	2
+{"col1":"260","col2":"val_260"}	1
+{"col1":"262","col2":"val_262"}	1
+{"col1":"263","col2":"val_263"}	1
+{"col1":"265","col2":"val_265"}	2
+{"col1":"266","col2":"val_266"}	1
+{"col1":"27","col2":"val_27"}	1
+{"col1":"272","col2":"val_272"}	2
+{"col1":"273","col2":"val_273"}	3
+{"col1":"274","col2":"val_274"}	1
+{"col1":"275","col2":"val_275"}	1
+{"col1":"277","col2":"val_277"}	4
+{"col1":"278","col2":"val_278"}	2
+{"col1":"28","col2":"val_28"}	1
+{"col1":"280","col2":"val_280"}	2
+{"col1":"281","col2":"val_281"}	2
+{"col1":"282","col2":"val_282"}	2
+{"col1":"283","col2":"val_283"}	1
+{"col1":"284","col2":"val_284"}	1
+{"col1":"285","col2":"val_285"}	1
+{"col1":"286","col2":"val_286"}	1
+{"col1":"287","col2":"val_287"}	1
+{"col1":"288","col2":"val_288"}	2
+{"col1":"289","col2":"val_289"}	1
+{"col1":"291","col2":"val_291"}	1
+{"col1":"292","col2":"val_292"}	1
+{"col1":"296","col2":"val_296"}	1
+{"col1":"298","col2":"val_298"}	3
+{"col1":"30","col2":"val_30"}	1
+{"col1":"302","col2":"val_302"}	1
+{"col1":"305","col2":"val_305"}	1
+{"col1":"306","col2":"val_306"}	1
+{"col1":"307","col2":"val_307"}	2
+{"col1":"308","col2":"val_308"}	1
+{"col1":"309","col2":"val_309"}	2
+{"col1":"310","col2":"val_310"}	1
+{"col1":"311","col2":"val_311"}	3
+{"col1":"315","col2":"val_315"}	1
+{"col1":"316","col2":"val_316"}	3
+{"col1":"317","col2":"val_317"}	2
+{"col1":"318","col2":"val_318"}	3
+{"col1":"321","col2":"val_321"}	2
+{"col1":"322","col2":"val_322"}	2
+{"col1":"323","col2":"val_323"}	1
+{"col1":"325","col2":"val_325"}	2
+{"col1":"327","col2":"val_327"}	3
+{"col1":"33","col2":"val_33"}	1
+{"col1":"331","col2":"val_331"}	2
+{"col1":"332","col2":"val_332"}	1
+{"col1":"333","col2":"val_333"}	2
+{"col1":"335","col2":"val_335"}	1
+{"col1":"336","col2":"val_336"}	1
+{"col1":"338","col2":"val_338"}	1
+{"col1":"339","col2":"val_339"}	1
+{"col1":"34","col2":"val_34"}	1
+{"col1":"341","col2":"val_341"}	1
+{"col1":"342","col2":"val_342"}	2
+{"col1":"344","col2":"val_344"}	2
+{"col1":"345","col2":"val_345"}	1
+{"col1":"348","col2":"val_348"}	5
+{"col1":"35","col2":"val_35"}	3
+{"col1":"351","col2":"val_351"}	1
+{"col1":"353","col2":"val_353"}	2
+{"col1":"356","col2":"val_356"}	1
+{"col1":"360","col2":"val_360"}	1
+{"col1":"362","col2":"val_362"}	1
+{"col1":"364","col2":"val_364"}	1
+{"col1":"365","col2":"val_365"}	1
+{"col1":"366","col2":"val_366"}	1
+{"col1":"367","col2":"val_367"}	2
+{"col1":"368","col2":"val_368"}	1
+{"col1":"369","col2":"val_369"}	3
+{"col1":"37","col2":"val_37"}	2
+{"col1":"373","col2":"val_373"}	1
+{"col1":"374","col2":"val_374"}	1
+{"col1":"375","col2":"val_375"}	1
+{"col1":"377","col2":"val_377"}	1
+{"col1":"378","col2":"val_378"}	1
+{"col1":"379","col2":"val_379"}	1
+{"col1":"382","col2":"val_382"}	2
+{"col1":"384","col2":"val_384"}	3
+{"col1":"386","col2":"val_386"}	1
+{"col1":"389","col2":"val_389"}	1
+{"col1":"392","col2":"val_392"}	1
+{"col1":"393","col2":"val_393"}	1
+{"col1":"394","col2":"val_394"}	1
+{"col1":"395","col2":"val_395"}	2
+{"col1":"396","col2":"val_396"}	3
+{"col1":"397","col2":"val_397"}	2
+{"col1":"399","col2":"val_399"}	2
+{"col1":"4","col2":"val_4"}	1
+{"col1":"400","col2":"val_400"}	1
+{"col1":"401","col2":"val_401"}	5
+{"col1":"402","col2":"val_402"}	1
+{"col1":"403","col2":"val_403"}	3
+{"col1":"404","col2":"val_404"}	2
+{"col1":"406","col2":"val_406"}	4
+{"col1":"407","col2":"val_407"}	1
+{"col1":"409","col2":"val_409"}	3
+{"col1":"41","col2":"val_41"}	1
+{"col1":"411","col2":"val_411"}	1
+{"col1":"413","col2":"val_413"}	2
+{"col1":"414","col2":"val_414"}	2
+{"col1":"417","col2":"val_417"}	3
+{"col1":"418","col2":"val_418"}	1
+{"col1":"419","col2":"val_419"}	1
+{"col1":"42","col2":"val_42"}	2
+{"col1":"421","col2":"val_421"}	1
+{"col1":"424","col2":"val_424"}	2
+{"col1":"427","col2":"val_427"}	1
+{"col1":"429","col2":"val_429"}	2
+{"col1":"43","col2":"val_43"}	1
+{"col1":"430","col2":"val_430"}	3
+{"col1":"431","col2":"val_431"}	3
+{"col1":"432","col2":"val_432"}	1
+{"col1":"435","col2":"val_435"}	1
+{"col1":"436","col2":"val_436"}	1
+{"col1":"437","col2":"val_437"}	1
+{"col1":"438","col2":"val_438"}	3
+{"col1":"439","col2":"val_439"}	2
+{"col1":"44","col2":"val_44"}	1
+{"col1":"443","col2":"val_443"}	1
+{"col1":"444","col2":"val_444"}	1
+{"col1":"446","col2":"val_446"}	1
+{"col1":"448","col2":"val_448"}	1
+{"col1":"449","col2":"val_449"}	1
+{"col1":"452","col2":"val_452"}	1
+{"col1":"453","col2":"val_453"}	1
+{"col1":"454","col2":"val_454"}	3
+{"col1":"455","col2":"val_455"}	1
+{"col1":"457","col2":"val_457"}	1
+{"col1":"458","col2":"val_458"}	2
+{"col1":"459","col2":"val_459"}	2
+{"col1":"460","col2":"val_460"}	1
+{"col1":"462","col2":"val_462"}	2
+{"col1":"463","col2":"val_463"}	2
+{"col1":"466","col2":"val_466"}	3
+{"col1":"467","col2":"val_467"}	1
+{"col1":"468","col2":"val_468"}	4
+{"col1":"469","col2":"val_469"}	5
+{"col1":"47","col2":"val_47"}	1
+{"col1":"470","col2":"val_470"}	1
+{"col1":"472","col2":"val_472"}	1
+{"col1":"475","col2":"val_475"}	1
+{"col1":"477","col2":"val_477"}	1
+{"col1":"478","col2":"val_478"}	2
+{"col1":"479","col2":"val_479"}	1
+{"col1":"480","col2":"val_480"}	3
+{"col1":"481","col2":"val_481"}	1
+{"col1":"482","col2":"val_482"}	1
+{"col1":"483","col2":"val_483"}	1
+{"col1":"484","col2":"val_484"}	1
+{"col1":"485","col2":"val_485"}	1
+{"col1":"487","col2":"val_487"}	1
+{"col1":"489","col2":"val_489"}	4
+{"col1":"490","col2":"val_490"}	1
+{"col1":"491","col2":"val_491"}	1
+{"col1":"492","col2":"val_492"}	2
+{"col1":"493","col2":"val_493"}	1
+{"col1":"494","col2":"val_494"}	1
+{"col1":"495","col2":"val_495"}	1
+{"col1":"496","col2":"val_496"}	1
+{"col1":"497","col2":"val_497"}	1
+{"col1":"498","col2":"val_498"}	3
+{"col1":"5","col2":"val_5"}	3
+{"col1":"51","col2":"val_51"}	2
+{"col1":"53","col2":"val_53"}	1
+{"col1":"54","col2":"val_54"}	1
+{"col1":"57","col2":"val_57"}	1
+{"col1":"58","col2":"val_58"}	2
+{"col1":"64","col2":"val_64"}	1
+{"col1":"65","col2":"val_65"}	1
+{"col1":"66","col2":"val_66"}	1
+{"col1":"67","col2":"val_67"}	2
+{"col1":"69","col2":"val_69"}	1
+{"col1":"70","col2":"val_70"}	3
+{"col1":"72","col2":"val_72"}	2
+{"col1":"74","col2":"val_74"}	1
+{"col1":"76","col2":"val_76"}	2
+{"col1":"77","col2":"val_77"}	1
+{"col1":"78","col2":"val_78"}	1
+{"col1":"8","col2":"val_8"}	1
+{"col1":"80","col2":"val_80"}	1
+{"col1":"82","col2":"val_82"}	1
+{"col1":"83","col2":"val_83"}	2
+{"col1":"84","col2":"val_84"}	2
+{"col1":"85","col2":"val_85"}	1
+{"col1":"86","col2":"val_86"}	1
+{"col1":"87","col2":"val_87"}	1
+{"col1":"9","col2":"val_9"}	1
+{"col1":"90","col2":"val_90"}	3
+{"col1":"92","col2":"val_92"}	1
+{"col1":"95","col2":"val_95"}	2
+{"col1":"96","col2":"val_96"}	1
+{"col1":"97","col2":"val_97"}	2
+{"col1":"98","col2":"val_98"}	2

Added: hive/branches/spark/ql/src/test/results/clientpositive/spark/groupby_complex_types_multi_single_reducer.q.out
URL: http://svn.apache.org/viewvc/hive/branches/spark/ql/src/test/results/clientpositive/spark/groupby_complex_types_multi_single_reducer.q.out?rev=1634122&view=auto
==============================================================================
--- hive/branches/spark/ql/src/test/results/clientpositive/spark/groupby_complex_types_multi_single_reducer.q.out (added)
+++ hive/branches/spark/ql/src/test/results/clientpositive/spark/groupby_complex_types_multi_single_reducer.q.out Fri Oct 24 19:19:08 2014
@@ -0,0 +1,243 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+
+CREATE TABLE DEST1(key ARRAY<STRING>, value BIGINT) STORED AS TEXTFILE
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@DEST1
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+
+CREATE TABLE DEST1(key ARRAY<STRING>, value BIGINT) STORED AS TEXTFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@DEST1
+PREHOOK: query: CREATE TABLE DEST2(key MAP<STRING, STRING>, value BIGINT) STORED AS TEXTFILE
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@DEST2
+POSTHOOK: query: CREATE TABLE DEST2(key MAP<STRING, STRING>, value BIGINT) STORED AS TEXTFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@DEST2
+PREHOOK: query: EXPLAIN
+FROM SRC
+INSERT OVERWRITE TABLE DEST1 SELECT ARRAY(SRC.key), COUNT(1) GROUP BY ARRAY(SRC.key) limit 10
+INSERT OVERWRITE TABLE DEST2 SELECT MAP(SRC.key, SRC.value), COUNT(1) GROUP BY MAP(SRC.key, SRC.value) limit 10
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN
+FROM SRC
+INSERT OVERWRITE TABLE DEST1 SELECT ARRAY(SRC.key), COUNT(1) GROUP BY ARRAY(SRC.key) limit 10
+INSERT OVERWRITE TABLE DEST2 SELECT MAP(SRC.key, SRC.value), COUNT(1) GROUP BY MAP(SRC.key, SRC.value) limit 10
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-2 is a root stage
+  Stage-3 depends on stages: Stage-2
+  Stage-0 depends on stages: Stage-3
+  Stage-4 depends on stages: Stage-0
+  Stage-1 depends on stages: Stage-3
+  Stage-5 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-2
+    Spark
+      Edges:
+        Reducer 2 <- Map 1 (GROUP, 1)
+        Reducer 3 <- Reducer 2 (GROUP, 1)
+        Reducer 4 <- Map 1 (GROUP, 1)
+        Reducer 5 <- Reducer 4 (GROUP, 1)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: src
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  Select Operator
+                    expressions: key (type: string)
+                    outputColumnNames: key
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                    Group By Operator
+                      aggregations: count(1)
+                      keys: array(key) (type: array<string>)
+                      mode: hash
+                      outputColumnNames: _col0, _col1
+                      Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: array<string>)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: array<string>)
+                        Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                        value expressions: _col1 (type: bigint)
+                  Select Operator
+                    expressions: key (type: string), value (type: string)
+                    outputColumnNames: key, value
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                    Group By Operator
+                      aggregations: count(1)
+                      keys: map(key:value) (type: map<string,string>)
+                      mode: hash
+                      outputColumnNames: _col0, _col1
+                      Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: map<string,string>)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: map<string,string>)
+                        Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                        value expressions: _col1 (type: bigint)
+        Reducer 2 
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: count(VALUE._col0)
+                keys: KEY._col0 (type: array<string>)
+                mode: mergepartial
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                Select Operator
+                  expressions: _col0 (type: array<string>), _col1 (type: bigint)
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                  Limit
+                    Number of rows: 10
+                    Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
+                    Reduce Output Operator
+                      sort order: 
+                      Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
+                      value expressions: _col0 (type: array<string>), _col1 (type: bigint)
+        Reducer 3 
+            Reduce Operator Tree:
+              Select Operator
+                expressions: VALUE._col0 (type: array<string>), VALUE._col1 (type: bigint)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
+                Limit
+                  Number of rows: 10
+                  Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
+                  File Output Operator
+                    compressed: false
+                    Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
+                    table:
+                        input format: org.apache.hadoop.mapred.TextInputFormat
+                        output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+                        serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+                        name: default.dest1
+        Reducer 4 
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: count(VALUE._col0)
+                keys: KEY._col0 (type: map<string,string>)
+                mode: mergepartial
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                Select Operator
+                  expressions: _col0 (type: map<string,string>), _col1 (type: bigint)
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                  Limit
+                    Number of rows: 10
+                    Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
+                    Reduce Output Operator
+                      sort order: 
+                      Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
+                      value expressions: _col0 (type: map<string,string>), _col1 (type: bigint)
+        Reducer 5 
+            Reduce Operator Tree:
+              Select Operator
+                expressions: VALUE._col0 (type: map<string,string>), VALUE._col1 (type: bigint)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
+                Limit
+                  Number of rows: 10
+                  Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
+                  File Output Operator
+                    compressed: false
+                    Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
+                    table:
+                        input format: org.apache.hadoop.mapred.TextInputFormat
+                        output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+                        serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+                        name: default.dest2
+
+  Stage: Stage-3
+    Dependency Collection
+
+  Stage: Stage-0
+    Move Operator
+      tables:
+          replace: true
+          table:
+              input format: org.apache.hadoop.mapred.TextInputFormat
+              output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+              serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+              name: default.dest1
+
+  Stage: Stage-4
+    Stats-Aggr Operator
+
+  Stage: Stage-1
+    Move Operator
+      tables:
+          replace: true
+          table:
+              input format: org.apache.hadoop.mapred.TextInputFormat
+              output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+              serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+              name: default.dest2
+
+  Stage: Stage-5
+    Stats-Aggr Operator
+
+PREHOOK: query: FROM SRC
+INSERT OVERWRITE TABLE DEST1 SELECT ARRAY(SRC.key), COUNT(1) GROUP BY ARRAY(SRC.key) limit 10
+INSERT OVERWRITE TABLE DEST2 SELECT MAP(SRC.key, SRC.value), COUNT(1) GROUP BY MAP(SRC.key, SRC.value) limit 10
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@dest1
+PREHOOK: Output: default@dest2
+[Error 30017]: Skipping stats aggregation by error org.apache.hadoop.hive.ql.metadata.HiveException: [Error 30015]: Stats aggregator of type counter cannot be connected to
+[Error 30017]: Skipping stats aggregation by error org.apache.hadoop.hive.ql.metadata.HiveException: [Error 30015]: Stats aggregator of type counter cannot be connected to
+POSTHOOK: query: FROM SRC
+INSERT OVERWRITE TABLE DEST1 SELECT ARRAY(SRC.key), COUNT(1) GROUP BY ARRAY(SRC.key) limit 10
+INSERT OVERWRITE TABLE DEST2 SELECT MAP(SRC.key, SRC.value), COUNT(1) GROUP BY MAP(SRC.key, SRC.value) limit 10
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@dest1
+POSTHOOK: Output: default@dest2
+POSTHOOK: Lineage: dest1.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: dest1.value EXPRESSION [(src)src.null, ]
+POSTHOOK: Lineage: dest2.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), (src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: dest2.value EXPRESSION [(src)src.null, ]
+PREHOOK: query: SELECT DEST1.* FROM DEST1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@dest1
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT DEST1.* FROM DEST1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@dest1
+#### A masked pattern was here ####
+["105"]	1
+["145"]	1
+["181"]	1
+["195"]	2
+["244"]	1
+["335"]	1
+["336"]	1
+["4"]	1
+["421"]	1
+["83"]	2
+PREHOOK: query: SELECT DEST2.* FROM DEST2
+PREHOOK: type: QUERY
+PREHOOK: Input: default@dest2
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT DEST2.* FROM DEST2
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@dest2
+#### A masked pattern was here ####
+{"156":"val_156"}	1
+{"170":"val_170"}	1
+{"186":"val_186"}	1
+{"274":"val_274"}	1
+{"332":"val_332"}	1
+{"402":"val_402"}	1
+{"480":"val_480"}	3
+{"5":"val_5"}	3
+{"67":"val_67"}	2
+{"96":"val_96"}	1

Added: hive/branches/spark/ql/src/test/results/clientpositive/spark/groupby_multi_insert_common_distinct.q.out
URL: http://svn.apache.org/viewvc/hive/branches/spark/ql/src/test/results/clientpositive/spark/groupby_multi_insert_common_distinct.q.out?rev=1634122&view=auto
==============================================================================
--- hive/branches/spark/ql/src/test/results/clientpositive/spark/groupby_multi_insert_common_distinct.q.out (added)
+++ hive/branches/spark/ql/src/test/results/clientpositive/spark/groupby_multi_insert_common_distinct.q.out Fri Oct 24 19:19:08 2014
@@ -0,0 +1,385 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+
+create table dest1(key int, cnt int)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@dest1
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+
+create table dest1(key int, cnt int)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@dest1
+PREHOOK: query: create table dest2(key int, cnt int)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@dest2
+POSTHOOK: query: create table dest2(key int, cnt int)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@dest2
+PREHOOK: query: explain
+from src
+insert overwrite table dest1 select key, count(distinct value) group by key
+insert overwrite table dest2 select key+key, count(distinct value) group by key+key
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+from src
+insert overwrite table dest1 select key, count(distinct value) group by key
+insert overwrite table dest2 select key+key, count(distinct value) group by key+key
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-2 is a root stage
+  Stage-3 depends on stages: Stage-2
+  Stage-0 depends on stages: Stage-3
+  Stage-4 depends on stages: Stage-0
+  Stage-1 depends on stages: Stage-3
+  Stage-5 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-2
+    Spark
+      Edges:
+        Reducer 2 <- Map 1 (GROUP SORT, 1)
+        Reducer 3 <- Reducer 2 (GROUP, 1)
+        Reducer 4 <- Reducer 2 (GROUP, 1)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: src
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  Reduce Output Operator
+                    key expressions: value (type: string)
+                    sort order: +
+                    Map-reduce partition columns: value (type: string)
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                    value expressions: key (type: string), (key + key) (type: double)
+        Reducer 2 
+            Reduce Operator Tree:
+              Forward
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                Group By Operator
+                  aggregations: count(DISTINCT KEY._col0)
+                  keys: VALUE._col0 (type: string)
+                  mode: hash
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  Reduce Output Operator
+                    key expressions: _col0 (type: string)
+                    sort order: +
+                    Map-reduce partition columns: _col0 (type: string)
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                    value expressions: _col1 (type: bigint)
+                Group By Operator
+                  aggregations: count(DISTINCT KEY._col0)
+                  keys: VALUE._col1 (type: double)
+                  mode: hash
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 500 Data size: 5312 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: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                    value expressions: _col1 (type: bigint)
+        Reducer 3 
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: count(VALUE._col0)
+                keys: KEY._col0 (type: string)
+                mode: final
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                Select Operator
+                  expressions: UDFToInteger(_col0) (type: int), UDFToInteger(_col1) (type: int)
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                  File Output Operator
+                    compressed: false
+                    Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                    table:
+                        input format: org.apache.hadoop.mapred.TextInputFormat
+                        output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+                        serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+                        name: default.dest1
+        Reducer 4 
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: count(VALUE._col0)
+                keys: KEY._col0 (type: double)
+                mode: final
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                Select Operator
+                  expressions: UDFToInteger(_col0) (type: int), UDFToInteger(_col1) (type: int)
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                  File Output Operator
+                    compressed: false
+                    Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                    table:
+                        input format: org.apache.hadoop.mapred.TextInputFormat
+                        output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+                        serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+                        name: default.dest2
+
+  Stage: Stage-3
+    Dependency Collection
+
+  Stage: Stage-0
+    Move Operator
+      tables:
+          replace: true
+          table:
+              input format: org.apache.hadoop.mapred.TextInputFormat
+              output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+              serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+              name: default.dest1
+
+  Stage: Stage-4
+    Stats-Aggr Operator
+
+  Stage: Stage-1
+    Move Operator
+      tables:
+          replace: true
+          table:
+              input format: org.apache.hadoop.mapred.TextInputFormat
+              output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+              serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+              name: default.dest2
+
+  Stage: Stage-5
+    Stats-Aggr Operator
+
+PREHOOK: query: from src
+insert overwrite table dest1 select key, count(distinct value) group by key
+insert overwrite table dest2 select key+key, count(distinct value) group by key+key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@dest1
+PREHOOK: Output: default@dest2
+[Error 30017]: Skipping stats aggregation by error org.apache.hadoop.hive.ql.metadata.HiveException: [Error 30015]: Stats aggregator of type counter cannot be connected to
+[Error 30017]: Skipping stats aggregation by error org.apache.hadoop.hive.ql.metadata.HiveException: [Error 30015]: Stats aggregator of type counter cannot be connected to
+POSTHOOK: query: from src
+insert overwrite table dest1 select key, count(distinct value) group by key
+insert overwrite table dest2 select key+key, count(distinct value) group by key+key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@dest1
+POSTHOOK: Output: default@dest2
+POSTHOOK: Lineage: dest1.cnt EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: dest1.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: dest2.cnt EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: dest2.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+PREHOOK: query: select * from dest1 where key < 10
+PREHOOK: type: QUERY
+PREHOOK: Input: default@dest1
+#### A masked pattern was here ####
+POSTHOOK: query: select * from dest1 where key < 10
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@dest1
+#### A masked pattern was here ####
+0	1
+2	1
+4	1
+5	1
+8	1
+9	1
+PREHOOK: query: select * from dest2 where key < 20 order by key limit 10
+PREHOOK: type: QUERY
+PREHOOK: Input: default@dest2
+#### A masked pattern was here ####
+POSTHOOK: query: select * from dest2 where key < 20 order by key limit 10
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@dest2
+#### A masked pattern was here ####
+0	1
+10	1
+16	1
+18	1
+4	1
+8	1
+PREHOOK: query: -- no need to spray by distinct key first
+explain
+from src
+insert overwrite table dest1 select key, count(distinct value) group by key
+insert overwrite table dest2 select key+key, count(distinct value) group by key+key
+PREHOOK: type: QUERY
+POSTHOOK: query: -- no need to spray by distinct key first
+explain
+from src
+insert overwrite table dest1 select key, count(distinct value) group by key
+insert overwrite table dest2 select key+key, count(distinct value) group by key+key
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-2 is a root stage
+  Stage-3 depends on stages: Stage-2
+  Stage-0 depends on stages: Stage-3
+  Stage-4 depends on stages: Stage-0
+  Stage-1 depends on stages: Stage-3
+  Stage-5 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-2
+    Spark
+      Edges:
+        Reducer 2 <- Map 1 (GROUP SORT, 1)
+        Reducer 3 <- Map 1 (GROUP SORT, 1)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: src
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  Select Operator
+                    expressions: key (type: string), value (type: string)
+                    outputColumnNames: key, value
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                    Group By Operator
+                      aggregations: count(DISTINCT value)
+                      keys: key (type: string), value (type: string)
+                      mode: hash
+                      outputColumnNames: _col0, _col1, _col2
+                      Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: string), _col1 (type: string)
+                        sort order: ++
+                        Map-reduce partition columns: _col0 (type: string)
+                        Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  Select Operator
+                    expressions: key (type: string), value (type: string)
+                    outputColumnNames: key, value
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                    Group By Operator
+                      aggregations: count(DISTINCT value)
+                      keys: (key + key) (type: double), value (type: string)
+                      mode: hash
+                      outputColumnNames: _col0, _col1, _col2
+                      Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: double), _col1 (type: string)
+                        sort order: ++
+                        Map-reduce partition columns: _col0 (type: double)
+                        Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+        Reducer 2 
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: count(DISTINCT KEY._col1:0._col0)
+                keys: KEY._col0 (type: string)
+                mode: mergepartial
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                Select Operator
+                  expressions: UDFToInteger(_col0) (type: int), UDFToInteger(_col1) (type: int)
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                  File Output Operator
+                    compressed: false
+                    Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                    table:
+                        input format: org.apache.hadoop.mapred.TextInputFormat
+                        output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+                        serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+                        name: default.dest1
+        Reducer 3 
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: count(DISTINCT KEY._col1:0._col0)
+                keys: KEY._col0 (type: double)
+                mode: mergepartial
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                Select Operator
+                  expressions: UDFToInteger(_col0) (type: int), UDFToInteger(_col1) (type: int)
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                  File Output Operator
+                    compressed: false
+                    Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                    table:
+                        input format: org.apache.hadoop.mapred.TextInputFormat
+                        output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+                        serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+                        name: default.dest2
+
+  Stage: Stage-3
+    Dependency Collection
+
+  Stage: Stage-0
+    Move Operator
+      tables:
+          replace: true
+          table:
+              input format: org.apache.hadoop.mapred.TextInputFormat
+              output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+              serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+              name: default.dest1
+
+  Stage: Stage-4
+    Stats-Aggr Operator
+
+  Stage: Stage-1
+    Move Operator
+      tables:
+          replace: true
+          table:
+              input format: org.apache.hadoop.mapred.TextInputFormat
+              output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+              serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+              name: default.dest2
+
+  Stage: Stage-5
+    Stats-Aggr Operator
+
+PREHOOK: query: from src
+insert overwrite table dest1 select key, count(distinct value) group by key
+insert overwrite table dest2 select key+key, count(distinct value) group by key+key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@dest1
+PREHOOK: Output: default@dest2
+[Error 30017]: Skipping stats aggregation by error org.apache.hadoop.hive.ql.metadata.HiveException: [Error 30015]: Stats aggregator of type counter cannot be connected to
+[Error 30017]: Skipping stats aggregation by error org.apache.hadoop.hive.ql.metadata.HiveException: [Error 30015]: Stats aggregator of type counter cannot be connected to
+POSTHOOK: query: from src
+insert overwrite table dest1 select key, count(distinct value) group by key
+insert overwrite table dest2 select key+key, count(distinct value) group by key+key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@dest1
+POSTHOOK: Output: default@dest2
+POSTHOOK: Lineage: dest1.cnt EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: dest1.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: dest2.cnt EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: dest2.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+PREHOOK: query: select * from dest1 where key < 10
+PREHOOK: type: QUERY
+PREHOOK: Input: default@dest1
+#### A masked pattern was here ####
+POSTHOOK: query: select * from dest1 where key < 10
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@dest1
+#### A masked pattern was here ####
+0	1
+2	1
+4	1
+5	1
+8	1
+9	1
+PREHOOK: query: select * from dest2 where key < 20 order by key limit 10
+PREHOOK: type: QUERY
+PREHOOK: Input: default@dest2
+#### A masked pattern was here ####
+POSTHOOK: query: select * from dest2 where key < 20 order by key limit 10
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@dest2
+#### A masked pattern was here ####
+0	1
+10	1
+16	1
+18	1
+4	1
+8	1

Added: hive/branches/spark/ql/src/test/results/clientpositive/spark/pcr.q.out
URL: http://svn.apache.org/viewvc/hive/branches/spark/ql/src/test/results/clientpositive/spark/pcr.q.out?rev=1634122&view=auto
==============================================================================
Files hive/branches/spark/ql/src/test/results/clientpositive/spark/pcr.q.out (added) and hive/branches/spark/ql/src/test/results/clientpositive/spark/pcr.q.out Fri Oct 24 19:19:08 2014 differ

Added: hive/branches/spark/ql/src/test/results/clientpositive/spark/smb_mapjoin_13.q.out
URL: http://svn.apache.org/viewvc/hive/branches/spark/ql/src/test/results/clientpositive/spark/smb_mapjoin_13.q.out?rev=1634122&view=auto
==============================================================================
Files hive/branches/spark/ql/src/test/results/clientpositive/spark/smb_mapjoin_13.q.out (added) and hive/branches/spark/ql/src/test/results/clientpositive/spark/smb_mapjoin_13.q.out Fri Oct 24 19:19:08 2014 differ

Added: hive/branches/spark/ql/src/test/results/clientpositive/spark/smb_mapjoin_15.q.out
URL: http://svn.apache.org/viewvc/hive/branches/spark/ql/src/test/results/clientpositive/spark/smb_mapjoin_15.q.out?rev=1634122&view=auto
==============================================================================
Files hive/branches/spark/ql/src/test/results/clientpositive/spark/smb_mapjoin_15.q.out (added) and hive/branches/spark/ql/src/test/results/clientpositive/spark/smb_mapjoin_15.q.out Fri Oct 24 19:19:08 2014 differ

Added: hive/branches/spark/ql/src/test/results/clientpositive/spark/smb_mapjoin_16.q.out
URL: http://svn.apache.org/viewvc/hive/branches/spark/ql/src/test/results/clientpositive/spark/smb_mapjoin_16.q.out?rev=1634122&view=auto
==============================================================================
--- hive/branches/spark/ql/src/test/results/clientpositive/spark/smb_mapjoin_16.q.out (added)
+++ hive/branches/spark/ql/src/test/results/clientpositive/spark/smb_mapjoin_16.q.out Fri Oct 24 19:19:08 2014
@@ -0,0 +1,140 @@
+PREHOOK: query: -- Create bucketed and sorted tables
+CREATE TABLE test_table1 (key INT, value STRING) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@test_table1
+POSTHOOK: query: -- Create bucketed and sorted tables
+CREATE TABLE test_table1 (key INT, value STRING) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@test_table1
+PREHOOK: query: CREATE TABLE test_table2 (key INT, value STRING) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@test_table2
+POSTHOOK: query: CREATE TABLE test_table2 (key INT, value STRING) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@test_table2
+PREHOOK: query: FROM src
+INSERT OVERWRITE TABLE test_table1 SELECT *
+INSERT OVERWRITE TABLE test_table2 SELECT *
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@test_table1
+PREHOOK: Output: default@test_table2
+[Error 30017]: Skipping stats aggregation by error org.apache.hadoop.hive.ql.metadata.HiveException: [Error 30015]: Stats aggregator of type counter cannot be connected to
+[Error 30017]: Skipping stats aggregation by error org.apache.hadoop.hive.ql.metadata.HiveException: [Error 30015]: Stats aggregator of type counter cannot be connected to
+POSTHOOK: query: FROM src
+INSERT OVERWRITE TABLE test_table1 SELECT *
+INSERT OVERWRITE TABLE test_table2 SELECT *
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@test_table1
+POSTHOOK: Output: default@test_table2
+POSTHOOK: Lineage: test_table1.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_table1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_table2.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_table2.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: -- Mapjoin followed by a aggregation should be performed in a single MR job
+EXPLAIN
+SELECT /*+mapjoin(b)*/ count(*) FROM test_table1 a JOIN test_table2 b ON a.key = b.key
+PREHOOK: type: QUERY
+POSTHOOK: query: -- Mapjoin followed by a aggregation should be performed in a single MR job
+EXPLAIN
+SELECT /*+mapjoin(b)*/ count(*) FROM test_table1 a JOIN test_table2 b ON a.key = b.key
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Spark
+      Edges:
+        Reducer 2 <- Map 1 (GROUP PARTITION-LEVEL SORT, 1), Map 4 (GROUP PARTITION-LEVEL SORT, 1)
+        Reducer 3 <- Reducer 2 (GROUP, 1)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: b
+                  Statistics: Num rows: 1453 Data size: 5812 Basic stats: COMPLETE Column stats: NONE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 727 Data size: 2908 Basic stats: COMPLETE Column stats: NONE
+                    Reduce Output Operator
+                      key expressions: key (type: int)
+                      sort order: +
+                      Map-reduce partition columns: key (type: int)
+                      Statistics: Num rows: 727 Data size: 2908 Basic stats: COMPLETE Column stats: NONE
+        Map 4 
+            Map Operator Tree:
+                TableScan
+                  alias: a
+                  Statistics: Num rows: 1453 Data size: 5812 Basic stats: COMPLETE Column stats: NONE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 727 Data size: 2908 Basic stats: COMPLETE Column stats: NONE
+                    Reduce Output Operator
+                      key expressions: key (type: int)
+                      sort order: +
+                      Map-reduce partition columns: key (type: int)
+                      Statistics: Num rows: 727 Data size: 2908 Basic stats: COMPLETE Column stats: NONE
+        Reducer 2 
+            Reduce Operator Tree:
+              Join Operator
+                condition map:
+                     Inner Join 0 to 1
+                condition expressions:
+                  0 
+                  1 
+                Statistics: Num rows: 799 Data size: 3198 Basic stats: COMPLETE Column stats: NONE
+                Select Operator
+                  Statistics: Num rows: 799 Data size: 3198 Basic stats: COMPLETE Column stats: NONE
+                  Group By Operator
+                    aggregations: count()
+                    mode: hash
+                    outputColumnNames: _col0
+                    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: NONE
+                      value expressions: _col0 (type: bigint)
+        Reducer 3 
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: count(VALUE._col0)
+                mode: mergepartial
+                outputColumnNames: _col0
+                Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+                Select Operator
+                  expressions: _col0 (type: bigint)
+                  outputColumnNames: _col0
+                  Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+                  File Output Operator
+                    compressed: false
+                    Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+                    table:
+                        input format: org.apache.hadoop.mapred.TextInputFormat
+                        output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+                        serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: SELECT /*+mapjoin(b)*/ count(*) FROM test_table1 a JOIN test_table2 b ON a.key = b.key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_table1
+PREHOOK: Input: default@test_table2
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT /*+mapjoin(b)*/ count(*) FROM test_table1 a JOIN test_table2 b ON a.key = b.key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_table1
+POSTHOOK: Input: default@test_table2
+#### A masked pattern was here ####
+1028

Added: hive/branches/spark/ql/src/test/results/clientpositive/spark/table_access_keys_stats.q.out
URL: http://svn.apache.org/viewvc/hive/branches/spark/ql/src/test/results/clientpositive/spark/table_access_keys_stats.q.out?rev=1634122&view=auto
==============================================================================
--- hive/branches/spark/ql/src/test/results/clientpositive/spark/table_access_keys_stats.q.out (added)
+++ hive/branches/spark/ql/src/test/results/clientpositive/spark/table_access_keys_stats.q.out Fri Oct 24 19:19:08 2014
@@ -0,0 +1,551 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+-- This test is used for testing the TableAccessAnalyzer
+
+CREATE TABLE T1(key STRING, val STRING) STORED AS TEXTFILE
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@T1
+PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/T1.txt' INTO TABLE T1
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@t1
+PREHOOK: query: CREATE TABLE T2(key STRING, val STRING) STORED AS TEXTFILE
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@T2
+PREHOOK: query: CREATE TABLE T3(key STRING, val STRING) STORED AS TEXTFILE
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@T3
+PREHOOK: query: -- Simple group-by queries
+SELECT key, count(1) FROM T1 GROUP BY key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+#### A masked pattern was here ####
+Operator:GBY_2
+Table:default@t1
+Keys:key
+
+1	1
+2	1
+3	1
+7	1
+8	2
+PREHOOK: query: SELECT key, val, count(1) FROM T1 GROUP BY key, val
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+#### A masked pattern was here ####
+Operator:GBY_2
+Table:default@t1
+Keys:key,val
+
+1	11	1
+2	12	1
+3	13	1
+7	17	1
+8	18	1
+8	28	1
+PREHOOK: query: -- With subqueries and column aliases
+SELECT key, count(1) FROM (SELECT key, val FROM T1) subq1 GROUP BY key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+#### A masked pattern was here ####
+Operator:GBY_3
+Table:default@t1
+Keys:key
+
+1	1
+2	1
+3	1
+7	1
+8	2
+PREHOOK: query: SELECT k, count(1) FROM (SELECT key as k, val as v FROM T1) subq1 GROUP BY k
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+#### A masked pattern was here ####
+Operator:GBY_3
+Table:default@t1
+Keys:key
+
+1	1
+2	1
+3	1
+7	1
+8	2
+PREHOOK: query: -- With constants
+SELECT 1, key, count(1) FROM T1 GROUP BY 1, key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+#### A masked pattern was here ####
+Operator:GBY_2
+Table:default@t1
+Keys:key
+
+1	1	1
+1	2	1
+1	3	1
+1	7	1
+1	8	2
+PREHOOK: query: SELECT key, 1, val, count(1) FROM T1 GROUP BY key, 1, val
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+#### A masked pattern was here ####
+Operator:GBY_2
+Table:default@t1
+Keys:key,val
+
+1	1	11	1
+2	1	12	1
+3	1	13	1
+7	1	17	1
+8	1	18	1
+8	1	28	1
+PREHOOK: query: SELECT key, 1, val, 2, count(1) FROM T1 GROUP BY key, 1, val, 2
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+#### A masked pattern was here ####
+Operator:GBY_2
+Table:default@t1
+Keys:key,val
+
+1	1	11	2	1
+2	1	12	2	1
+3	1	13	2	1
+7	1	17	2	1
+8	1	18	2	1
+8	1	28	2	1
+PREHOOK: query: -- no mapping with functions
+SELECT key, key + 1, count(1) FROM T1 GROUP BY key, key + 1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+#### A masked pattern was here ####
+1	2.0	1
+2	3.0	1
+3	4.0	1
+7	8.0	1
+8	9.0	2
+PREHOOK: query: SELECT key + key, sum(cnt) from
+(SELECT key, count(1) as cnt FROM T1 GROUP BY key) subq1
+group by key + key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+#### A masked pattern was here ####
+Operator:GBY_2
+Table:default@t1
+Keys:key
+
+14.0	1
+16.0	2
+2.0	1
+4.0	1
+6.0	1
+PREHOOK: query: -- group by followed by union
+SELECT * FROM (
+SELECT key, count(1) as c FROM T1 GROUP BY key
+ UNION ALL
+SELECT key, count(1) as c FROM T1 GROUP BY key
+) subq1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+#### A masked pattern was here ####
+Operator:GBY_2
+Table:default@t1
+Keys:key
+
+Operator:GBY_8
+Table:default@t1
+Keys:key
+
+1	1
+1	1
+2	1
+2	1
+3	1
+3	1
+7	1
+7	1
+8	2
+8	2
+PREHOOK: query: -- group by followed by a join
+SELECT * FROM
+(SELECT key, count(1) as c FROM T1 GROUP BY key) subq1
+JOIN
+(SELECT key, count(1) as c FROM T1 GROUP BY key) subq2
+ON subq1.key = subq2.key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+#### A masked pattern was here ####
+Operator:GBY_2
+Table:default@t1
+Keys:key
+
+Operator:GBY_8
+Table:default@t1
+Keys:key
+
+1	1	1	1
+2	1	2	1
+3	1	3	1
+7	1	7	1
+8	2	8	2
+PREHOOK: query: SELECT * FROM
+(SELECT key, count(1) as c FROM T1 GROUP BY key) subq1
+JOIN
+(SELECT key, val, count(1) as c FROM T1 GROUP BY key, val) subq2
+ON subq1.key = subq2.key
+ORDER BY subq1.key ASC, subq1.c ASC, subq2.key ASC, subq2.val ASC, subq2.c ASC
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+#### A masked pattern was here ####
+Operator:GBY_2
+Table:default@t1
+Keys:key,val
+
+Operator:GBY_8
+Table:default@t1
+Keys:key
+
+1	1	1	11	1
+2	1	2	12	1
+3	1	3	13	1
+7	1	7	17	1
+8	2	8	18	1
+8	2	8	28	1
+PREHOOK: query: -- constants from sub-queries should work fine
+SELECT key, constant, val, count(1) from
+(SELECT key, 1 as constant, val from T1) subq1
+group by key, constant, val
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+#### A masked pattern was here ####
+Operator:GBY_3
+Table:default@t1
+Keys:key,val
+
+1	1	11	1
+2	1	12	1
+3	1	13	1
+7	1	17	1
+8	1	18	1
+8	1	28	1
+PREHOOK: query: -- multiple levels of constants from sub-queries should work fine
+SELECT key, constant3, val, count(1) FROM
+(
+  SELECT key, constant AS constant2, val, 2 AS constant3
+  FROM
+  (
+    SELECT key, 1 AS constant, val
+    FROM T1
+  ) subq
+) subq2
+GROUP BY key, constant3, val
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+#### A masked pattern was here ####
+Operator:GBY_4
+Table:default@t1
+Keys:key,val
+
+1	2	11	1
+2	2	12	1
+3	2	13	1
+7	2	17	1
+8	2	18	1
+8	2	28	1
+PREHOOK: query: -- work with insert overwrite
+FROM T1
+INSERT OVERWRITE TABLE T2 SELECT key, count(1) GROUP BY key, 1
+INSERT OVERWRITE TABLE T3 SELECT key, sum(val) GROUP BY key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+PREHOOK: Output: default@t2
+PREHOOK: Output: default@t3
+[Error 30017]: Skipping stats aggregation by error org.apache.hadoop.hive.ql.metadata.HiveException: [Error 30015]: Stats aggregator of type counter cannot be connected to
+[Error 30017]: Skipping stats aggregation by error org.apache.hadoop.hive.ql.metadata.HiveException: [Error 30015]: Stats aggregator of type counter cannot be connected to
+Operator:GBY_2
+Table:default@t1
+Keys:key
+
+Operator:GBY_8
+Table:default@t1
+Keys:key
+
+PREHOOK: query: -- simple joins
+SELECT *
+FROM T1 JOIN T2
+ON T1.key = t2.key
+ORDER BY T1.key ASC, T1.val ASC
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+PREHOOK: Input: default@t2
+#### A masked pattern was here ####
+Operator:JOIN_6
+Table:default@t2
+Keys:key
+Table:default@t1
+Keys:key
+
+1	11	1	1
+2	12	2	1
+3	13	3	1
+7	17	7	1
+8	18	8	2
+8	28	8	2
+PREHOOK: query: SELECT *
+FROM T1 JOIN T2
+ON T1.key = T2.key AND T1.val = T2.val
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+PREHOOK: Input: default@t2
+#### A masked pattern was here ####
+Operator:JOIN_6
+Table:default@t2
+Keys:key,val
+Table:default@t1
+Keys:key,val
+
+PREHOOK: query: -- map join
+SELECT /*+ MAPJOIN(a) */ * 
+FROM T1 a JOIN T2 b 
+ON a.key = b.key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+PREHOOK: Input: default@t2
+#### A masked pattern was here ####
+Operator:JOIN_6
+Table:default@t2
+Keys:key
+Table:default@t1
+Keys:key
+
+1	11	1	1
+2	12	2	1
+3	13	3	1
+7	17	7	1
+8	18	8	2
+8	28	8	2
+PREHOOK: query: -- with constant in join condition
+SELECT *
+FROM T1 JOIN T2
+ON T1.key = T2.key AND T1.val = 3 and T2.val = 3
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+PREHOOK: Input: default@t2
+#### A masked pattern was here ####
+Operator:JOIN_6
+Table:default@t2
+Keys:key
+Table:default@t1
+Keys:key
+
+PREHOOK: query: -- subqueries
+SELECT *
+FROM 
+(
+  SELECT val FROM T1 WHERE key = 5  
+) subq1
+JOIN 
+(
+  SELECT val FROM T2 WHERE key = 6
+) subq2 
+ON subq1.val = subq2.val
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+PREHOOK: Input: default@t2
+#### A masked pattern was here ####
+Operator:JOIN_10
+Table:default@t2
+Keys:val
+Table:default@t1
+Keys:val
+
+PREHOOK: query: SELECT *
+FROM
+(
+  SELECT val FROM T1 WHERE key = 5
+) subq1
+JOIN
+T2
+ON subq1.val = T2.val
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+PREHOOK: Input: default@t2
+#### A masked pattern was here ####
+Operator:JOIN_8
+Table:default@t2
+Keys:val
+Table:default@t1
+Keys:val
+
+PREHOOK: query: -- with column aliases in subqueries
+SELECT *
+FROM
+(
+  SELECT val as v FROM T1 WHERE key = 5
+) subq1
+JOIN
+(
+  SELECT val FROM T2 WHERE key = 6
+) subq2
+ON subq1.v = subq2.val
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+PREHOOK: Input: default@t2
+#### A masked pattern was here ####
+Operator:JOIN_10
+Table:default@t2
+Keys:val
+Table:default@t1
+Keys:val
+
+PREHOOK: query: -- with constants in subqueries
+SELECT *
+FROM
+(
+  SELECT key, val FROM T1
+) subq1
+JOIN
+(
+  SELECT key, 'teststring' as val FROM T2
+) subq2
+ON subq1.val = subq2.val AND subq1.key = subq2.key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+PREHOOK: Input: default@t2
+#### A masked pattern was here ####
+Operator:JOIN_8
+Table:default@t2
+Keys:key
+Table:default@t1
+Keys:val,key
+
+PREHOOK: query: -- multiple levels of constants in subqueries
+SELECT *
+FROM
+(
+  SELECT key, val from 
+  (
+    SELECT key, 'teststring' as val from T1
+  ) subq1
+) subq2
+JOIN
+(
+  SELECT key, val FROM T2
+) subq3
+ON subq3.val = subq2.val AND subq3.key = subq2.key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+PREHOOK: Input: default@t2
+#### A masked pattern was here ####
+Operator:JOIN_9
+Table:default@t2
+Keys:val,key
+Table:default@t1
+Keys:key
+
+PREHOOK: query: -- no mapping on functions
+SELECT *
+FROM
+(
+  SELECT key, val from T1
+) subq1
+JOIN
+(
+  SELECT key, val FROM T2
+) subq2
+ON subq1.val = subq2.val AND subq1.key + 1 = subq2.key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+PREHOOK: Input: default@t2
+#### A masked pattern was here ####
+PREHOOK: query: -- join followed by group by
+SELECT subq1.val, COUNT(*)
+FROM
+(
+  SELECT key, val FROM T1
+) subq1
+JOIN
+(
+  SELECT key, 'teststring' as val FROM T2
+) subq2
+ON subq1.val = subq2.val AND subq1.key = subq2.key
+GROUP BY subq1.val
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+PREHOOK: Input: default@t2
+#### A masked pattern was here ####
+Operator:JOIN_8
+Table:default@t2
+Keys:key
+Table:default@t1
+Keys:val,key
+
+PREHOOK: query: -- join followed by union
+SELECT * 
+FROM
+(
+  SELECT subq1.val, COUNT(*)
+  FROM
+  (
+    SELECT key, val FROM T1
+  ) subq1
+  JOIN
+  (
+    SELECT key, 'teststring' as val FROM T2 
+  ) subq2
+  ON subq1.val = subq2.val AND subq1.key = subq2.key
+  GROUP BY subq1.val
+ UNION ALL
+  SELECT val, COUNT(*)
+  FROM T3
+  GROUP BY val
+) subq4
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+PREHOOK: Input: default@t2
+PREHOOK: Input: default@t3
+#### A masked pattern was here ####
+Operator:GBY_16
+Table:default@t3
+Keys:val
+
+Operator:JOIN_8
+Table:default@t2
+Keys:key
+Table:default@t1
+Keys:val,key
+
+11.0	1
+12.0	1
+13.0	1
+17.0	1
+46.0	1
+PREHOOK: query: -- join followed by join
+SELECT *
+FROM
+(
+  SELECT subq1.val as val, COUNT(*)
+  FROM
+  (
+    SELECT key, val FROM T1
+  ) subq1
+  JOIN
+  (
+    SELECT key, 'teststring' as val FROM T2
+  ) subq2
+  ON subq1.val = subq2.val AND subq1.key = subq2.key
+  GROUP by subq1.val
+) T4
+JOIN T3
+ON T3.val = T4.val
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+PREHOOK: Input: default@t2
+PREHOOK: Input: default@t3
+#### A masked pattern was here ####
+Operator:JOIN_8
+Table:default@t2
+Keys:key
+Table:default@t1
+Keys:val,key
+