mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-06 15:03:06 +00:00
Merge 'Fix parsing of initial tablets by ALTER' from Pavel Emelyanov
If the user wants to change the default initial tablets value, it uses ALTER KEYSPACE statement. However, specifying `WITH tablets = { initial: $value }` will take no effect, because statement analyzer only applies `tablets` parameters together with the `replication` ones, so the working statement should be `WITH replication = $old_parameters AND tablets = ...` which is not very convenient.
This PR changes the analyzer so that altering `tablets` happens independently from `replication`. Test included.
fixes: #18801
Closes scylladb/scylladb#18899
* github.com:scylladb/scylladb:
cql-pytest: Add validation of ALTER KEYSPACE WITH TABLETS
cql3: Fix parsing of ALTER KEYSPACE's tablets parameters
cql3: Remove unused ks_prop_defs/prepare_options() argument
This commit is contained in:
@@ -100,6 +100,20 @@ def test_alter_changes_initial_tablets(cql, skip_without_tablets):
|
||||
assert res.initial_tablets == 2
|
||||
|
||||
|
||||
def test_alter_changes_initial_tablets_short(cql, skip_without_tablets):
|
||||
ksdef = "WITH replication = {'class': 'NetworkTopologyStrategy', 'replication_factor': 1} AND tablets = {'initial': 1};"
|
||||
with new_test_keyspace(cql, ksdef) as keyspace:
|
||||
orig_rep = cql.execute(f"SELECT replication FROM system_schema.keyspaces WHERE keyspace_name = '{keyspace}'").one()
|
||||
|
||||
cql.execute(f"ALTER KEYSPACE {keyspace} WITH tablets = {{'initial': 2}};")
|
||||
res = cql.execute(f"SELECT * FROM system_schema.scylla_keyspaces WHERE keyspace_name = '{keyspace}'").one()
|
||||
assert res.initial_tablets == 2
|
||||
|
||||
# Test that replication parameters didn't change
|
||||
rep = cql.execute(f"SELECT replication FROM system_schema.keyspaces WHERE keyspace_name = '{keyspace}'").one()
|
||||
assert rep.replication == orig_rep.replication
|
||||
|
||||
|
||||
# Test that initial number of tablets is preserved in describe
|
||||
def test_describe_initial_tablets(cql, skip_without_tablets):
|
||||
ksdef = "WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'replication_factor' : '1' } " \
|
||||
|
||||
Reference in New Issue
Block a user