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

Zhihua Deng updated HIVE-24639:
-------------------------------
    Description: 
Sometimes we see ClassCastException in filters when fetching some rows of a 
table or executing the query.  The 
GenericUDFOPOr/GenericUDFOPAnd/FilterOperator assume that the output of their 
conditions should be a boolean,  but there is no garanteed.  For example: 

_select * from ccn_table where src + 1;_ 

will throw ClassCastException:
{code:java}
Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to 
java.lang.Boolean
    at 
org.apache.hadoop.hive.ql.exec.FilterOperator.process(FilterOperator.java:125)
    at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:888)
    at 
org.apache.hadoop.hive.ql.exec.TableScanOperator.process(TableScanOperator.java:173)
    at 
org.apache.hadoop.hive.ql.exec.MapOperator$MapOpCtx.forward(MapOperator.java:153)
    at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:553)
    ...{code}
We'd better to validate the filter during analyzing instead of at runtime and 
bring more meaningful messages.

  was:
Sometimes we see ClassCastException in filters when fetching some rows of a 
table or executing the query.  The 
GenericUDFOPOr/GenericUDFOPAnd/FilterOperator assume that the output of their 
conditions should be a boolean,  but there is no garanteed.  For example: 

_select * from ccn_table where src + 1;_ 

will throw ClassCastException:
{code:java}
Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to 
java.lang.Boolean
    at 
org.apache.hadoop.hive.ql.exec.FilterOperator.process(FilterOperator.java:125)
    at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:888)
    at 
org.apache.hadoop.hive.ql.exec.TableScanOperator.process(TableScanOperator.java:173)
    at 
org.apache.hadoop.hive.ql.exec.MapOperator$MapOpCtx.forward(MapOperator.java:153)
    at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:553)
    ...{code}
We'd better to validate the filter during analyzing instead of at runtime and 
bring more meaningful messages.

 
 


> Raises SemanticException other than ClassCastException when filter has 
> non-boolean expressions
> ----------------------------------------------------------------------------------------------
>
>                 Key: HIVE-24639
>                 URL: https://issues.apache.org/jira/browse/HIVE-24639
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Zhihua Deng
>            Priority: Major
>
> Sometimes we see ClassCastException in filters when fetching some rows of a 
> table or executing the query.  The 
> GenericUDFOPOr/GenericUDFOPAnd/FilterOperator assume that the output of their 
> conditions should be a boolean,  but there is no garanteed.  For example: 
> _select * from ccn_table where src + 1;_ 
> will throw ClassCastException:
> {code:java}
> Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to 
> java.lang.Boolean
>     at 
> org.apache.hadoop.hive.ql.exec.FilterOperator.process(FilterOperator.java:125)
>     at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:888)
>     at 
> org.apache.hadoop.hive.ql.exec.TableScanOperator.process(TableScanOperator.java:173)
>     at 
> org.apache.hadoop.hive.ql.exec.MapOperator$MapOpCtx.forward(MapOperator.java:153)
>     at 
> org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:553)
>     ...{code}
> We'd better to validate the filter during analyzing instead of at runtime and 
> bring more meaningful messages.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to