I'm new to Cassandra and have run into a problem that I think is a bug, but wanted to get some feedback in case I'm misunderstanding something.
I've found that when I delete an entire row in a column family with super columns, and then re-insert values with the same row and super column keys, the count parameter to the get_slice call no longer works properly. Its like it is still counting the deleted columns, but only returning the new columns. The following example uses the Ruby Cassandra client (see link below), but I've seen the same behavior with the Java Thrift interface. 1) First I create a client and insert a super column with three columns: >> require 'cassandra' => true >> cc = Cassandra.new('Keyspace1') => #<Cassandra:2159536540, @keyspace="Keyspace1", @schema={}, @servers=["127.0.0.1:9160"]> >> cc.insert(:Super1,'test1',{'bucket1' => {'1' => 'Item 1', '2' => 'Item 2', >> '5' => 'Item 5'}}) => nil 2) Getting the slice of columns just inserted works with or without the count parameter: >> cc.get(:Super1,'test1','bucket1') => #<OrderedHash {"1"=>"Item 1", "2"=>"Item 2", "5"=>"Item 5"}> >> cc.get(:Super1,'test1','bucket1',:count => 3) => #<OrderedHash {"1"=>"Item 1", "2"=>"Item 2", "5"=>"Item 5"}> 3) Now I remove the row: >> cc.remove(:Super1,'test1') => nil 4) And confirm that nothing's left: >> cc.get(:Super1,'test1','bucket1') => #<OrderedHash {}> 5) Next I insert 3 different columns using the same row and super column keys: >> cc.insert(:Super1,'test1',{'bucket1' => {'3' => 'Item 3', '4' => 'Item 4', >> '6' => 'Item 6'}}) => nil 6) Getting the slice of columns works correctly with no count parameter: >> cc.get(:Super1,'test1','bucket1') => #<OrderedHash {"6"=>"Item 6", "3"=>"Item 3", "4"=>"Item 4"}> 7) But setting the count parameter to 3 returns fewer than 3 columns: >> cc.get(:Super1,'test1','bucket1',:count => 3) => #<OrderedHash {"3"=>"Item 3"}> 8) Incrementally increasing the count parameter confirms the apparent behavior of counting the deleted columns: >> cc.get(:Super1,'test1','bucket1',:count => 4) => #<OrderedHash {"3"=>"Item 3", "4"=>"Item 4"}> >> cc.get(:Super1,'test1','bucket1',:count => 5) => #<OrderedHash {"3"=>"Item 3", "4"=>"Item 4"}> 9) I have to set the count to 6 to return all 3 columns: >> cc.get(:Super1,'test1','bucket1',:count => 6) => #<OrderedHash {"6"=>"Item 6", "3"=>"Item 3", "4"=>"Item 4"}> The same thing doesn't happen when I remove only the super column key ('bucket1'). Here's the reference to the Ruby client I used for the example, but the problem is not client specific. http://blog.evanweaver.com/files/doc/fauna/cassandra/files/README_rdoc.html