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

Cassandra IN clause for single partition key return duplicate rows

这是我的架构:

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

如果我运行关注查询:

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

Cassandra 将为我 return 3 行重复。在查询跟踪中,Cassandra 似乎对同一个分区执行了 3 次准备好的语句。

这是 Cassandra 的默认行为吗?

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

It seems like Cassandra execute the prepared statement to the same partition for 3 times in the query trace.

是的,这正是 CQL IN 语句的行为方式。这个问题对 Cassandra 造成了足够的混淆,因此在 2.2.0 中及时得到了解决。如果您在 Cassandra 2.2.0 中尝试此操作,您将看到 IN 现在可以正常运行。

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

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

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

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

(1 rows)