首页 文章

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

提问于
浏览
1

这是我的架构:

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 | Cassandra 2.1.9 | CQL规范3.2.0 |原生协议v3]

1 回答

  • 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)
    

相关问题