Drop the AGPL license in favor of a source-available license. See the blog post [1] for details. [1] https://www.scylladb.com/2024/12/18/why-were-moving-to-a-source-available-license/
38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
# Copyright 2020-present ScyllaDB
|
|
#
|
|
# SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.0
|
|
|
|
from .util import new_test_table
|
|
from cassandra.query import SimpleStatement
|
|
import pytest
|
|
from . import nodetool
|
|
|
|
# Test that the _stop flag set in the compactor at the end of a page is not
|
|
# sticky and doesn't remain set on the following page. If it does it can cause
|
|
# the next page (and consequently the entire query) to be terminated prematurely.
|
|
# This can happen if the code path on the very first consumed fragment doesn't
|
|
# reset this flag. Currently this is the case for rows completely covered by a
|
|
# higher level tombstone.
|
|
def test_sticky_stop_flag(cql, test_keyspace):
|
|
with new_test_table(cql, test_keyspace, 'pk int, ck int, v int, PRIMARY KEY (pk, ck)') as table:
|
|
insert_row_id = cql.prepare(f"INSERT INTO {table} (pk, ck, v) VALUES (?, ?, ?)")
|
|
|
|
pk = 0
|
|
|
|
# Flush the row to disk, to prevent it being compacted away in the
|
|
# memtable upon writing the partition tombstone.
|
|
cql.execute(insert_row_id, (pk, 100, 0))
|
|
nodetool.flush(cql, table)
|
|
cql.execute(f"DELETE FROM {table} WHERE pk = {pk}")
|
|
|
|
for ck in range(0, 200):
|
|
if ck == 100:
|
|
continue
|
|
cql.execute(insert_row_id, (pk, ck, 0))
|
|
|
|
statement = SimpleStatement(f"SELECT * FROM {table} WHERE pk = {pk}", fetch_size=100)
|
|
|
|
res = list(cql.execute(statement))
|
|
|
|
assert len(res) == 199
|