[
https://issues.apache.org/jira/browse/PHOENIX-1359?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14179536#comment-14179536
]
James Taylor commented on PHOENIX-1359:
---------------------------------------
I think that the onExpressions.size() write is getting overwritten by the
nRows. The code is meant to write an int as a place holder and then replace it
after looping through the tuples. This code should have been after the
out.writeInt(nRows):
{code}
DataOutputStream out = new DataOutputStream(baOut);
// Write onExpressions first, for hash key evaluation along with
deserialization
out.writeInt(onExpressions.size());
for (Expression expression : onExpressions) {
WritableUtils.writeVInt(out,
ExpressionType.valueOf(expression).ordinal());
expression.write(out);
}
int exprSize = baOut.size() + Bytes.SIZEOF_INT;
out.writeInt(exprSize);
{code}
I don't think we'll know how many ON expressions there are. Hmm. Not sure how
to fix this - not sure how it worked before. Maybe I'm missing something?
> Backward compatibility fails with 4.1 client and current 4.0 branch on server
> -----------------------------------------------------------------------------
>
> Key: PHOENIX-1359
> URL: https://issues.apache.org/jira/browse/PHOENIX-1359
> Project: Phoenix
> Issue Type: Bug
> Affects Versions: 4.1
> Reporter: Mujtaba Chohan
> Assignee: James Taylor
> Fix For: 5.0.0, 4.2, 3.2
>
> Attachments: 1359-2.patch, PHOENIX-1359-v3.patch, PHOENIX-1359.patch,
> PHOENIX-1359.patch
>
>
> 1. Queries with join fail with Encountered exception in hash plan [0]
> execution. (state=,code=0) with 4.1 client and 4.2-SNAPSHOT on server
> Query example: select * from LOYALTY_PROGRAM_CONDITION JOIN LOYALTY_PROGRAM
> on LOYALTY_PROGRAM_CONDITION__c.LOYALTY_PROGRAM_ID =
> LOYALTY_PROGRAM__c.ENTITY_ID where LOYALTY_PROGRAM__c.NAME='Ferrari' AND
> LOYALTY_PROGRAM_CONDITION.COUNTRY = 'Italy' limit 100;
> 2. Sqline fails to start with during list table phase with 4.1 client and
> 4.2-SNAPSHOT on server.
> Caused by: org.apache.hadoop.hbase.exceptions.DeserializationException:
> java.io.EOFException
> at
> org.apache.phoenix.filter.RowKeyComparisonFilter.parseFrom(RowKeyComparisonFilter.java:161)
> ... 18 more
> Caused by: java.io.EOFException
> at java.io.DataInputStream.readFully(DataInputStream.java:180)
> at java.io.DataInputStream.readFully(DataInputStream.java:152)
> at
> org.apache.hadoop.io.WritableUtils.readCompressedByteArray(WritableUtils.java:39)
> at
> org.apache.phoenix.filter.RowKeyComparisonFilter.readFields(RowKeyComparisonFilter.java:148)
> at
> org.apache.hadoop.hbase.util.Writables.getWritable(Writables.java:131)
> at
> org.apache.hadoop.hbase.util.Writables.getWritable(Writables.java:101)
> at
> org.apache.phoenix.filter.RowKeyComparisonFilter.parseFrom(RowKeyComparisonFilter.java:159)
> ... 18 more
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)