单个分区键的Cassandra IN子句返回重复行

时间:2015-10-16 01:24:41

标签: cassandra cql cql3

这是我的架构:

CREATE TABLE test (
 x int,
 y int,
 z int,
 PRIMARY KEY (x)
);

如果我运行以下查询:

select * from test where x in (1,1,1);

Cassandra将为我返回3个重复的行。似乎Cassandra在查询跟踪中将预准备语句执行到同一分区3次。

这是Cassandra的默认行为吗。

环境:[cqlsh 5.0.1 |卡桑德拉2.1.9 | CQL规范3.2.0 |原生协议v3]

1 个答案:

答案 0 :(得分:2)

  

似乎Cassandra执行准备好的声明   在查询跟踪中分区3次。

是的,这正是CQL IN语句的行为方式。这个问题引起了与Cassandra的充分混淆,它及时得到了2.2.0的解决。如果你在Cassandra 2.2.0中试试这个,你会发现IN现在可以正常运行了。

aploetz@stackoverflow> SELECT * FROM timestamptest WHERe userid IN ('b','b');

 userid | activetime               | value
--------------------------------------------
      b | 2015-09-03 14:16:04-0500 | value3

(1 rows)
aploetz@cqlsh:stackoverflow> SELECT release_version FROM system.local;

 release_version
-----------------
           2.2.0

(1 rows)