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

SELECT query with undefined column on an UNCOVERED INDEX results in StringIndexOutOfBoundsException

    XMLWordPrintableJSON

Details

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

    Description

      If you run a SELECT query directly on an uncovered index with a column name that is undefined for that index, you get a java.lang.StringIndexOutOfBoundsException.  In the below sample, you can see that using a valid column, the query worked fine, but an undefined column caused the exception.

       

      0: jdbc:phoenix:localhost> create table t (k INTEGER PRIMARY KEY, v1 INTEGER);
      No rows affected (0.64 seconds)
      0: jdbc:phoenix:localhost> create uncovered index tuidx on t (PHOENIX_ROW_TIMESTAMP());
      No rows affected (5.671 seconds)
      0: jdbc:phoenix:localhost> select abc from tuidx;
      java.lang.StringIndexOutOfBoundsException: String index out of range: -1
              at java.lang.String.substring(String.java:1967)
              at org.apache.phoenix.util.IndexUtil.getDataColumnFamilyName(IndexUtil.java:200)
              at org.apache.phoenix.schema.IndexUncoveredDataColumnRef.<init>(IndexUncoveredDataColumnRef.java:51)
              at org.apache.phoenix.compile.TupleProjectionCompiler$ColumnRefVisitor.visit(TupleProjectionCompiler.java:269)
              at org.apache.phoenix.compile.TupleProjectionCompiler$ColumnRefVisitor.visit(TupleProjectionCompiler.java:245)
              at org.apache.phoenix.parse.ColumnParseNode.accept(ColumnParseNode.java:56)
              at org.apache.phoenix.compile.TupleProjectionCompiler.createProjectedTable(TupleProjectionCompiler.java:127)
              at org.apache.phoenix.compile.QueryCompiler.compileSingleFlatQuery(QueryCompiler.java:701)
              at org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:667)
              at org.apache.phoenix.compile.QueryCompiler.compileSelect(QueryCompiler.java:249)
              at org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:181)
              at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:724)
              at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:687)
              at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:368)
              at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:349)
              at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
              at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:349)
              at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:335)
              at org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:2362)
              at sqlline.Commands.executeSingleQuery(Commands.java:1054)
              at sqlline.Commands.execute(Commands.java:1003)
              at sqlline.Commands.sql(Commands.java:967)
              at sqlline.SqlLine.dispatch(SqlLine.java:734)
              at sqlline.SqlLine.begin(SqlLine.java:541)
              at sqlline.SqlLine.start(SqlLine.java:267)
              at sqlline.SqlLine.main(SqlLine.java:206)
      0: jdbc:phoenix:localhost> select ":K" from tuidx;
      ----
      | :K |
      ----
      ----

      Attachments

        Activity

          People

            Unassigned Unassigned
            haridsv Hari Krishna Dara
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: