[ 
https://issues.apache.org/jira/browse/SPARK-18048?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Priyanka Garg updated SPARK-18048:
----------------------------------
    Description: 
If expression behaves differently if true and false expression are interchanged 
in case of different data types.

For eg. 
  checkEvaluation(
      If(Literal.create(true, BooleanType),
        Literal.create(identity(1), DateType),
        Literal.create(identity(2L), TimestampType)),
      identity(1)) is throwing error while 

 checkEvaluation(
      If(Literal.create(true, BooleanType),
        Literal.create(identity(1L), TimestampType),
        Literal.create(identity(2), DateType)),
      identity(1L)) works fine.

The reason for the same is that the If expression 's datatype only considers 
trueValue.dataType.

Also, 
  checkEvaluation(
      If(Literal.create(true, BooleanType),
        Literal.create(identity(1), DateType),
        Literal.create(identity(2L), TimestampType)),
      identity(1))
 is breaking only in case of Generated mutable Projection and Unsafe 
projection. For all other types its working fine.

Either both should work or none should work

  was:
If expression behaves differently if true and false expression are interchanged 
in case of different data types.

For eg. 
If(Literal.create(geo != null, BooleanType),
        Literal.create(null, DateType),
        Literal.create(null, TimestampType)) is throwing error while 

If(Literal.create(geo != null, BooleanType),
        Literal.create(null, TimestampType),
        Literal.create(null, DateType )) works fine.

The reason for the same is that the If expression 's datatype only considers 
trueValue.dataType.

Also, 
If(Literal.create(geo != null, BooleanType),
        Literal.create(null, DateType),
        Literal.create(null, TimestampType))
 is breaking only in case of Generated mutable Projection and Unsafe 
projection. For all other types its working fine.

Either both should work or none should work


> If expression behaves differently if true and false expression are 
> interchanged in case of different data types.
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: SPARK-18048
>                 URL: https://issues.apache.org/jira/browse/SPARK-18048
>             Project: Spark
>          Issue Type: Bug
>          Components: SQL
>            Reporter: Priyanka Garg
>
> If expression behaves differently if true and false expression are 
> interchanged in case of different data types.
> For eg. 
>   checkEvaluation(
>       If(Literal.create(true, BooleanType),
>         Literal.create(identity(1), DateType),
>         Literal.create(identity(2L), TimestampType)),
>       identity(1)) is throwing error while 
>  checkEvaluation(
>       If(Literal.create(true, BooleanType),
>         Literal.create(identity(1L), TimestampType),
>         Literal.create(identity(2), DateType)),
>       identity(1L)) works fine.
> The reason for the same is that the If expression 's datatype only considers 
> trueValue.dataType.
> Also, 
>   checkEvaluation(
>       If(Literal.create(true, BooleanType),
>         Literal.create(identity(1), DateType),
>         Literal.create(identity(2L), TimestampType)),
>       identity(1))
>  is breaking only in case of Generated mutable Projection and Unsafe 
> projection. For all other types its working fine.
> Either both should work or none should work



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to