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

Sylvain Lebresne commented on CASSANDRA-2262:
---------------------------------------------

I don't think that matter for the purpose of this ticket, but as a remark, 
IntegerType doesn't always roundtrip correctly. For example
{noformat}
    @Test
    public void testInteger2()
    {
        long v = 1;
        ByteBuffer bb = ByteBuffer.allocate(8);
        bb.putLong(v);
        bb.flip();
        String s = IntegerType.instance.getString(bb);
        ByteBuffer internal = IntegerType.instance.fromString(s);
        assert internal.getLong() == v;
    }
{noformat}
fails (while it works on LongType) because of the internal use of BigInteger 
that pack the bytes as tightly as possible.

This is probably fine since
{noformat}
     IntegerType.getString(IntegerType.fromString(s)) == s
{noformat}
always holds. It's
{noformat}
     IntegerType.fromString(IntegerType.getString(b)) == b
{noformat}
that doesn't always hold.

Last remark, the tests of the first patch are testing the wrong equation.

> use o.a.c.marshal.*Type for CQL 
> --------------------------------
>
>                 Key: CASSANDRA-2262
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-2262
>             Project: Cassandra
>          Issue Type: Sub-task
>          Components: API
>    Affects Versions: 0.8
>            Reporter: Eric Evans
>            Assignee: Gary Dusbabek
>            Priority: Minor
>             Fix For: 0.8
>
>         Attachments: v1-0001-test-shows-no-roundtrip-in-BytesType.txt, 
> v1-0002-BytesType.fromString-expects-a-hex-string.txt, 
> v1-0003-compose-method-for-AbstractTypes.txt, 
> v1-0004-assume-utf8-in-CliTest-keys-dammit.txt
>
>   Original Estimate: 0h
>  Remaining Estimate: 0h
>
> Presently, {{o.a.c.cql.Term.getByteBuffer}} manage's the conversion from a 
> parsed term to a {{ByteBuffer}} of the right contents, this should be moved 
> into the individual {{AbstractType}} subclasses (aka 
> {{AbstractType.fromString}}).
> Additionally, a method that does the inverse (returning the string 
> equivalent), needs to exists such that 
> {{AbstractType.getString(AbstractType.fromString(s)) == s}}
> Finally, for use in results decoding a method should exist that given a 
> {{ByteBuffer}} will return the appropriate object for that type.  For 
> example, {{IntegerType.compose(ByteBuffer) -> java.math.BigInteger}}, or 
> {{LexicalUUIDType.compose(ByteBuffer) -> java.util.UUID}}.

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to