Cassandra的SASI索引似乎有一些错误

时间:2016-07-10 09:01:35

标签: cassandra secondary-indexes

我刚刚开始使用Cassandra 3.7.0上的SASI索引,我遇到了一个问题,我怀疑这是一个错误。我几乎没有找到错误出现的情况,这是我发现的:

使用SASI索引查询时,可能会错误地返回0行,并且更改一些条件,它会再次起作用,如下面的CQL代码:

CREATE TABLE IF NOT EXISTS roles (
    name text,
    a int,
    b int,
    PRIMARY KEY ((name, a), b)
) WITH CLUSTERING ORDER BY (b DESC);

insert into roles (name,a,b) values ('Joe',1,1);
insert into roles (name,a,b) values ('Joe',2,2);
insert into roles (name,a,b) values ('Joe',3,3);
insert into roles (name,a,b) values ('Joe',4,4);

CREATE TABLE IF NOT EXISTS roles2 (
    name text,
    a int,
    b int,
    PRIMARY KEY ((name, a), b)
) WITH CLUSTERING ORDER BY (b ASC);

insert into roles2 (name,a,b) values ('Joe',1,1);
insert into roles2 (name,a,b) values ('Joe',2,2);
insert into roles2 (name,a,b) values ('Joe',3,3);
insert into roles2 (name,a,b) values ('Joe',4,4);

CREATE CUSTOM INDEX ON roles (b) USING 'org.apache.cassandra.index.sasi.SASIIndex' 
WITH OPTIONS = { 'mode': 'SPARSE' };
CREATE CUSTOM INDEX ON roles2 (b) USING 'org.apache.cassandra.index.sasi.SASIIndex' 
WITH OPTIONS = { 'mode': 'SPARSE' };

注意到我只从表 角色 更改表 roles2 CLUSTERING ORDER BY(b DESC) '进入' CLUSTERING ORDER BY(b ASC) '。

使用语句select * from roles2 where b<3;查询时,rusult是两行:

 name | a | b
------+---+---
  Joe | 1 | 1
  Joe | 2 | 2

(2 rows)

但是,如果使用select * from roles where b<3;进行查询,则根本不会返回任何行:

 name | a | b
------+---+---

(0 rows)

这不是臭虫出现的唯一情况,有一次我在列'end'上创建了一个特定名称如'end_idx'的SASI索引,当我没有指定索引名称时出现错误它消失了。

请帮我确认一下这个错误,或者告诉我是否以错误的方式使用了SASI索引。

0 个答案:

没有答案