Zhihua Deng created HIVE-24639:
----------------------------------
Summary: 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
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)