Or maybe convert double to long, just as hector's DoubleSerializer does
https://github.com/rantav/hector/blob/master/core/src/main/java/me/prettyprint/cassandra/serializers/DoubleSerializer.java
I was happy to  use it here.
Tks,
- Eric

On 14/03/2011 02:52, aaron morton wrote:
There is nothing in the 0.8 trunk to add double support.

Could you shift the decimal point and use ints / longs ? Double is not a 
precise type, so there is a possibility of the value changing as it's 
serialised and deserialised around.

You were on the right track with extending abstract type. You would also need 
to work out a precise binary representation for the numbers.

Hope that helps.
Aaron
On 14 Mar 2011, at 13:36, Paul Teasdale wrote:

I am quite new to Cassandra and am trying to model a simple Column Family which 
uses Doubles as column names:

Datalines: { // ColumnFamilly
        dataline-1:{ // row key
                23.5: 'someValue',
                23.6: 'someValue',
                ...
                4334.99: 'someValue'
        },
        dataline-2:{
                10.5: 'someValue',
                12.6: 'someValue',
                ...
                23334.99: 'someValue'
        },
        ...
        dataline-n:{
        10.5: 'someValue',
                12.6: 'someValue',
                ...
                23334.99: 'someValue'
           }
}

In declaring this column family, I need to specify a 'CompareWith' attribute 
for a Double type, but the only available values I found for this attribute are:
        
  * BytesType
  * AsciiType
  * UTF8Type
  * LongType
  * LexicalUUIDType
  * TimeUUIDType

Is there any support anywere for double values (there has to be something)? And if 
not, does this mean we need to extend  
org.apache.cassandra.db.marshal.AbstractType<Double>?

package  com.mycom.types;

class  DoubleType extends org.apache.cassandra.db.marshal.AbstractType<Double>  
{
      public int compare(ByteBuffer o1, ByteBuffer o2){
        // trivial implementation
            Double d1  = o1.getDouble(0);
           Double d2 = o2.getDoube(0);
           return d1.compareTo(d2);
      }         
      //...
}

And declare the column family:

<ColumnFamily CompareWith="<com.mycom.types.DoubleType>" Name="Datalines"/>

Thanks,
Paul








Reply via email to