You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jianing hu (JIRA)" <ji...@apache.org> on 2010/10/07 02:12:31 UTC
[jira] Updated: (CASSANDRA-1591) get_range_slices always returns
super columns that's been removed/restored, regardless of count value in
slicerange
[ https://issues.apache.org/jira/browse/CASSANDRA-1591?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jianing hu updated CASSANDRA-1591:
----------------------------------
Attachment: test.pl
> get_range_slices always returns super columns that's been removed/restored, regardless of count value in slicerange
> -------------------------------------------------------------------------------------------------------------------
>
> Key: CASSANDRA-1591
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1591
> Project: Cassandra
> Issue Type: Bug
> Affects Versions: 0.6.4
> Environment: CentOS 5.4, single Cassandra node
> Reporter: Jianing hu
> Attachments: test.pl
>
>
> I'm seeing cases where the count in slicerange predicate is not respected. This is only happening for super columns. I'm running Cassandra 0.6.4 in a single node.
> Steps to reproduce, using the Keyspace1.Super1 CF:
> * insert three super columns, bar1 bar 2, and bar3, under the same key
> * delete bar1
> * insert bar1 again
> * run a get_range_slices on Super1, with start=bar1, finish=bar3, and count=1
> * I expected only bar1 to be returned, but both both bar1 and bar2 are returned. bar3 isn't, though. so count is somewhat respected.
> perl code to reproduce follows:
> #!/usr/bin/perl
> use strict;
> use Data::Dumper;
> use Net::Cassandra;
> my $key = 10;
> my $cs = new Net::Cassandra( hostname => 'localhost' )->client;
> my $ts = time;
> $cs->batch_mutate(
> 'Keyspace1',
> {
> $key => {
> Super1 => [
> new Net::Cassandra::Backend::Mutation({
> column_or_supercolumn => new Net::Cassandra::Backend::ColumnOrSuperColumn({
> super_column => new Net::Cassandra::Backend::SuperColumn({
> name => 'bar1',
> columns => [
> new Net::Cassandra::Backend::Column({
> name => 'foo1',
> value => 'foo1',
> timestamp => $ts++
> })
> ]
> })
> })
> }),
> new Net::Cassandra::Backend::Mutation({
> column_or_supercolumn => new Net::Cassandra::Backend::ColumnOrSuperColumn({
> super_column => new Net::Cassandra::Backend::SuperColumn({
> name => 'bar2',
> columns => [
> new Net::Cassandra::Backend::Column({
> name => 'foo1',
> value => 'foo1',
> timestamp => $ts++
> })
> ]
> })
> })
> }),
> new Net::Cassandra::Backend::Mutation({
> column_or_supercolumn => new Net::Cassandra::Backend::ColumnOrSuperColumn({
> super_column => new Net::Cassandra::Backend::SuperColumn({
> name => 'bar3',
> columns => [
> new Net::Cassandra::Backend::Column({
> name => 'foo1',
> value => 'foo1',
> timestamp => $ts++
> })
> ]
> })
> })
> })
> ]
> }
> },
> Net::Cassandra::Backend::ConsistencyLevel::ONE
> );
> warn 'with fresh data';
> # expect bar1
> warn Dumper $cs->get_range_slices(
> 'Keyspace1',
> new Net::Cassandra::Backend::ColumnParent({
> column_family => 'Super1',
> }),
> new Net::Cassandra::Backend::SlicePredicate({
> slice_range => new Net::Cassandra::Backend::SliceRange({
> start => 'bar1',
> finish => 'bar3',
> count => 1
> })
> }),
> new Net::Cassandra::Backend::KeyRange({
> start_key => $key,
> end_key => $key,
> count => 1
> }),
> Net::Cassandra::Backend::ConsistencyLevel::ONE
> );
> $cs->remove(
> 'Keyspace1',
> $key,
> new Net::Cassandra::Backend::ColumnPath({
> column_family => 'Super1',
> super_column => 'bar1'
> }),
> $ts++,
> Net::Cassandra::Backend::ConsistencyLevel::ONE
> );
> 'warn after delete';
> # expect bar2
> warn Dumper $cs->get_range_slices(
> 'Keyspace1',
> new Net::Cassandra::Backend::ColumnParent({
> column_family => 'Super1',
> }),
> new Net::Cassandra::Backend::SlicePredicate({
> slice_range => new Net::Cassandra::Backend::SliceRange({
> start => 'bar1',
> finish => 'bar3',
> count => 1
> })
> }),
> new Net::Cassandra::Backend::KeyRange({
> start_key => $key,
> end_key => $key,
> count => 1
> }),
> Net::Cassandra::Backend::ConsistencyLevel::ONE
> );
> $cs->batch_mutate(
> 'Keyspace1',
> {
> $key => {
> Super1 => [
> new Net::Cassandra::Backend::Mutation({
> column_or_supercolumn => new Net::Cassandra::Backend::ColumnOrSuperColumn({
> super_column => new Net::Cassandra::Backend::SuperColumn({
> name => 'bar1',
> columns => [
> new Net::Cassandra::Backend::Column({
> name => 'foo1',
> value => 'foo1',
> timestamp => $ts++
> })
> ]
> })
> })
> }),
> ]
> }
> },
> Net::Cassandra::Backend::ConsistencyLevel::ONE
> );
> warn 'after restore data';
> # expect bar1, but get both bar1 and bar2, not bar3, though. so count is somewhat respected.
> warn Dumper $cs->get_range_slices(
> 'Keyspace1',
> new Net::Cassandra::Backend::ColumnParent({
> column_family => 'Super1',
> }),
> new Net::Cassandra::Backend::SlicePredicate({
> slice_range => new Net::Cassandra::Backend::SliceRange({
> start => 'bar1',
> finish => 'bar3',
> count => 1
> })
> }),
> new Net::Cassandra::Backend::KeyRange({
> start_key => $key,
> end_key => $key,
> count => 1
> }),
> Net::Cassandra::Backend::ConsistencyLevel::ONE
> );
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.