Joel Palmert created PHOENIX-3453:
-------------------------------------
Summary: 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
Reporter: Joel Palmert
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.4#6332)