hive-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From j..@apache.org
Subject svn commit: r1185311 - in /hive/trunk: ql/src/test/queries/clientpositive/ ql/src/test/results/clientpositive/ serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/
Date Mon, 17 Oct 2011 18:01:27 GMT
Author: jvs
Date: Mon Oct 17 18:01:27 2011
New Revision: 1185311

URL: http://svn.apache.org/viewvc?rev=1185311&view=rev
Log:
HIVE-2223. support grouping on complex types in Hive
(Jonathan Chang via jvs)


Added:
    hive/trunk/ql/src/test/queries/clientpositive/groupby_complex_types.q
    hive/trunk/ql/src/test/results/clientpositive/groupby_complex_types.q.out
Modified:
    hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorUtils.java
    hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestStandardObjectInspectors.java

Added: hive/trunk/ql/src/test/queries/clientpositive/groupby_complex_types.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/groupby_complex_types.q?rev=1185311&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/groupby_complex_types.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/groupby_complex_types.q Mon Oct 17 18:01:27
2011
@@ -0,0 +1,16 @@
+
+CREATE TABLE DEST1(key ARRAY<STRING>, value BIGINT) STORED AS TEXTFILE;
+CREATE TABLE DEST2(key MAP<STRING, STRING>, value BIGINT) STORED AS TEXTFILE;
+
+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);
+
+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);
+
+SELECT DEST1.* FROM DEST1;
+SELECT DEST2.* FROM DEST2;
+

Added: hive/trunk/ql/src/test/results/clientpositive/groupby_complex_types.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/groupby_complex_types.q.out?rev=1185311&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/groupby_complex_types.q.out (added)
+++ hive/trunk/ql/src/test/results/clientpositive/groupby_complex_types.q.out Mon Oct 17 18:01:27
2011
@@ -0,0 +1,841 @@
+PREHOOK: query: CREATE TABLE DEST1(key ARRAY<STRING>, value BIGINT) STORED AS TEXTFILE
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: CREATE TABLE DEST1(key ARRAY<STRING>, value BIGINT) STORED AS TEXTFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@DEST1
+PREHOOK: query: CREATE TABLE DEST2(key MAP<STRING, STRING>, value BIGINT) STORED AS
TEXTFILE
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: CREATE TABLE DEST2(key MAP<STRING, STRING>, value BIGINT) STORED AS
TEXTFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@DEST2
+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)
+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)
+POSTHOOK: type: QUERY
+ABSTRACT SYNTAX TREE:
+  (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME SRC))) (TOK_INSERT (TOK_DESTINATION (TOK_TAB
(TOK_TABNAME DEST1))) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION ARRAY (. (TOK_TABLE_OR_COL SRC)
key))) (TOK_SELEXPR (TOK_FUNCTION COUNT 1))) (TOK_GROUPBY (TOK_FUNCTION ARRAY (. (TOK_TABLE_OR_COL
SRC) key)))) (TOK_INSERT (TOK_DESTINATION (TOK_TAB (TOK_TABNAME DEST2))) (TOK_SELECT (TOK_SELEXPR
(TOK_FUNCTION MAP (. (TOK_TABLE_OR_COL SRC) key) (. (TOK_TABLE_OR_COL SRC) value))) (TOK_SELEXPR
(TOK_FUNCTION COUNT 1))) (TOK_GROUPBY (TOK_FUNCTION MAP (. (TOK_TABLE_OR_COL SRC) key) (.
(TOK_TABLE_OR_COL SRC) value)))))
+
+STAGE DEPENDENCIES:
+  Stage-2 is a root stage
+  Stage-0 depends on stages: Stage-2
+  Stage-3 depends on stages: Stage-0
+  Stage-4 depends on stages: Stage-2
+  Stage-1 depends on stages: Stage-4
+  Stage-5 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-2
+    Map Reduce
+      Alias -> Map Operator Tree:
+        src 
+          TableScan
+            alias: src
+            Select Operator
+              expressions:
+                    expr: key
+                    type: string
+              outputColumnNames: key
+              Group By Operator
+                aggregations:
+                      expr: count(1)
+                bucketGroup: false
+                keys:
+                      expr: array(key)
+                      type: array<string>
+                mode: hash
+                outputColumnNames: _col0, _col1
+                Reduce Output Operator
+                  key expressions:
+                        expr: _col0
+                        type: array<string>
+                  sort order: +
+                  Map-reduce partition columns:
+                        expr: _col0
+                        type: array<string>
+                  tag: -1
+                  value expressions:
+                        expr: _col1
+                        type: bigint
+            Select Operator
+              expressions:
+                    expr: key
+                    type: string
+                    expr: value
+                    type: string
+              outputColumnNames: key, value
+              Group By Operator
+                aggregations:
+                      expr: count(1)
+                bucketGroup: false
+                keys:
+                      expr: map(key:value)
+                      type: map<string,string>
+                mode: hash
+                outputColumnNames: _col0, _col1
+                File Output Operator
+                  compressed: false
+                  GlobalTableId: 0
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations:
+                expr: count(VALUE._col0)
+          bucketGroup: false
+          keys:
+                expr: KEY._col0
+                type: array<string>
+          mode: mergepartial
+          outputColumnNames: _col0, _col1
+          Select Operator
+            expressions:
+                  expr: _col0
+                  type: array<string>
+                  expr: _col1
+                  type: bigint
+            outputColumnNames: _col0, _col1
+            File Output Operator
+              compressed: false
+              GlobalTableId: 1
+              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-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-3
+    Stats-Aggr Operator
+
+  Stage: Stage-4
+    Map Reduce
+      Alias -> Map Operator Tree:
+        file:/var/folders/C4/C40caRNsEM4C4yVangruonVUe7Y/-Tmp-/jonchang/hive_2011-09-07_12-57-23_371_8795371005069948458/-mr-10004

+            Reduce Output Operator
+              key expressions:
+                    expr: _col0
+                    type: map<string,string>
+              sort order: +
+              Map-reduce partition columns:
+                    expr: _col0
+                    type: map<string,string>
+              tag: -1
+              value expressions:
+                    expr: _col1
+                    type: bigint
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations:
+                expr: count(VALUE._col0)
+          bucketGroup: false
+          keys:
+                expr: KEY._col0
+                type: map<string,string>
+          mode: mergepartial
+          outputColumnNames: _col0, _col1
+          Select Operator
+            expressions:
+                  expr: _col0
+                  type: map<string,string>
+                  expr: _col1
+                  type: bigint
+            outputColumnNames: _col0, _col1
+            File Output Operator
+              compressed: false
+              GlobalTableId: 2
+              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-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)
+INSERT OVERWRITE TABLE DEST2 SELECT MAP(SRC.key, SRC.value), COUNT(1) GROUP BY MAP(SRC.key,
SRC.value)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@dest1
+PREHOOK: Output: default@dest2
+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)
+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
+PREHOOK: Output: file:/var/folders/C4/C40caRNsEM4C4yVangruonVUe7Y/-Tmp-/jonchang/hive_2011-09-07_12-57-49_014_7204811364544227299/-mr-10000
+POSTHOOK: query: SELECT DEST1.* FROM DEST1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@dest1
+POSTHOOK: Output: file:/var/folders/C4/C40caRNsEM4C4yVangruonVUe7Y/-Tmp-/jonchang/hive_2011-09-07_12-57-49_014_7204811364544227299/-mr-10000
+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, ]
+["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
+PREHOOK: Output: file:/var/folders/C4/C40caRNsEM4C4yVangruonVUe7Y/-Tmp-/jonchang/hive_2011-09-07_12-57-49_292_3086379109295758449/-mr-10000
+POSTHOOK: query: SELECT DEST2.* FROM DEST2
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@dest2
+POSTHOOK: Output: file:/var/folders/C4/C40caRNsEM4C4yVangruonVUe7Y/-Tmp-/jonchang/hive_2011-09-07_12-57-49_292_3086379109295758449/-mr-10000
+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, ]
+{"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

Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorUtils.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorUtils.java?rev=1185311&r1=1185310&r2=1185311&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorUtils.java
(original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorUtils.java
Mon Oct 17 18:01:27 2011
@@ -474,9 +474,28 @@ public final class ObjectInspectorUtils 
       }
       }
     }
+    case LIST: {
+      int r = 0;
+      ListObjectInspector listOI = (ListObjectInspector)objIns;
+      ObjectInspector elemOI = listOI.getListElementObjectInspector();
+      for (int ii = 0; ii < listOI.getListLength(o); ++ii) {
+        r = 31 * r + hashCode(listOI.getListElement(o, ii), elemOI);
+      }
+      return r;
+    }
+    case MAP: {
+      int r = 0;
+      MapObjectInspector mapOI = (MapObjectInspector)objIns;
+      ObjectInspector keyOI = mapOI.getMapKeyObjectInspector();
+      ObjectInspector valueOI = mapOI.getMapValueObjectInspector();
+      Map<?, ?> map = mapOI.getMap(o);
+      for (Map.Entry entry : map.entrySet()) {
+        r += hashCode(entry.getKey(), keyOI) ^ 
+             hashCode(entry.getValue(), valueOI);
+      }
+      return r;
+    }
     case STRUCT:
-    case LIST:
-    case MAP:
     case UNION:
     default:
       throw new RuntimeException(
@@ -543,7 +562,7 @@ public final class ObjectInspectorUtils 
    */
   public static int compare(Object o1, ObjectInspector oi1, Object o2,
       ObjectInspector oi2) {
-    return compare(o1, oi1, o2, oi2, null);
+    return compare(o1, oi1, o2, oi2, new FullMapEqualComparer());
   }
   
   /**

Modified: hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestStandardObjectInspectors.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestStandardObjectInspectors.java?rev=1185311&r1=1185310&r2=1185311&view=diff
==============================================================================
--- hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestStandardObjectInspectors.java
(original)
+++ hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestStandardObjectInspectors.java
Mon Oct 17 18:01:27 2011
@@ -517,7 +517,7 @@ public class TestStandardObjectInspector
       Throwable th = null;
       try {
         ObjectInspectorUtils.compare(union, uoi1,
-            new StandardUnion((byte) 4, map.clone()), uoi2);
+            new StandardUnion((byte) 4, map.clone()), uoi2, null);
       } catch (Throwable t) {
         th = t;
       }



Mime
View raw message