[ https://issues.apache.org/jira/browse/PHOENIX-1938?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14553413#comment-14553413 ]
ASF GitHub Bot commented on PHOENIX-1938: ----------------------------------------- Github user JamesRTaylor commented on the pull request: https://github.com/apache/phoenix/pull/81#issuecomment-104078110 I'd make JSON castable to VARCHAR instead of coercible. That way you can do an explicit CAST, but it would not be auto-coerced. > Like operator should throw proper exception when it is used with data type > other then Varcahr and Char > ------------------------------------------------------------------------------------------------------ > > Key: PHOENIX-1938 > URL: https://issues.apache.org/jira/browse/PHOENIX-1938 > Project: Phoenix > Issue Type: Bug > Affects Versions: 4.4.0 > Reporter: Aakash Pradeep > Assignee: Aakash Pradeep > Priority: Minor > > Currently when "Like" operator is used with Integer it throws > ClassCastException instead of Saying that it is not supported. > select * from <Table_Name> where 1 like 1; > java.lang.ClassCastException: java.lang.Integer cannot be cast to > java.lang.String > at > org.apache.phoenix.compile.ExpressionCompiler.visitLeave(ExpressionCompiler.java:471) > at > org.apache.phoenix.compile.ExpressionCompiler.visitLeave(ExpressionCompiler.java:134) > at > org.apache.phoenix.parse.LikeParseNode.accept(LikeParseNode.java:62) > at > org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:130) > at > org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:100) > at > org.apache.phoenix.compile.QueryCompiler.compileSingleFlatQuery(QueryCompiler.java:496) > at > org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:449) > at > org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:161) > at > org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:344) > at > org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:327) > at > org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:237) > at > org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:232) > at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53) > at > org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:231) > at > org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1097) > at sqlline.Commands.execute(Commands.java:822) > at sqlline.Commands.sql(Commands.java:732) > at sqlline.SqlLine.dispatch(SqlLine.java:808) > at sqlline.SqlLine.begin(SqlLine.java:681) > at sqlline.SqlLine.start(SqlLine.java:398) > at sqlline.SqlLine.main(SqlLine.java:292) > select * from JSON_PK where '1' like 1; > Error: ERROR 203 (22005): Type mismatch. VARCHAR and INTEGER for '1' LIKE 1 > (state=22005,code=203) > org.apache.phoenix.schema.TypeMismatchException: ERROR 203 (22005): Type > mismatch. VARCHAR and INTEGER for '1' LIKE 1 > at > org.apache.phoenix.schema.TypeMismatchException.newException(TypeMismatchException.java:53) > at > org.apache.phoenix.compile.ExpressionCompiler.visitLeave(ExpressionCompiler.java:462) > at > org.apache.phoenix.compile.ExpressionCompiler.visitLeave(ExpressionCompiler.java:134) > at > org.apache.phoenix.parse.LikeParseNode.accept(LikeParseNode.java:62) > at > org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:130) > at > org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:100) > at > org.apache.phoenix.compile.QueryCompiler.compileSingleFlatQuery(QueryCompiler.java:496) > at > org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:449) > at > org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:161) > at > org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:344) > at > org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:327) > at > org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:237) > at > org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:232) > at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53) > at > org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:231) > at > org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1097) > at sqlline.Commands.execute(Commands.java:822) > at sqlline.Commands.sql(Commands.java:732) > at sqlline.SqlLine.dispatch(SqlLine.java:808) > at sqlline.SqlLine.begin(SqlLine.java:681) > at sqlline.SqlLine.start(SqlLine.java:398) > at sqlline.SqlLine.main(SqlLine.java:292) > 0: jdbc:phoenix:localhost:2181:/hbase> select * from JSON_PK where 1 like '1'; > Error: ERROR 203 (22005): Type mismatch. INTEGER and VARCHAR for 1 LIKE '1' > (state=22005,code=203) > org.apache.phoenix.schema.TypeMismatchException: ERROR 203 (22005): Type > mismatch. INTEGER and VARCHAR for 1 LIKE '1' > at > org.apache.phoenix.schema.TypeMismatchException.newException(TypeMismatchException.java:53) > at > org.apache.phoenix.compile.ExpressionCompiler.visitLeave(ExpressionCompiler.java:462) > at > org.apache.phoenix.compile.ExpressionCompiler.visitLeave(ExpressionCompiler.java:134) > at > org.apache.phoenix.parse.LikeParseNode.accept(LikeParseNode.java:62) > at > org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:130) > at > org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:100) > at > org.apache.phoenix.compile.QueryCompiler.compileSingleFlatQuery(QueryCompiler.java:496) > at > org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:449) > at > org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:161) > at > org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:344) > at > org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:327) > at > org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:237) > at > org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:232) > at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53) > at > org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:231) > at > org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1097) > at sqlline.Commands.execute(Commands.java:822) > at sqlline.Commands.sql(Commands.java:732) > at sqlline.SqlLine.dispatch(SqlLine.java:808) > at sqlline.SqlLine.begin(SqlLine.java:681) > at sqlline.SqlLine.start(SqlLine.java:398) > at sqlline.SqlLine.main(SqlLine.java:292) -- This message was sent by Atlassian JIRA (v6.3.4#6332)