[
https://issues.apache.org/jira/browse/PHOENIX-2138?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14640511#comment-14640511
]
James Taylor commented on PHOENIX-2138:
---------------------------------------
Great catch, [~Dumindux] & [~ram_krish]. I'd like to understand that change a
little bit better. Is desiredMaxLength coming in as not null? Should the caller
be using the version of coerceBytes that passes in desiredMaxLength? In theory,
actualMaxLength and desiredMaxLength should be null for our fixed length
primitive types. Also, if a DECIMAL type is used, the max length and scale
should be set the same for all elements (and if the actual is different from
the desired value, we should be re-writing the array). I suspect there are
holes here.
Mind investigating this a bit further, [~Dumindux]? I think if we answer those
first couple of questions, we can commit this JIRA and then open another one
with further tests and fixes to patch any holes we have.
> Non equality comparisons don't work for ARRAY type columns that are DESC in
> row key
> -----------------------------------------------------------------------------------
>
> Key: PHOENIX-2138
> URL: https://issues.apache.org/jira/browse/PHOENIX-2138
> Project: Phoenix
> Issue Type: Bug
> Reporter: James Taylor
> Assignee: Dumindu Buddhika
> Attachments: PHOENIX-2138_v1.patch, PHOENIX-2138_v2.patch
>
>
> An exception occurs when you attempt to query an array column declared as
> DESC in the row key with <, >, <=, and >=. Here's how to reproduce:
> {code}
> create table a (k varchar array primary key desc);
> upsert into a values (array['a']);
> select * from a where k >= array['a'];
> {code}
> The exception is:
> {code}
> java.lang.IllegalArgumentException
> at java.nio.Buffer.position(Buffer.java:236)
> at
> org.apache.phoenix.schema.types.PArrayDataType.createPhoenixArray(PArrayDataType.java:1074)
> at
> org.apache.phoenix.schema.types.PArrayDataType.toObject(PArrayDataType.java:335)
> at
> org.apache.phoenix.schema.types.PVarcharArray.toObject(PVarcharArray.java:65)
> at
> org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:966)
> at
> org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:970)
> at
> org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:999)
> at
> org.apache.phoenix.schema.types.PDataType.toStringLiteral(PDataType.java:1072)
> at
> org.apache.phoenix.schema.types.PDataType.toStringLiteral(PDataType.java:1068)
> at
> org.apache.phoenix.iterate.ExplainTable.appendPKColumnValue(ExplainTable.java:182)
> at
> org.apache.phoenix.iterate.ExplainTable.appendScanRow(ExplainTable.java:257)
> at
> org.apache.phoenix.iterate.ExplainTable.appendKeyRanges(ExplainTable.java:273)
> at
> org.apache.phoenix.iterate.ExplainTable.explain(ExplainTable.java:122)
> at
> org.apache.phoenix.iterate.BaseResultIterators.explain(BaseResultIterators.java:713)
> at
> org.apache.phoenix.iterate.RoundRobinResultIterator.explain(RoundRobinResultIterator.java:153)
> at
> org.apache.phoenix.execute.BaseQueryPlan.getPlanSteps(BaseQueryPlan.java:406)
> at
> org.apache.phoenix.execute.BaseQueryPlan.iterator(BaseQueryPlan.java:263)
> at
> org.apache.phoenix.execute.BaseQueryPlan.iterator(BaseQueryPlan.java:161)
> at
> org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:265)
> at
> org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:255)
> at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
> at
> org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:254)
> at
> org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1435)
> at sqlline.Commands.execute(Commands.java:822)
> at sqlline.Commands.sql(Commands.java:732)
> at sqlline.SqlLine.dispatch(SqlLine.java:808)
> at sqlline.SqlLine.begin(SqlLine.java:681)
> at sqlline.SqlLine.start(SqlLine.java:398)
> at sqlline.SqlLine.main(SqlLine.java:292)
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)