[
https://issues.apache.org/jira/browse/PHOENIX-2934?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15313067#comment-15313067
]
Alicia Ying Shu edited comment on PHOENIX-2934 at 6/2/16 9:14 PM:
------------------------------------------------------------------
[~jamestaylor] I added the check for desiredMaxLength > b.length for PChar. The
super class is PDataType which is for all data types. Do we need check it for
all data types? Plus, when I put the check in the super class PDataType.java
coerceBytes(), I got the following exception.
{code}
java.lang.IllegalArgumentException: fromIndex(7) > toIndex(3)
at java.util.Arrays.rangeCheck(Arrays.java:794)
at java.util.Arrays.fill(Arrays.java:2048)
at
org.apache.phoenix.schema.types.PDataType.coerceBytes(PDataType.java:824)
at
org.apache.phoenix.schema.types.PDataType.coerceBytes(PDataType.java:799)
at
org.apache.phoenix.expression.CoerceExpression.evaluate(CoerceExpression.java:149)
at
org.apache.phoenix.schema.KeyValueSchema.toBytes(KeyValueSchema.java:112)
at
org.apache.phoenix.execute.TupleProjector.projectResults(TupleProjector.java:244)
at
org.apache.phoenix.execute.TupleProjectionPlan$1.next(TupleProjectionPlan.java:77)
at
org.apache.phoenix.iterate.LookAheadResultIterator$1.advance(LookAheadResultIterator.java:47)
at
org.apache.phoenix.iterate.LookAheadResultIterator.init(LookAheadResultIterator.java:59)
at
org.apache.phoenix.iterate.LookAheadResultIterator.peek(LookAheadResultIterator.java:73)
at
org.apache.phoenix.iterate.ConcatResultIterator.currentIterator(ConcatResultIterator.java:100)
at
org.apache.phoenix.iterate.ConcatResultIterator.next(ConcatResultIterator.java:117)
at
org.apache.phoenix.jdbc.PhoenixResultSet.next(PhoenixResultSet.java:778)
at
org.apache.phoenix.end2end.UnionAllIT.testCoerceExpr(UnionAllIT.java:777)
{code}
was (Author: aliciashu):
I added the check for desiredMaxLength > b.length for PChar. The super class is
PDataType which is for all data types. Do we need check it for all data types?
Plus, when I put the check in the super class PDataType.java coerceBytes(), I
got the following exception.
{code}
java.lang.IllegalArgumentException: fromIndex(7) > toIndex(3)
at java.util.Arrays.rangeCheck(Arrays.java:794)
at java.util.Arrays.fill(Arrays.java:2048)
at
org.apache.phoenix.schema.types.PDataType.coerceBytes(PDataType.java:824)
at
org.apache.phoenix.schema.types.PDataType.coerceBytes(PDataType.java:799)
at
org.apache.phoenix.expression.CoerceExpression.evaluate(CoerceExpression.java:149)
at
org.apache.phoenix.schema.KeyValueSchema.toBytes(KeyValueSchema.java:112)
at
org.apache.phoenix.execute.TupleProjector.projectResults(TupleProjector.java:244)
at
org.apache.phoenix.execute.TupleProjectionPlan$1.next(TupleProjectionPlan.java:77)
at
org.apache.phoenix.iterate.LookAheadResultIterator$1.advance(LookAheadResultIterator.java:47)
at
org.apache.phoenix.iterate.LookAheadResultIterator.init(LookAheadResultIterator.java:59)
at
org.apache.phoenix.iterate.LookAheadResultIterator.peek(LookAheadResultIterator.java:73)
at
org.apache.phoenix.iterate.ConcatResultIterator.currentIterator(ConcatResultIterator.java:100)
at
org.apache.phoenix.iterate.ConcatResultIterator.next(ConcatResultIterator.java:117)
at
org.apache.phoenix.jdbc.PhoenixResultSet.next(PhoenixResultSet.java:778)
at
org.apache.phoenix.end2end.UnionAllIT.testCoerceExpr(UnionAllIT.java:777)
{code}
> Checking a coerce expression at top level should not be necessary for Union
> All query
> -------------------------------------------------------------------------------------
>
> Key: PHOENIX-2934
> URL: https://issues.apache.org/jira/browse/PHOENIX-2934
> Project: Phoenix
> Issue Type: Bug
> Reporter: Alicia Ying Shu
> Assignee: Alicia Ying Shu
> Attachments: PHOENIX-2934.patch
>
>
> When working on PHOENIX-2886, found that we need special handling of coerce
> expression. Otherwise the following query would fail.
> {code}
> create table person ( id bigint not null primary key, firstname char(10),
> lastname varchar(10) );
> select id, cast( 'foo' as char(10)) firstname, lastname from person union all
> select * from person;
> {code}
> Checking a coerce expression at top level should not be necessary. Need to
> find out root cause on coerceExpression.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)