[jira] [Commented] (CASSANDRA-11513) Result set is not unique on primary key (cql)

2016-04-07 Thread Tianshi Wang (JIRA)

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

Tianshi Wang commented on CASSANDRA-11513:
--

Cassandra community is awesome! Should buy you a beer, Joel.

> Result set is not unique on primary key (cql) 
> --
>
> Key: CASSANDRA-11513
> URL: https://issues.apache.org/jira/browse/CASSANDRA-11513
> Project: Cassandra
>  Issue Type: Bug
>Reporter: Tianshi Wang
>Assignee: Joel Knighton
>
> [cqlsh 5.0.1 | Cassandra 3.4 | CQL spec 3.4.0 | Native protocol v4]
> Run followings,
> {code}
> drop table if exists test0;
> CREATE TABLE test0 (
> pk int,
> a int,
> b text,
> s text static,
> PRIMARY KEY (pk, a)
> );
> insert into test0 (pk,a,b,s) values (0,1,'b1','hello b1');
> insert into test0 (pk,a,b,s) values (0,2,'b2','hello b2');
> insert into test0 (pk,a,b,s) values (0,3,'b3','hello b3');
> create index on test0 (b);
> insert into test0 (pk,a,b,s) values (0,2,'b2 again','b2 again');
> {code}
> Now select one record based on primary key, we got all three records.
> {code}
> cqlsh:ops> select * from test0 where pk=0 and a=2;
>  pk | a | s| b
> +---+--+--
>   0 | 1 | b2 again |   b1
>   0 | 2 | b2 again | b2 again
>   0 | 3 | b2 again |   b3
> {code}
> {code}
> cqlsh:ops> desc test0;
> CREATE TABLE ops.test0 (
> pk int,
> a int,
> b text,
> s text static,
> PRIMARY KEY (pk, a)
> ) WITH CLUSTERING ORDER BY (a ASC)
> AND bloom_filter_fp_chance = 0.01
> AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
> AND comment = ''
> AND compaction = {'class': 
> 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 
> 'max_threshold': '32', 'min_threshold': '4'}
> AND compression = {'chunk_length_in_kb': '64', 'class': 
> 'org.apache.cassandra.io.compress.LZ4Compressor'}
> AND crc_check_chance = 1.0
> AND dclocal_read_repair_chance = 0.1
> AND default_time_to_live = 0
> AND gc_grace_seconds = 864000
> AND max_index_interval = 2048
> AND memtable_flush_period_in_ms = 0
> AND min_index_interval = 128
> AND read_repair_chance = 0.0
> AND speculative_retry = '99PERCENTILE';
> CREATE INDEX test0_b_idx ON ops.test0 (b);
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-11513) Result set is not unique on primary key (cql)

2016-04-07 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne commented on CASSANDRA-11513:
--

bq.  It seems to me that AbstractSSTableIterator doesn't correctly handle the 
case of empty slices in general

Agreed. Do you want to give a shot at a patch?

> Result set is not unique on primary key (cql) 
> --
>
> Key: CASSANDRA-11513
> URL: https://issues.apache.org/jira/browse/CASSANDRA-11513
> Project: Cassandra
>  Issue Type: Bug
>Reporter: Tianshi Wang
>
> [cqlsh 5.0.1 | Cassandra 3.4 | CQL spec 3.4.0 | Native protocol v4]
> Run followings,
> {code}
> drop table if exists test0;
> CREATE TABLE test0 (
> pk int,
> a int,
> b text,
> s text static,
> PRIMARY KEY (pk, a)
> );
> insert into test0 (pk,a,b,s) values (0,1,'b1','hello b1');
> insert into test0 (pk,a,b,s) values (0,2,'b2','hello b2');
> insert into test0 (pk,a,b,s) values (0,3,'b3','hello b3');
> create index on test0 (b);
> insert into test0 (pk,a,b,s) values (0,2,'b2 again','b2 again');
> {code}
> Now select one record based on primary key, we got all three records.
> {code}
> cqlsh:ops> select * from test0 where pk=0 and a=2;
>  pk | a | s| b
> +---+--+--
>   0 | 1 | b2 again |   b1
>   0 | 2 | b2 again | b2 again
>   0 | 3 | b2 again |   b3
> {code}
> {code}
> cqlsh:ops> desc test0;
> CREATE TABLE ops.test0 (
> pk int,
> a int,
> b text,
> s text static,
> PRIMARY KEY (pk, a)
> ) WITH CLUSTERING ORDER BY (a ASC)
> AND bloom_filter_fp_chance = 0.01
> AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
> AND comment = ''
> AND compaction = {'class': 
> 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 
> 'max_threshold': '32', 'min_threshold': '4'}
> AND compression = {'chunk_length_in_kb': '64', 'class': 
> 'org.apache.cassandra.io.compress.LZ4Compressor'}
> AND crc_check_chance = 1.0
> AND dclocal_read_repair_chance = 0.1
> AND default_time_to_live = 0
> AND gc_grace_seconds = 864000
> AND max_index_interval = 2048
> AND memtable_flush_period_in_ms = 0
> AND min_index_interval = 128
> AND read_repair_chance = 0.0
> AND speculative_retry = '99PERCENTILE';
> CREATE INDEX test0_b_idx ON ops.test0 (b);
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-11513) Result set is not unique on primary key (cql)

2016-04-06 Thread Joel Knighton (JIRA)

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

Joel Knighton commented on CASSANDRA-11513:
---

I looked into this because it looked interesting. [CASSANDRA-9986] removed the 
SliceableUnfilteredRowIterator. In 
{{SinglePartitionReadCommand.queryMemtablesAndSSTablesInTimestampOrder}} and 
also {{queryMemtablesAndDiskInternal}}, it switched from using 
{{ClusteringIndexFilter.filter}} to {{filter.getSlices}} and handing these 
slices to sstable.iterator. This caused the problem.

Before, if after reduceFilter we still needed to find a static and we had no 
clustering, the filter would make no attempt to read farther than the static 
row. Now, if clustering is empty, we produce no slices in {{getSlices}}, and so 
when the sstable gets an iterator, it never sets a slice for the reader and 
instead reads the whole partition. It seems to me that AbstractSSTableIterator 
doesn't correctly handle the case of empty slices in general and that we can 
reproduce this with a condition like {{a > 7 AND a < 5}}. I also think that the 
index was unrelated and only caused a flush to disk.

(There's probably some imprecision here, but that should get someone most of 
the way there.)

> Result set is not unique on primary key (cql) 
> --
>
> Key: CASSANDRA-11513
> URL: https://issues.apache.org/jira/browse/CASSANDRA-11513
> Project: Cassandra
>  Issue Type: Bug
>Reporter: Tianshi Wang
>
> [cqlsh 5.0.1 | Cassandra 3.4 | CQL spec 3.4.0 | Native protocol v4]
> Run followings,
> {code}
> drop table if exists test0;
> CREATE TABLE test0 (
> pk int,
> a int,
> b text,
> s text static,
> PRIMARY KEY (pk, a)
> );
> insert into test0 (pk,a,b,s) values (0,1,'b1','hello b1');
> insert into test0 (pk,a,b,s) values (0,2,'b2','hello b2');
> insert into test0 (pk,a,b,s) values (0,3,'b3','hello b3');
> create index on test0 (b);
> insert into test0 (pk,a,b,s) values (0,2,'b2 again','b2 again');
> {code}
> Now select one record based on primary key, we got all three records.
> {code}
> cqlsh:ops> select * from test0 where pk=0 and a=2;
>  pk | a | s| b
> +---+--+--
>   0 | 1 | b2 again |   b1
>   0 | 2 | b2 again | b2 again
>   0 | 3 | b2 again |   b3
> {code}
> {code}
> cqlsh:ops> desc test0;
> CREATE TABLE ops.test0 (
> pk int,
> a int,
> b text,
> s text static,
> PRIMARY KEY (pk, a)
> ) WITH CLUSTERING ORDER BY (a ASC)
> AND bloom_filter_fp_chance = 0.01
> AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
> AND comment = ''
> AND compaction = {'class': 
> 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 
> 'max_threshold': '32', 'min_threshold': '4'}
> AND compression = {'chunk_length_in_kb': '64', 'class': 
> 'org.apache.cassandra.io.compress.LZ4Compressor'}
> AND crc_check_chance = 1.0
> AND dclocal_read_repair_chance = 0.1
> AND default_time_to_live = 0
> AND gc_grace_seconds = 864000
> AND max_index_interval = 2048
> AND memtable_flush_period_in_ms = 0
> AND min_index_interval = 128
> AND read_repair_chance = 0.0
> AND speculative_retry = '99PERCENTILE';
> CREATE INDEX test0_b_idx ON ops.test0 (b);
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-11513) Result set is not unique on primary key (cql)

2016-04-06 Thread Joel Knighton (JIRA)

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

Joel Knighton commented on CASSANDRA-11513:
---

I bisected this, and it looks like this problem was introduced in 
[CASSANDRA-9986].

> Result set is not unique on primary key (cql) 
> --
>
> Key: CASSANDRA-11513
> URL: https://issues.apache.org/jira/browse/CASSANDRA-11513
> Project: Cassandra
>  Issue Type: Bug
>Reporter: Tianshi Wang
>
> [cqlsh 5.0.1 | Cassandra 3.4 | CQL spec 3.4.0 | Native protocol v4]
> Run followings,
> {code}
> drop table if exists test0;
> CREATE TABLE test0 (
> pk int,
> a int,
> b text,
> s text static,
> PRIMARY KEY (pk, a)
> );
> insert into test0 (pk,a,b,s) values (0,1,'b1','hello b1');
> insert into test0 (pk,a,b,s) values (0,2,'b2','hello b2');
> insert into test0 (pk,a,b,s) values (0,3,'b3','hello b3');
> create index on test0 (b);
> insert into test0 (pk,a,b,s) values (0,2,'b2 again','b2 again');
> {code}
> Now select one record based on primary key, we got all three records.
> {code}
> cqlsh:ops> select * from test0 where pk=0 and a=2;
>  pk | a | s| b
> +---+--+--
>   0 | 1 | b2 again |   b1
>   0 | 2 | b2 again | b2 again
>   0 | 3 | b2 again |   b3
> {code}
> {code}
> cqlsh:ops> desc test0;
> CREATE TABLE ops.test0 (
> pk int,
> a int,
> b text,
> s text static,
> PRIMARY KEY (pk, a)
> ) WITH CLUSTERING ORDER BY (a ASC)
> AND bloom_filter_fp_chance = 0.01
> AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
> AND comment = ''
> AND compaction = {'class': 
> 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 
> 'max_threshold': '32', 'min_threshold': '4'}
> AND compression = {'chunk_length_in_kb': '64', 'class': 
> 'org.apache.cassandra.io.compress.LZ4Compressor'}
> AND crc_check_chance = 1.0
> AND dclocal_read_repair_chance = 0.1
> AND default_time_to_live = 0
> AND gc_grace_seconds = 864000
> AND max_index_interval = 2048
> AND memtable_flush_period_in_ms = 0
> AND min_index_interval = 128
> AND read_repair_chance = 0.0
> AND speculative_retry = '99PERCENTILE';
> CREATE INDEX test0_b_idx ON ops.test0 (b);
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)