mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-22 17:40:34 +00:00
As discussed in https://github.com/scylladb/scylladb/issues/12263#issuecomment-1853576813, compact storage tables are deprecated. Yet, there's is nothing in the code that prevents users from creating such tables. This patch adds a live-updateable config option: `enable_create_table_with_compact_storage` that require users to opt-in in order to create new tables WITH COMPACT STORAGE. The option is currently set to `true` by default in db/config to reduce the churn to tests and to `false` in scylla.yaml, for new clusters. TODO: once regressions tests that use compact storage are converted to enable the option, change the default in db/config to false. A unit test was added to test/cql-pytest that checks that the respective cql query fails as expected with the default option or when it is explicitly set to `false`, and that the query succeeds when the option is set to `true`. Note that `check_restricted_table_properties` already returns an optional warning, but it is only logged but not returned in the `prepared_statement`. Fixing that is out of the scope of this patch. See https://github.com/scylladb/scylladb/issues/20945 Signed-off-by: Benny Halevy <bhalevy@scylladb.com>
64 lines
2.0 KiB
C++
64 lines
2.0 KiB
C++
/*
|
|
* Copyright (C) 2016-present ScyllaDB
|
|
*
|
|
* Modified by ScyllaDB
|
|
*/
|
|
|
|
/*
|
|
* SPDX-License-Identifier: (LicenseRef-ScyllaDB-Source-Available-1.0 and Apache-2.0)
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "audit/audit.hh"
|
|
|
|
#include <seastar/core/shared_ptr.hh>
|
|
#include <seastar/core/weak_ptr.hh>
|
|
#include <seastar/core/checked_ptr.hh>
|
|
#include <vector>
|
|
|
|
#include "exceptions/exceptions.hh"
|
|
|
|
namespace cql3 {
|
|
|
|
class prepare_context;
|
|
class column_specification;
|
|
class cql_statement;
|
|
|
|
namespace statements {
|
|
|
|
struct invalidated_prepared_usage_attempt {
|
|
void operator()() const {
|
|
throw exceptions::invalidated_prepared_usage_attempt_exception();
|
|
}
|
|
};
|
|
|
|
class prepared_statement : public seastar::weakly_referencable<prepared_statement> {
|
|
public:
|
|
typedef seastar::checked_ptr<seastar::weak_ptr<const prepared_statement>> checked_weak_ptr;
|
|
|
|
public:
|
|
const seastar::shared_ptr<cql_statement> statement;
|
|
const std::vector<seastar::lw_shared_ptr<column_specification>> bound_names;
|
|
const std::vector<uint16_t> partition_key_bind_indices;
|
|
std::vector<sstring> warnings;
|
|
|
|
prepared_statement(audit::audit_info_ptr&& audit_info, seastar::shared_ptr<cql_statement> statement_, std::vector<seastar::lw_shared_ptr<column_specification>> bound_names_,
|
|
std::vector<uint16_t> partition_key_bind_indices, std::vector<sstring> warnings = {});
|
|
|
|
prepared_statement(audit::audit_info_ptr&& audit_info, seastar::shared_ptr<cql_statement> statement_, const prepare_context& ctx, const std::vector<uint16_t>& partition_key_bind_indices,
|
|
std::vector<sstring> warnings = {});
|
|
|
|
prepared_statement(audit::audit_info_ptr&& audit_info, seastar::shared_ptr<cql_statement> statement_, prepare_context&& ctx, std::vector<uint16_t>&& partition_key_bind_indices);
|
|
|
|
prepared_statement(audit::audit_info_ptr&& audit_info, seastar::shared_ptr<cql_statement>&& statement_, std::vector<sstring> warnings = {});
|
|
|
|
checked_weak_ptr checked_weak_from_this() const {
|
|
return checked_weak_ptr(this->weak_from_this());
|
|
}
|
|
};
|
|
|
|
}
|
|
|
|
}
|