[ https://issues.apache.org/jira/browse/CASSANDRA-13302?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andy Tolbert updated CASSANDRA-13302: ------------------------------------- Description: Apologies if this is a duplicate (couldn't track down an existing bug). Similarly to [CASSANDRA-11208], it appears it is possible to retrieve duplicate rows when paging using a SASI index as documented in [JAVA-1413|https://datastax-oss.atlassian.net/browse/JAVA-1413], the following test demonstrates that data is repeated while querying using a SASI index: {code:java} public class TestPagingBug { public static void main(String[] args) { Cluster.Builder builder = Cluster.builder(); Cluster c = builder.addContactPoints("192.168.98.190").build(); Session s = c.connect(); s.execute("CREATE KEYSPACE IF NOT EXISTS test WITH replication = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 }"); s.execute("CREATE TABLE IF NOT EXISTS test.test_table_sec(sec BIGINT PRIMARY KEY, id INT)"); //create secondary index on ID column, used for select statement String index = "CREATE CUSTOM INDEX test_table_sec_idx ON test.test_table_sec (id) USING 'org.apache.cassandra.index.sasi.SASIIndex' " + "WITH OPTIONS = { 'mode': 'PREFIX' }"; s.execute(index); PreparedStatement insert = s.prepare("INSERT INTO test.test_table_sec (id, sec) VALUES (1, ?)"); for (int i = 0; i < 1000; i++) s.execute(insert.bind((long) i)); PreparedStatement select = s.prepare("SELECT sec FROM test.test_table_sec WHERE id = 1"); long lastSec = -1; for (Row row : s.execute(select.bind().setFetchSize(300))) { long sec = row.getLong("sec"); if (sec == lastSec) System.out.println(String.format("Duplicated id %d", sec)); lastSec = sec; } System.exit(0); } } {code} was: Apologies if this is a duplicate (couldn't track down an existing bug). Similarly to [CASSANDRA-11208], it appears it is possible to retrieve duplicate rows when paging using a SASI index as documented in [JAVA-1362|https://datastax-oss.atlassian.net/browse/JAVA-1362], the following test demonstrates that data is repeated while querying using a SASI index: {code:java} public class TestPagingBug { public static void main(String[] args) { Cluster.Builder builder = Cluster.builder(); Cluster c = builder.addContactPoints("192.168.98.190").build(); Session s = c.connect(); s.execute("CREATE KEYSPACE IF NOT EXISTS test WITH replication = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 }"); s.execute("CREATE TABLE IF NOT EXISTS test.test_table_sec(sec BIGINT PRIMARY KEY, id INT)"); //create secondary index on ID column, used for select statement String index = "CREATE CUSTOM INDEX test_table_sec_idx ON test.test_table_sec (id) USING 'org.apache.cassandra.index.sasi.SASIIndex' " + "WITH OPTIONS = { 'mode': 'PREFIX' }"; s.execute(index); PreparedStatement insert = s.prepare("INSERT INTO test.test_table_sec (id, sec) VALUES (1, ?)"); for (int i = 0; i < 1000; i++) s.execute(insert.bind((long) i)); PreparedStatement select = s.prepare("SELECT sec FROM test.test_table_sec WHERE id = 1"); long lastSec = -1; for (Row row : s.execute(select.bind().setFetchSize(300))) { long sec = row.getLong("sec"); if (sec == lastSec) System.out.println(String.format("Duplicated id %d", sec)); lastSec = sec; } System.exit(0); } } {code} > last row of previous page == first row of next page while querying data using > SASI index > ---------------------------------------------------------------------------------------- > > Key: CASSANDRA-13302 > URL: https://issues.apache.org/jira/browse/CASSANDRA-13302 > Project: Cassandra > Issue Type: Bug > Environment: Tested with C* 3.9 and 3.10. > Reporter: Andy Tolbert > > Apologies if this is a duplicate (couldn't track down an existing bug). > Similarly to [CASSANDRA-11208], it appears it is possible to retrieve > duplicate rows when paging using a SASI index as documented in > [JAVA-1413|https://datastax-oss.atlassian.net/browse/JAVA-1413], the > following test demonstrates that data is repeated while querying using a SASI > index: > {code:java} > public class TestPagingBug > { > public static void main(String[] args) > { > Cluster.Builder builder = Cluster.builder(); > Cluster c = builder.addContactPoints("192.168.98.190").build(); > > Session s = c.connect(); > > s.execute("CREATE KEYSPACE IF NOT EXISTS test WITH replication > = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 }"); > s.execute("CREATE TABLE IF NOT EXISTS test.test_table_sec(sec > BIGINT PRIMARY KEY, id INT)"); > //create secondary index on ID column, used for select > statement > String index = "CREATE CUSTOM INDEX test_table_sec_idx ON > test.test_table_sec (id) USING 'org.apache.cassandra.index.sasi.SASIIndex' " > + "WITH OPTIONS = { 'mode': 'PREFIX' }"; > s.execute(index); > > PreparedStatement insert = s.prepare("INSERT INTO > test.test_table_sec (id, sec) VALUES (1, ?)"); > for (int i = 0; i < 1000; i++) > s.execute(insert.bind((long) i)); > > PreparedStatement select = s.prepare("SELECT sec FROM > test.test_table_sec WHERE id = 1"); > > long lastSec = -1; > for (Row row : s.execute(select.bind().setFetchSize(300))) > { > long sec = row.getLong("sec"); > if (sec == lastSec) > System.out.println(String.format("Duplicated id > %d", sec)); > > lastSec = sec; > } > System.exit(0); > } > } > {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)