diff --git a/cql3/statements/create_keyspace_statement.cc b/cql3/statements/create_keyspace_statement.cc index ea05afa8c2..38f6f149eb 100644 --- a/cql3/statements/create_keyspace_statement.cc +++ b/cql3/statements/create_keyspace_statement.cc @@ -92,11 +92,12 @@ void create_keyspace_statement::validate(query_processor& qp, const service::cli future, std::vector, cql3::cql_warnings_vec>> create_keyspace_statement::prepare_schema_mutations(query_processor& qp, api::timestamp_type ts) const { using namespace cql_transport; const auto& tm = *qp.proxy().get_token_metadata_ptr(); + const auto& feat = qp.proxy().features(); ::shared_ptr ret; std::vector m; try { - m = service::prepare_new_keyspace_announcement(qp.db().real_database(), _attrs->as_ks_metadata(_name, tm), ts); + m = service::prepare_new_keyspace_announcement(qp.db().real_database(), _attrs->as_ks_metadata(_name, tm, feat), ts); ret = ::make_shared( event::schema_change::change_type::CREATED, @@ -257,7 +258,7 @@ create_keyspace_statement::execute(query_processor& qp, service::query_state& st lw_shared_ptr create_keyspace_statement::get_keyspace_metadata(const locator::token_metadata& tm, const gms::feature_service& feat) { _attrs->validate(); - return _attrs->as_ks_metadata(_name, tm); + return _attrs->as_ks_metadata(_name, tm, feat); } } diff --git a/cql3/statements/ks_prop_defs.cc b/cql3/statements/ks_prop_defs.cc index 4de48c1d05..7ebe90cf9b 100644 --- a/cql3/statements/ks_prop_defs.cc +++ b/cql3/statements/ks_prop_defs.cc @@ -157,7 +157,7 @@ std::optional ks_prop_defs::get_replication_strategy_class() const { return _strategy_class; } -lw_shared_ptr ks_prop_defs::as_ks_metadata(sstring ks_name, const locator::token_metadata& tm) { +lw_shared_ptr ks_prop_defs::as_ks_metadata(sstring ks_name, const locator::token_metadata& tm, const gms::feature_service& feat) { auto sc = get_replication_strategy_class().value(); std::optional initial_tablets = get_initial_tablets(sc); auto options = prepare_options(sc, tm, get_replication_options(), initial_tablets); diff --git a/cql3/statements/ks_prop_defs.hh b/cql3/statements/ks_prop_defs.hh index cc8334c768..1a00223cda 100644 --- a/cql3/statements/ks_prop_defs.hh +++ b/cql3/statements/ks_prop_defs.hh @@ -25,6 +25,8 @@ namespace gms { class inet_address; } +namespace gms { class feature_service; } + namespace locator { class token_metadata; class shared_token_metadata; @@ -53,7 +55,7 @@ public: std::optional get_replication_strategy_class() const; std::optional get_initial_tablets(const sstring& strategy_class) const; data_dictionary::storage_options get_storage_options() const; - lw_shared_ptr as_ks_metadata(sstring ks_name, const locator::token_metadata&); + lw_shared_ptr as_ks_metadata(sstring ks_name, const locator::token_metadata&, const gms::feature_service&); lw_shared_ptr as_ks_metadata_update(lw_shared_ptr old, const locator::token_metadata&); #if 0 diff --git a/redis/keyspace_utils.cc b/redis/keyspace_utils.cc index a5b2bfc76a..95780db784 100644 --- a/redis/keyspace_utils.cc +++ b/redis/keyspace_utils.cc @@ -189,7 +189,7 @@ future<> create_keyspace_if_not_exists_impl(seastar::sharded