You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "James Taylor (JIRA)" <ji...@apache.org> on 2017/02/14 20:19:42 UTC

[jira] [Commented] (PHOENIX-3453) Secondary index and query using distinct: Outer query results in ERROR 201 (22000): Illegal data. CHAR types may only contain single byte characters

    [ https://issues.apache.org/jira/browse/PHOENIX-3453?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15866566#comment-15866566 ] 

James Taylor commented on PHOENIX-3453:
---------------------------------------

+1 on the patch. Thanks for the excellent work, [~comnetwork]!

> Secondary index and query using distinct: Outer query results in ERROR 201 (22000): Illegal data. CHAR types may only contain single byte characters
> ----------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-3453
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-3453
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.8.0, 4.9.0
>            Reporter: Joel Palmert
>            Assignee: chenglei
>         Attachments: PHOENIX-3453_v1.patch
>
>
> Steps to repro:
> CREATE TABLE IF NOT EXISTS TEST.TEST (
> ENTITY_ID CHAR(15) NOT NULL,
> SCORE DOUBLE,
> CONSTRAINT TEST_PK PRIMARY KEY (
> ENTITY_ID
> )
> ) VERSIONS=1, MULTI_TENANT=FALSE, REPLICATION_SCOPE=1, TTL=31536000;
> CREATE INDEX IF NOT EXISTS TEST_SCORE ON TEST.TEST (SCORE DESC, ENTITY_ID DESC);
> UPSERT INTO test.test VALUES ('entity1',1.1);
> SELECT DISTINCT entity_id, score
> FROM(
> SELECT entity_id, score
> FROM test.test
> LIMIT 25
> );
> Output (in SQuirreL)
> ���������������	1.1
> If you run it in SQuirreL it results in the entity_id column getting the above error value. Notice that if you remove the secondary index or DISTINCT you get the correct result.
> I've also run the query through the Phoenix java api. Then I get the following exception:
> Caused by: java.sql.SQLException: ERROR 201 (22000): Illegal data. CHAR types may only contain single byte characters (????????????)
>     at org.apache.phoenix.exception.SQLExceptionCode$Factory$1.newException(SQLExceptionCode.java:454)
>     at org.apache.phoenix.exception.SQLExceptionInfo.buildException(SQLExceptionInfo.java:145)
>     at org.apache.phoenix.schema.types.PDataType.newIllegalDataException(PDataType.java:291)
>     at org.apache.phoenix.schema.types.PChar.toObject(PChar.java:121)
>     at org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:997)
>     at org.apache.phoenix.compile.ExpressionProjector.getValue(ExpressionProjector.java:75)
>     at org.apache.phoenix.jdbc.PhoenixResultSet.getString(PhoenixResultSet.java:608)
>     at org.apache.phoenix.jdbc.PhoenixResultSet.getString(PhoenixResultSet.java:621)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)