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

James Taylor commented on PHOENIX-777:
--------------------------------------

[~ram_krish] - that code can be tweaked as necessary. We just don't have a way 
of *serializing* a null value. We do allow it to be null, though - for example, 
if you have a KeyValue column that is absent, a value of a primitive type will 
be null.

The bigger issue is the one that [~Dumindux] brings up with b/w compatibility. 
I don't think that scheme is going to work, as we can't differentiate between a 
value and the version byte. The only feasible way I can think to do it is:
- determine if we're the old format by dividing the number of bytes by the 
sizeof a single value. If it doesn't divide without a remainder, we've got the 
new format, otherwise we have the old format.
- pad (if necessary) the array such that it doesn't divide evenly.
- don't store null values for any single byte primitive value. I think this is 
ok, as it doesn't make a whole lot of sense to have a TINYINT ARRAY in the 
first place (it's essentially the same as BINARY).


> Support null value for fixed length ARRAY
> -----------------------------------------
>
>                 Key: PHOENIX-777
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-777
>             Project: Phoenix
>          Issue Type: Task
>            Reporter: James Taylor
>            Assignee: Dumindu Buddhika
>
> A null value for a fixed length array can be handled with a bitset tacked on 
> the end of the array. If an element is set to null, then the bit at that 
> index is set. Trailing nulls are not stored and an attempt to access an array 
> past the current size returns null.
> Current behavior,
> PBinaryArray - Throws an exception when a null is inserted.
> PBooleanArray - null is considered as false when a null is inserted.
> PCharArray - Throws an exception when a null is inserted.
> PDateArray - Throws an exception when a null is inserted.
> PDoubleArray - null is considered as 0.0 when a null is inserted.
> PFloatArray - null is considered as 0.0 when a null is inserted.
> PIntegerArray - null is considered as 0 when a null is inserted.
> PLongArray - null is considered as 0 when a null is inserted.
> PSmallIntArray - null is considered as 0 when a null is inserted.
> PTimeArray - Throws an exception when a null is inserted.
> PTimeStampArray - Throws an exception when a null is inserted.
> PTinyIntArray - null is considered as 0 when a null is inserted.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to