spark-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Wenchen Fan (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (SPARK-23335) expression 'select conv('ffffffffffffffff',16,10) % 2' return 0
Date Thu, 01 Mar 2018 10:37:00 GMT

    [ https://issues.apache.org/jira/browse/SPARK-23335?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16381812#comment-16381812
] 

Wenchen Fan commented on SPARK-23335:
-------------------------------------

Generally I think users should not write queries to do arithmetic between string and number,
they should add cast explicitly.

 

BTW I don't think we have a good choice here, it happened many times that a patch fixes a
problem and cause another. It will be good to look into how hive does type coercion for this
case, and see if it makes sense in Spark SQL.

> expression 'select conv('ffffffffffffffff',16,10) % 2' return 0
> ---------------------------------------------------------------
>
>                 Key: SPARK-23335
>                 URL: https://issues.apache.org/jira/browse/SPARK-23335
>             Project: Spark
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 2.1.0
>            Reporter: zhoukang
>            Priority: Major
>
> For below expression:
> {code:java}
> select conv('ffffffffffffffff',16,10) % 2;
> {code}
> it will return 0.
> {code:java}
> 0: jdbc:hive2://xxx:16> select conv('ffffffffffffffff',16,10) % 2;
>  +----------------------------------------------------------------------------------------------+--+

> | (CAST(conv(ffffffffffffffff, 16, 10) AS DOUBLE) % CAST(CAST(2 AS DECIMAL(20,0)) AS
DOUBLE)) |
>  +----------------------------------------------------------------------------------------------+--+
| 0.0 | +----------------------------------------------------------------------------------------------+--+
> {code}
> It caused by:
> {code:java}
> case a @ BinaryArithmetic(left @ StringType(), right) => a.makeCopy(Array(Cast(left,
DoubleType), right)) 
> case a @ BinaryArithmetic(left, right @ StringType()) => a.makeCopy(Array(left, Cast(right,
DoubleType)))
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org


Mime
View raw message