Uploaded image for project: 'Phoenix'
  1. Phoenix
  2. PHOENIX-1938

Like operator should throw proper exception when it is used with data type other then Varcahr and Char

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • 4.4.0
    • None
    • None

    Description

      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)

      Attachments

        Activity

          People

            Unassigned Unassigned
            aakash.pradeep Aakash Pradeep
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: