phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vincent Poon (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (PHOENIX-4382) Immutable table variable length column values starting with separator byte return null in query results
Date Thu, 21 Dec 2017 00:33:00 GMT

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

Vincent Poon edited comment on PHOENIX-4382 at 12/21/17 12:32 AM:
------------------------------------------------------------------

[~jamestaylor] You're right, it's still confusing.  So for SINGLE_CELL_ARRAY_WITH_OFFSETS,
we store everything as a Varbinary.  So, perhaps a more accurate description would be:  any
immutable table value using SINGLE_CELL_ARRAY_WITH_OFFSETS storage scheme, that starts with
a separator byte, will return null in query results



was (Author: vincentpoon):
[~jamestaylor] You're right, it's still confusing.  So for SINGLE_CELL_ARRAY_WITH_OFFSETS,
we store everything as a Varbinary.  So, perhaps a more accurate description double be:  any
immutable table value using SINGLE_CELL_ARRAY_WITH_OFFSETS storage scheme, that starts with
a separator byte, will return null in query results


> Immutable table variable length column values starting with separator byte return null
in query results
> -------------------------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-4382
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-4382
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.14.0
>            Reporter: Vincent Poon
>            Assignee: Vincent Poon
>         Attachments: PHOENIX-4382.v1.master.patch, PHOENIX-4382.v2.master.patch, UpsertBigValuesIT.java
>
>
> For immutable tables, upsert of some values like Short.MAX_VALUE results in a null value
in query resultsets.  Mutable tables are not affected.  I tried with BigInt and got the same
problem.
> For Short, the breaking point seems to be 32512.
> This is happening because of the way we serialize nulls.  For nulls, we write out [separatorByte,
#_of_nulls].  However, some data values, like Short.MAX_VALUE, start with separatorByte, we
can't distinguish between a null and these values.  Currently the code assumes it's a null
when it sees a leading separatorByte, hence the incorrect query results.
> See attached test - testShort() , testBigInt()



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message