cassandrainvalidqueryexception——在set part中找到主键部分

tsm1rwdh  于 2021-07-09  发布在  Java
关注(0)|答案(0)|浏览(233)

物化视图不应该在allow过滤机制之上提供一个读优化层吗?因为下面的语句似乎符合cassandra的标准,但是我得到了一些异常,它们抱怨update语句影响了主键,主键应该只在表上,而不是mat视图上。
我用一列主键创建了一个表

cqlSession.execute(createTable(NAME).ifNotExists()
    .withPartitionKey(PKEY, DataTypes.TEXT)
    .withColumn(C1, DataTypes.TEXT)
    .withColumn(C2, DataTypes.TEXT)
    .withColumn(C3, DataTypes.TEXT)
    .build());

cqlSession.execute(createMaterializedView(MAT_NAME).ifNotExists()
    .selectFrom(NAME)
    .columns(PKEY, C1, C2, C3)
    .whereColumn(PKEY).isNotNull()
    .whereColumn(C1).isNotNull()
    .withPartitionKey(PKEY)
    .withClusteringColumn(C1)
    .build());

....

PreparedStatement ps = session.prepare(
    update(NAME).setColumn(C2, QueryBuilder.bindMarker())
        .whereColumn(C1).isEqualTo(QueryBuilder.bindMarker())
        .whereColumn(C2).isEqualTo(QueryBuilder.bindMarker())
        .ifExists()
        .build());

“ps”引发异常。根据我对cassandra驱动程序规范的阅读,这是不正确的。有人能解释一下吗?
java驱动程序4.11.0本机协议1.5.0 datastax cassandra版本4.1.10

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题