schema_tables: Extract query_processor from system_keyspace for querying
The schema_tables() column-mapping code runs queries over system. table, but it needs LOCAL_ONE CL and cherry-pick on caching, so regular system_keyspace::execute_cql() won't work here. However, since schema_tables is somewhat part of system_keyspace, it's natural to let the former fetch private query_processor& from the latter Signed-off-by: Pavel Emelyanov <xemul@scylladb.com>
This commit is contained in:
@@ -3705,7 +3705,7 @@ static auto GET_COLUMN_MAPPING_QUERY = format("SELECT column_name, clustering_or
|
||||
db::schema_tables::SCYLLA_TABLE_SCHEMA_HISTORY);
|
||||
|
||||
future<column_mapping> get_column_mapping(db::system_keyspace& sys_ks, ::table_id table_id, table_schema_version version) {
|
||||
shared_ptr<cql3::untyped_result_set> results = co_await qctx->qp().execute_internal(
|
||||
shared_ptr<cql3::untyped_result_set> results = co_await sys_ks._qp.execute_internal(
|
||||
GET_COLUMN_MAPPING_QUERY,
|
||||
db::consistency_level::LOCAL_ONE,
|
||||
{table_id.uuid(), version.uuid()},
|
||||
@@ -3746,7 +3746,7 @@ future<column_mapping> get_column_mapping(db::system_keyspace& sys_ks, ::table_i
|
||||
}
|
||||
|
||||
future<bool> column_mapping_exists(db::system_keyspace& sys_ks, table_id table_id, table_schema_version version) {
|
||||
shared_ptr<cql3::untyped_result_set> results = co_await qctx->qp().execute_internal(
|
||||
shared_ptr<cql3::untyped_result_set> results = co_await sys_ks._qp.execute_internal(
|
||||
GET_COLUMN_MAPPING_QUERY,
|
||||
db::consistency_level::LOCAL_ONE,
|
||||
{table_id.uuid(), version.uuid()},
|
||||
@@ -3759,7 +3759,7 @@ future<> drop_column_mapping(db::system_keyspace& sys_ks, table_id table_id, tab
|
||||
const static sstring DEL_COLUMN_MAPPING_QUERY =
|
||||
format("DELETE FROM system.{} WHERE cf_id = ? and schema_version = ?",
|
||||
db::schema_tables::SCYLLA_TABLE_SCHEMA_HISTORY);
|
||||
co_await qctx->qp().execute_internal(
|
||||
co_await sys_ks._qp.execute_internal(
|
||||
DEL_COLUMN_MAPPING_QUERY,
|
||||
db::consistency_level::LOCAL_ONE,
|
||||
{table_id.uuid(), version.uuid()},
|
||||
|
||||
@@ -78,6 +78,13 @@ namespace db {
|
||||
|
||||
sstring system_keyspace_name();
|
||||
|
||||
class system_keyspace;
|
||||
namespace schema_tables {
|
||||
future<column_mapping> get_column_mapping(db::system_keyspace& sys_ks, ::table_id table_id, table_schema_version version);
|
||||
future<bool> column_mapping_exists(db::system_keyspace& sys_ks, table_id table_id, table_schema_version version);
|
||||
future<> drop_column_mapping(db::system_keyspace& sys_ks, table_id table_id, table_schema_version version);
|
||||
}
|
||||
|
||||
class config;
|
||||
struct local_cache;
|
||||
|
||||
@@ -509,6 +516,10 @@ public:
|
||||
future<::shared_ptr<cql3::untyped_result_set>> execute_cql(sstring req, Args&&... args) {
|
||||
return execute_cql(req, { data_value(std::forward<Args>(args))... });
|
||||
}
|
||||
|
||||
friend future<column_mapping> db::schema_tables::get_column_mapping(db::system_keyspace& sys_ks, ::table_id table_id, table_schema_version version);
|
||||
friend future<bool> db::schema_tables::column_mapping_exists(db::system_keyspace& sys_ks, table_id table_id, table_schema_version version);
|
||||
friend future<> db::schema_tables::drop_column_mapping(db::system_keyspace& sys_ks, table_id table_id, table_schema_version version);
|
||||
}; // class system_keyspace
|
||||
|
||||
} // namespace db
|
||||
|
||||
Reference in New Issue
Block a user