[ 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)