[
https://issues.apache.org/jira/browse/PHOENIX-5712?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17136244#comment-17136244
]
Chinmay Kulkarni commented on PHOENIX-5712:
-------------------------------------------
[~m2je] [~gjacoby] Perhaps this is an issue with just the 4.x branch. I haven't
tried on master. Are there any Jiras related to view index ID changes which
were not applied to 4.x or for which the logic is different for 4.x?
Btw, I tried running
{code:sql}
select * from system.catalog where table_schem != 'SYSTEM' AND TABLE_NAME
='GV_IDX';
{code}
and it fails with the exception in my original comment, however:
{code:sql}
select * from system.catalog where table_schem != 'SYSTEM' AND TABLE_NAME
!='GV_IDX';
{code}
does not fail so it definitely seems related to the view index.
I did a raw scan on SYSTEM.CATALOG via HBase shell and have attached rows
related to GV_IDX ([^t.txt]) i.e.
{code:sh}
echo "scan 'SYSTEM.CATALOG', {RAW=>true}" | ./bin/hbase shell | grep "GV_IDX"
{code}
I see the following rows related to GV_IDX and VIEW_INDEX metadata:
\x00S\x00GV_IDX column=0:VIEW_INDEX_ID, timestamp=1592273071935,
*value=\x00\x00\x00*
\x00S\x00GV_IDX column=0:VIEW_INDEX_ID_DATA_TYPE, timestamp=1592273071935,
value=\x80\x00\x00\x05
Looks it is definitely 3 bytes and not 2. Haven't had a chance to dig through
the code to figure it out yet though.
> Got SYSCAT ILLEGAL_DATA exception after created tenant index on view
> ---------------------------------------------------------------------
>
> Key: PHOENIX-5712
> URL: https://issues.apache.org/jira/browse/PHOENIX-5712
> Project: Phoenix
> Issue Type: Bug
> Affects Versions: 4.15.0
> Reporter: Xinyi Yan
> Priority: Major
> Fix For: 4.16.0
>
> Attachments: t.txt
>
>
> 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;
> {code:java}
> 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)
> {code}
> 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]
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)