You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Frankline Jose S (JIRA)" <ji...@apache.org> on 2013/01/28 11:07:13 UTC
[jira] [Commented] (HIVE-3945) union all datatype do not match may
result wrong result
[ https://issues.apache.org/jira/browse/HIVE-3945?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13564169#comment-13564169 ]
Frankline Jose S commented on HIVE-3945:
----------------------------------------
Hi, I just tried the following queries, Seems to work fine
// Union all - combine the result-set of two or more select statement.
Union-all allow duplicate values while matches in both tables
Input
33 35
55 55.62
20 44
55 100
44 44
33 33
33 55
44 44
33
55 55
55
Query :>
select c.key, c.value from (
select a.key, a.value from uniontbl a where a.key='33'
union all
select b.key, sum( b.value) as value from uniontbl b where b.key='33'
group by b.key
)c;
o/p:
33 35.0
33 33.0
33 55.0
33 NULL --> current and above line blongs to alia a ( a.key, a.value )
33 123.0 --> belongs to alias b ( b.key, sum( b.value) )
select c.key, c.value from (
select a.key, a.value from uniontbl a where a.key='55'
union all
select b.key, sum( b.value) as value from uniontbl b where b.key='55'
group by b.key )c
o/p
55 55.62
55 100.0
55 55.0 --> current and above line blongs to alia a ( a.key, a.value )
55 210.62 --> belongs to alias b ( b.key, sum( b.value) )
Can you give me an example scenario for this, in case I have misunderstood the problem.
> union all datatype do not match may result wrong result
> --------------------------------------------------------
>
> Key: HIVE-3945
> URL: https://issues.apache.org/jira/browse/HIVE-3945
> Project: Hive
> Issue Type: Bug
> Components: Query Processor
> Affects Versions: 0.9.0
> Reporter: caofangkun
> Priority: Minor
>
> hive (default)> desc src;
> key string
> value string
> select key, value FROM
> ( select 'key' as key, 'value' as value -- datatype: string, string
> from src s1 limit 1
> UNION ALL
> select s2.key as key, sum(s2.value) as value -- datatype: strung, double
> from src s2 group by s2.key
> ) unionsrc;
> this query exec normally but has wrong result:
> key 2.4081029415476845E-282 -- expected is 'value'
> 35.0
> 100 100.0
> 48 0.0
> and sometimes when the string title is too long it may case ArrayIndexOutOfBoundsException:
> Caused by: java.lang.ArrayIndexOutOfBoundsException
> at java.lang.System.arraycopy(Native Method)
> at org.apache.hadoop.io.Text.set(Text.java:205)
> at org.apache.hadoop.hive.serde2.lazybinary.LazyBinaryString.init(LazyBinaryString.java:48)
> at org.apache.hadoop.hive.serde2.lazybinary.LazyBinaryStruct.uncheckedGetField(LazyBinaryStruct.java:216)
> at org.apache.hadoop.hive.serde2.lazybinary.LazyBinaryStruct.getField(LazyBinaryStruct.java:197)
> at org.apache.hadoop.hive.serde2.lazybinary.objectinspector.LazyBinaryStructObjectInspector.getStructFieldData(LazyBinaryStructObjectInspector.java:61)
> at org.apache.hadoop.hive.ql.exec.UnionOperator.processOp(UnionOperator.java:125)
> at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:471)
> at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:762)
> at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:531)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira