Aaron, Let me start from the beginning.
1- I have a ColumnFamily called Rollup15 with below definition: create column family Rollup15 with comparator = 'CompositeType(org.apache.cassandra.db.marshal.Int32Type,org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type)' and key_validation_class = UTF8Type and default_validation_class = UTF8Type; 2- Once created, it is empty. Below is the output of CLI: [default@Schema] list Rollup15; Using default limit of 100 0 Row Returned. Elapsed time: 16 msec(s). 3- I use the Code below to insert the Composite Data into Cassandra: public void insertData(String columnFamilyName, String key, String value, int rollupInterval, String... columnSlice) { Composite colKey = new Composite(); colKey.addComponent(rollupInterval, IntegerSerializer.get()); if (columnSlice != null){ for (String colName : columnSlice){ colKey.addComponent(colName, serializer); } } createMutator(keyspace, serializer).addInsertion(key, columnFamilyName, createColumn(colKey, value, new CompositeSerializer(), serializer)).execute(); } 4- After insertion, below is the CLI Output: [default@Schema] list Rollup15; Using default limit of 100 ------------------- RowKey: query1_1337295600 => (column=15:Composite1:Composite2, value=value123, timesta mp=1341879833470000) 1 Row Returned. Elapsed time: 9 msec(s). So, there is record with 3 Composite Keys (15, Composite1 and Composite2) 5- Now I am doing fetch based on Code Below. I am doing a fetch for column "15:Composite3" which I know it is not there: Composite start = new Composite(); start.addComponent(0, 15, Composite.ComponentEquality.EQUAL); start.addComponent(1, "Composite3",Composite.ComponentEquality.EQUAL); Composite finish = new Composite(); finish.addComponent(0, 15, Composite.ComponentEquality.EQUAL); finish.addComponent(1,"Composite3"+ Character.MAX_VALUE, Composite.ComponentEquality.GREATER_THAN_EQUAL); SliceQuery<String, Composite, String> sq = HFactory.createSliceQuery(keyspace, StringSerializer.get(), new CompositeSerializer(), StringSerializer.get()); sq.setColumnFamily("Rollup15"); sq.setKey("query1_1337295600"); sq.setRange(start, finish, false, 10000); QueryResult<ColumnSlice<Composite, String>> result = sq .execute(); ColumnSlice<Composite, String> orderedRows = result.get(); 6- And I get output for RowKey: query1_1337295600 as (column=15:Composite1:Composite2, value=value123, timesta mp=1341879833470000) which should not be the case since it does not belong to the 'Composite3' slice. Sunit. On Sun, Jul 8, 2012 at 11:45 AM, aaron morton <aa...@thelastpickle.com> wrote: > Something like: > > This is how I did the write in CLI and this is what it printed. > > and then > > This is how I did the read in the CLI and this is what it printed. > > It's hard to imagine what data is in cassandra based on code. > > cheers > > ----------------- > Aaron Morton > Freelance Developer > @aaronmorton > http://www.thelastpickle.com > > On 7/07/2012, at 1:28 PM, Sunit Randhawa wrote: > > Aaron, > > For writing, i am using cli. > Below is the piece of code that is reading column names of different types. > > > Composite start = new Composite(); > > start.addComponent(0, beginTime, > Composite.ComponentEquality.EQUAL); > > if (columns != null){ > int colCount =1; > for (String colName : columns){ > start.addComponent(colCount,colName,Composite.ComponentEquality.EQUAL); > colCount++; > } > } > > Composite finish = new Composite(); > finish.addComponent(0, endTime, > Composite.ComponentEquality.EQUAL); > > if (columns != null){ > int colCount =1; > for (String colName : columns){ > if (colCount == columns.size()) > finish.addComponent(colCount,colName+ Character.MAX_VALUE, > Composite.ComponentEquality.GREATER_THAN_EQUAL); > //Greater_than_equal is meant for any subslices to A:B:C if searched on A:B > else > finish.addComponent(colCount,colName,Composite.ComponentEquality.EQUAL); > colCount++; > } > } > SliceQuery<String, Composite, String> sq > = HFactory.createSliceQuery(keyspace, StringSerializer.get(), > new CompositeSerializer(), > StringSerializer.get()); > sq.setColumnFamily(columnFamilyName); > > sq.setKey(key); > logger.debug("Start:"+start+",finish:"+finish); > sq.setRange(start, finish, false, 10000); > > QueryResult<ColumnSlice<Composite, String>> result = sq > .execute(); > ColumnSlice<Composite, String> orderedRows = result.get(); > > Please let me know if you additional info. > > Thanks, > Sunit. > > On Fri, Jul 6, 2012 at 10:59 AM, aaron morton <aa...@thelastpickle.com> > wrote: > > Can you provide an example of writing and reading column names of a > > different type. > > > Thanks > > > ----------------- > > Aaron Morton > > Freelance Developer > > @aaronmorton > > http://www.thelastpickle.com > > > On 6/07/2012, at 11:30 AM, Sunit Randhawa wrote: > > > HI Aaron, > > > It is > > > create column family CF > > with comparator = > > 'CompositeType(org.apache.cassandra.db.marshal.Int32Type,org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type)' > > and key_validation_class = UTF8Type > > and default_validation_class = UTF8Type; > > > This is allowing me to insert column names of different type. > > > Thanks, > > Sunit. > > On Thu, Jul 5, 2012 at 4:24 PM, aaron morton <aa...@thelastpickle.com> > > wrote: > > > #2 has the Composite Column and #1 does not. > > > > They are both strings. > > > > All column names *must* be of the same type. What was your CF definition ? > > > > Cheers > > > > ----------------- > > > Aaron Morton > > > Freelance Developer > > > @aaronmorton > > > http://www.thelastpickle.com > > > > On 6/07/2012, at 7:26 AM, Sunit Randhawa wrote: > > > > Hello, > > > > I have 2 Columns for a 'RowKey' as below: > > > > #1 : set CF['RowKey']['1000']='A=1,B=2'; > > > #2: set CF['RowKey']['1000:C1']='A=2,B=3''; > > > > #2 has the Composite Column and #1 does not. > > > > Now when I execute the Composite Slice query by 1000 and C1, I do get > > > both the columns above. > > > > I am hoping get #2 only since I am specifically providing "C1" as > > > Start and Finish Composite Range with > > > Composite.ComponentEquality.EQUAL. > > > > > I am not sure if this is by design. > > > > Thanks, > > > Sunit. > > > > > >