单个分区键 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)
这是我的架构:
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)