You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jacek Lewandowski (Jira)" <ji...@apache.org> on 2024/02/27 15:42:00 UTC

[jira] [Commented] (CASSANDRA-14476) ShortType and ByteType are incorrectly considered variable-length types

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

Jacek Lewandowski commented on CASSANDRA-14476:
-----------------------------------------------

In 5.0 the problem affects more types: {{ByteType}}, {{ShortType}}, {{SimpleDateType}}, {{TimeType}}, {{TimestampType}}. I'm going to fix it and move the original method checking for whether the type serialization is variable or fixed length directly to {{TypeSerializer}}. I'll also provide some upgrade tests to make sure the old sstables can be read without problems. I don't think we need to bump SSTable version though because it does not change anything with serialization. It may certainly break some implicit casting in CQL though.


> ShortType and ByteType are incorrectly considered variable-length types
> -----------------------------------------------------------------------
>
>                 Key: CASSANDRA-14476
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14476
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Legacy/Core
>            Reporter: Vladimir Krivopalov
>            Assignee: Jacek Lewandowski
>            Priority: Low
>              Labels: lhf
>
> The AbstractType class has a method valueLengthIfFixed() that returns -1 for data types with a variable length and a positive value for types with a fixed length. This is primarily used for efficient serialization and deserialization. 
>  
> It turns out that there is an inconsistency in types ShortType and ByteType as those are in fact fixed-length types (2 bytes and 1 byte, respectively) but they don't have the valueLengthIfFixed() method overloaded and it returns -1 as if they were of variable length.
>  
> It would be good to fix that at some appropriate point, for example, when introducing a new version of SSTables format, to keep the meaning of the function consistent across data types. Saving some bytes in serialized format is a minor but pleasant bonus.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org