David Capwell created CASSANDRA-20261:
-----------------------------------------
Summary: Accord interop missing data when using token BETWEEN
clause with paging
Key: CASSANDRA-20261
URL: https://issues.apache.org/jira/browse/CASSANDRA-20261
Project: Apache Cassandra
Issue Type: Bug
Components: Accord
Reporter: David Capwell
Assignee: Ariel Weisberg
This was found by CASSANDRA-20156
The error seen is
{code}
History:
27: SELECT * FROM ks1.tbl WHERE token(pk0, pk1) BETWEEN token(-32122,
7789509855040785323) AND token(28586, -689252365883560887) — on node1, fetch
size 1
Caused by: java.lang.AssertionError: Missing rows:
pk0 | pk1 | ck0 | ck1 | s0
| v0 | v1
| v2 | v3 | v4
28586 | -689252365883560887 | 381940688 | '01:49:42.520527694' |
'1976-09-08T16:06:37.234Z' | '=\u0019Z\u0004\u007F\u00029\u0011SF\u0009' |
'08:14:46.465399615' | '03:07:03.151389558' | -17377 |
0x00000000000016009900000000000000
Expected:
pk0 | pk1 | ck0 | ck1 | s0
| v0 | v1
| v2 | v3 | v4
28586 | -689252365883560887 | 381940688 | '01:49:42.520527694' |
'1976-09-08T16:06:37.234Z' | '=\u0019Z\u0004\u007F\u00029\u0011SF\u0009' |
'08:14:46.465399615' | '03:07:03.151389558' | -17377 |
0x00000000000016009900000000000000
-32122 | 7789509855040785323 | -273245539 | '22:57:17.784557626' |
'2020-08-10T10:02:26.981Z' | null | null
| null | null | null
{code}
Here is a test that repos the issue
{code}
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.cassandra.distributed.test.cql3;
import java.io.IOException;
import java.util.function.Consumer;
import org.junit.Test;
import com.datastax.driver.core.SimpleStatement;
import org.apache.cassandra.distributed.Cluster;
import org.apache.cassandra.distributed.api.ConsistencyLevel;
import org.apache.cassandra.distributed.test.JavaDriverUtils;
import org.apache.cassandra.service.consensus.TransactionalMode;
import org.assertj.core.api.Assertions;
public class AccordInteropRepoTest extends StatefulASTBase
{
@Test
public void test() throws IOException
{
ConsistencyLevel selectCl = ConsistencyLevel.QUORUM;
ConsistencyLevel mutationCl = ConsistencyLevel.QUORUM;
try (Cluster cluster = createCluster(1, i -> {
});
var driver = JavaDriverUtils.create(cluster);
var session = driver.connect())
{
cluster.schemaChange("CREATE KEYSPACE IF NOT EXISTS ks1 WITH
replication = {'class': 'SimpleStrategy', 'replication_factor': 1};");
cluster.schemaChange("CREATE TABLE ks1.tbl (\n" +
"\t\t pk0 smallint,\n" +
"\t\t pk1 bigint,\n" +
"\t\t ck0 int,\n" +
"\t\t ck1 time,\n" +
"\t\t s0 timestamp static,\n" +
"\t\t v0 ascii,\n" +
"\t\t v1 time,\n" +
"\t\t v2 time,\n" +
"\t\t v3 smallint,\n" +
"\t\t v4
'org.apache.cassandra.db.marshal.LexicalUUIDType',\n" +
"\t\t PRIMARY KEY ((pk0, pk1), ck0, ck1)\n"
+
"\t\t) WITH CLUSTERING ORDER BY (ck0 DESC, ck1
DESC) AND " + TransactionalMode.full.asCqlParam());
cluster.schemaChange("CREATE INDEX tbl_pk0 ON ks1.tbl(pk0) USING
'SAI';");
cluster.schemaChange("CREATE CUSTOM INDEX tbl_pk1 ON ks1.tbl(pk1)
USING 'StorageAttachedIndex';");
cluster.schemaChange("CREATE CUSTOM INDEX tbl_ck0 ON ks1.tbl(ck0)
USING 'StorageAttachedIndex';");
cluster.schemaChange("CREATE CUSTOM INDEX tbl_ck1 ON ks1.tbl(ck1)
USING 'StorageAttachedIndex';");
cluster.schemaChange("CREATE CUSTOM INDEX tbl_s0 ON ks1.tbl(s0)
USING 'StorageAttachedIndex';");
cluster.schemaChange("CREATE CUSTOM INDEX tbl_v0 ON ks1.tbl(v0)
USING 'StorageAttachedIndex';");
cluster.schemaChange("CREATE INDEX tbl_v1 ON ks1.tbl(v1) USING
'SAI';");
cluster.schemaChange("CREATE CUSTOM INDEX tbl_v2 ON ks1.tbl(v2)
USING 'StorageAttachedIndex';");
cluster.schemaChange("CREATE CUSTOM INDEX tbl_v3 ON ks1.tbl(v3)
USING 'StorageAttachedIndex';");
cluster.forEach(i -> i.nodetoolResult("disableautocompaction",
"ks1", "tbl").asserts().success());
Consumer<String> write = cql -> cluster.coordinator(1).execute(cql,
mutationCl);
write.accept("INSERT INTO ks1.tbl (pk0, pk1, ck0, ck1, s0, v0, v1,
v2, v3, v4) VALUES (-17452, -6103194810008652995, -354072026 + 1793215453,
'23:19:05.460737920', '2014-01-21T10:53:28.054Z', '\\u001BH\\u007F',
'07:17:36.531643764', '06:45:54.792974856', -1158 + 19412,
0x0000000000004c00a200000000000000)");
write.accept("INSERT INTO ks1.tbl (pk0, pk1, ck0, ck1, s0, v0, v1,
v2, v3, v4) VALUES (26923, -8466366874082863244, 1879756201 * 419234983,
'11:47:28.493772899', '2022-08-28T18:51:39.439Z',
'?T0\\u000Fw\\u000C7\\u0010`', '20:26:38.241088346', '20:23:19.706516131',
-9817, 0x00000000000011008600000000000000)");
write.accept("UPDATE ks1.tbl SET s0='2063-02-08T21:19:42.290Z',
v0='Nk0D\\u0012\\u0004', v1='01:25:12.540180030', v2='16:26:46.736998227',
v3=28123, v4=0x0000000000004e00bf00000000000000 WHERE pk0 = -8659 AND pk1 =
8543055738605711691 AND ck0 = -1156127192 * -1114559982 AND ck1 =
'20:39:13.541952208'");
write.accept("DELETE FROM ks1.tbl WHERE pk0 = 26923 AND pk1 =
-8466366874082863244 AND ck0 = -1585009096 - 582726325 AND ck1 =
'06:37:47.310859750'");
write.accept("DELETE FROM ks1.tbl WHERE pk0 = -2508 AND pk1 =
-5268494056692095125");
write.accept("DELETE FROM ks1.tbl WHERE pk0 = 28586 AND pk1 =
-689252365883560887");
write.accept("DELETE FROM ks1.tbl WHERE pk0 = -17452 AND pk1 =
-6103194810008652995");
write.accept("INSERT INTO ks1.tbl (pk0, pk1, ck0, ck1, v0, v1, v2)
VALUES (-8659, 8543055738605711691, -965580267 - -349362501,
'13:13:21.358675464', '\\u0013P' + ')0R\\u0008[U\\u0002\\u000C',
'00:22:58.129668768', '19:49:09.962483656')");
write.accept("INSERT INTO ks1.tbl (pk0, pk1, ck0, ck1, s0, v0, v1,
v2, v3, v4) VALUES (-8659, 8543055738605711691, -1879407340,
'20:38:24.079426657', '1976-06-15T16:22:29.714Z', '\\u0001' +
'\\u0002g8\\u0017\\u0000kl', '23:44:14.518757788', '02:54:00.877709004',
-26658, 0x0000000000001200b300000000000000)");
write.accept("UPDATE ks1.tbl SET s0='2033-12-12T19:40:35.649Z',
v0='v`.?\\u0000\\u0014' + '[1M\\u0019eF7', v1='09:28:48.224043017',
v2='14:44:17.130879183', v3=-8918, v4=0x0000000000004600ae00000000000000 WHERE
pk0 = -8659 AND pk1 = 8543055738605711691 AND ck0 = 388614112 AND ck1 =
'03:05:25.312567300'");
write.accept("UPDATE ks1.tbl SET v1='09:36:18.985071344' WHERE pk0
= 15987 AND pk1 = 5017545377567663076 AND ck0 = -1647371007 + -564597002 AND
ck1 = '18:07:46.525252651'");
write.accept("INSERT INTO ks1.tbl (pk0, pk1, ck0, ck1, s0) VALUES
(-32122, 7789509855040785323, -273245539, '22:57:17.784557626',
'2020-08-10T10:02:26.981Z')");
write.accept("INSERT INTO ks1.tbl (pk0, pk1, ck0, ck1, v0) VALUES
(26923, -8466366874082863244, -1931533321 - 392089785, '02:30:47.533658323',
'fL\" ')");
write.accept("UPDATE ks1.tbl SET v0=',''.\\u0009' + '}',
v1='03:06:20.331155886', v2='19:12:05.972164203', v3=21166 * 22367,
v4=0x0000000000001500b200000000000000, s0='2055-12-07T12:03:29.428Z' WHERE pk0
= -14794 AND pk1 = 8575482787026083770 AND ck0 = -1572042742 * 1166090660 AND
ck1 = '13:31:07.217959809'");
write.accept("UPDATE ks1.tbl SET v0='kC^\\u001A2' +
'\\u001C66nw7/', v1='00:14:42.540873077', v2='13:40:25.648481128', v3=-31029 *
-24644, v4=0x0000000000004a009200000000000000, s0='2059-07-29T20:06:04.031Z'
WHERE pk0 = 26923 AND pk1 = -8466366874082863244 AND ck0 = 1632828752 AND
ck1 = '22:24:59.313920070'");
write.accept("UPDATE ks1.tbl SET v0='=\\u0019Z' +
'\\u0004\\u007F\\u00029\\u0011SF\\u0009', v1='08:14:46.465399615',
v2='03:07:03.151389558', v3=-28611 + 11234,
v4=0x00000000000016009900000000000000, s0='1976-09-08T16:06:37.234Z' WHERE pk0
= 28586 AND pk1 = -689252365883560887 AND ck0 = 381940688 AND ck1 =
'01:49:42.520527694'");
write.accept("DELETE FROM ks1.tbl WHERE pk0 = -14794 AND pk1 =
8575482787026083770 AND ck0 = -1969142593 * -1928185285 AND ck1 =
'06:27:48.954717326'");
write.accept("DELETE FROM ks1.tbl WHERE pk0 = 28586 AND pk1 =
-689252365883560887 AND ck0 = 397777120 - -1843773161 AND ck1 =
'23:32:54.375819231'");
SimpleStatement stmt = new SimpleStatement("SELECT * FROM ks1.tbl
WHERE token(pk0, pk1) BETWEEN token(-32122, 7789509855040785323) AND
token(28586, -689252365883560887)");
stmt.setConsistencyLevel(JavaDriverUtils.toDriverCL(selectCl));
stmt.setFetchSize(1);
var result =
StatefulASTBase.BaseState.getRowsAsByteBuffer(session.execute(stmt));
/*
Caused by: java.lang.AssertionError: Missing rows:
pk0 | pk1 | ck0 | ck1 | s0
| v0 | v1
| v2 | v3 | v4
28586 | -689252365883560887 | 381940688 | '01:49:42.520527694' |
'1976-09-08T16:06:37.234Z' | '=\u0019Z\u0004\u007F\u00029\u0011SF\u0009' |
'08:14:46.465399615' | '03:07:03.151389558' | -17377 |
0x00000000000016009900000000000000
Expected:
pk0 | pk1 | ck0 | ck1 | s0
| v0 | v1
| v2 | v3 | v4
28586 | -689252365883560887 | 381940688 | '01:49:42.520527694' |
'1976-09-08T16:06:37.234Z' | '=\u0019Z\u0004\u007F\u00029\u0011SF\u0009' |
'08:14:46.465399615' | '03:07:03.151389558' | -17377 |
0x00000000000016009900000000000000
-32122 | 7789509855040785323 | -273245539 | '22:57:17.784557626' |
'2020-08-10T10:02:26.981Z' | null | null
| null | null | null
*/
Assertions.assertThat(result).hasDimensions(2, 10);
}
}
}
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]