这是我的架构:
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]
答案 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)