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

Got SYSCAT ILLEGAL_DATA exception after created tenant index on view

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Blocker
    • Resolution: Fixed
    • 4.15.0
    • 5.1.0, 4.16.0
    • None
    • None

    Description

      repo

      //create a multi-tenant table on global connection

      CREATE TABLE A (TENANT_ID CHAR(15) NOT NULL, ID CHAR(3) NOT NULL, NUM BIGINT CONSTRAINT PK PRIMARY KEY (TENANT_ID, ID)) MULTI_TENANT = true;

      // create view and index on tenant connection

      CREATE VIEW A_VIEW AS SELECT * FROM A;

      UPSERT INTO A_VIEW (ID, NUM) VALUES ('A', 1);

      CREATE INDEX A_VIEW_INDEX ON A_VIEW (NUM DESC) INCLUDE (ID);

      // qeury data on global connection 

      SELECT * RFOM SYSTEM.CATALOG;

      Error: ERROR 201 (22000): Illegal data. Expected length of at least 8 bytes, but had 3 (state=22000,code=201)
      java.sql.SQLException: ERROR 201 (22000): Illegal data. Expected length of at least 8 bytes, but had 3
              at org.apache.phoenix.exception.SQLExceptionCode$Factory$1.newException(SQLExceptionCode.java:559)
              at org.apache.phoenix.exception.SQLExceptionInfo.buildException(SQLExceptionInfo.java:195)
              at org.apache.phoenix.schema.types.PDataType.checkForSufficientLength(PDataType.java:290)
              at org.apache.phoenix.schema.types.PLong$LongCodec.decodeLong(PLong.java:256)
              at org.apache.phoenix.schema.types.PLong.toObject(PLong.java:115)
              at org.apache.phoenix.schema.types.PLong.toObject(PLong.java:31)
              at org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:1011)
              at org.apache.phoenix.compile.ExpressionProjector.getValue(ExpressionProjector.java:75)
              at org.apache.phoenix.jdbc.PhoenixResultSet.getObject(PhoenixResultSet.java:585)
              at sqlline.Rows$Row.<init>(Rows.java:258)
              at sqlline.BufferedRows.nextList(BufferedRows.java:111)
              at sqlline.BufferedRows.<init>(BufferedRows.java:52)
              at sqlline.SqlLine.print(SqlLine.java:1623)
              at sqlline.Commands.execute(Commands.java:982)
              at sqlline.Commands.sql(Commands.java:906)
              at sqlline.SqlLine.dispatch(SqlLine.java:740)
              at sqlline.SqlLine.begin(SqlLine.java:557)
              at sqlline.SqlLine.start(SqlLine.java:270)
              at sqlline.SqlLine.main(SqlLine.java:201)
      
      

      I tried to drop the view, and I was able to query the data from the SYSCATA. 

      I tested on 4.x-HBase1.3 and master branch, all branches have the same behavior.

       

      cc kadir gjacoby swaroopa

       

      Attachments

        1. 5712-test.txt
          3 kB
          Lars Hofhansl
        2. 5712-WIP.txt
          5 kB
          Lars Hofhansl
        3. PHOENIX-5712.4.x.v1.patch
          8 kB
          Xinyi Yan
        4. PHOENIX-5712.4.x.v2.patch
          37 kB
          Xinyi Yan
        5. PHOENIX-5712.patch
          9 kB
          Xinyi Yan
        6. Screen Shot 2020-09-21 at 10.13.17 PM.png
          88 kB
          Xinyi Yan
        7. Screen Shot 2020-09-21 at 10.18.08 PM.png
          64 kB
          Xinyi Yan
        8. t.txt
          8 kB
          Chinmay Kulkarni

        Issue Links

          Activity

            People

              yanxinyi Xinyi Yan
              yanxinyi Xinyi Yan
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 40m
                  40m