[
https://issues.apache.org/jira/browse/CASSANDRA-11603?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15247876#comment-15247876
]
Benjamin Lerer commented on CASSANDRA-11603:
--------------------------------------------
|[trunk|https://github.com/apache/cassandra/compare/trunk...blerer:11603-trunk]
| [utests|http://cassci.datastax.com/job/blerer-11603-trunk-testall/2/] |
[dtests|http://cassci.datastax.com/job/blerer-11603-trunk-dtest/2/]|
The patch fix 2 problems:
# {{SinglePartitionPager}} was not passing the number or remaining rows to
fetch from the partition to the {{DataLimits}}
# {{MultiPartitionPager}} was not setting properly the number of remaining rows
in the current partition in the {{PagingState}}
The DTests did not catch the problem because the page size was not set properly
(the Dtest was always using the default page size). The DTest PR is
[here|https://github.com/riptano/cassandra-dtest/pull/934]
> PER PARTITION LIMIT does not work properly for SinglePartition
> --------------------------------------------------------------
>
> Key: CASSANDRA-11603
> URL: https://issues.apache.org/jira/browse/CASSANDRA-11603
> Project: Cassandra
> Issue Type: Bug
> Reporter: Benjamin Lerer
> Assignee: Benjamin Lerer
> Fix For: 3.x
>
>
> When the {{PER PARTITION LIMIT}} is greater than the page size the limit is
> not respected for single or multi partitions queries.
> The problem can be reproduced using the java driver with the following code:
> {code}
> session = cluster.connect();
> session.execute("CREATE KEYSPACE IF NOT EXISTS test WITH REPLICATION
> = {'class' : 'SimpleStrategy', 'replication_factor' : '1'}");
> session.execute("USE test");
> session.execute("DROP TABLE IF EXISTS test");
> session.execute("CREATE TABLE IF NOT EXISTS test (a int, b int, c
> int, PRIMARY KEY(a, b))");
> PreparedStatement prepare = session.prepare("INSERT INTO test (a, b,
> c) VALUES (?, ?, ?);");
> for (int i = 0; i < 5; i++)
> for (int j = 0; j < 10; j++)
> session.execute(prepare.bind(i, j, i + j));
> ResultSet rs = session.execute(session.newSimpleStatement("SELECT *
> FROM test WHERE a = 1 PER PARTITION LIMIT 3")
> .setFetchSize(2));
> for (Row row : rs)
> {
> System.out.println(row);
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)