From 491b7a817f12e8cf81062e71225176e18039bd49 Mon Sep 17 00:00:00 2001 From: Piotr Sarna Date: Wed, 13 Mar 2019 13:00:00 +0100 Subject: [PATCH 01/14] schema: add computed info to column definition Some columns may represent not user-provided values, but ones computed from other columns. Currently an example is token column used in secondary indexes to provide proper ordering. In order to avoid hardcoding special cases in execution stage, optional additional information for computed columns is stored in column definition. --- column_computation.hh | 54 +++++++++++++++++++++++++++++++++++++++++++ schema.cc | 20 ++++++++++++---- schema.hh | 40 ++++++++++++++++++++++++++++++++ schema_builder.hh | 3 ++- 4 files changed, 112 insertions(+), 5 deletions(-) create mode 100644 column_computation.hh diff --git a/column_computation.hh b/column_computation.hh new file mode 100644 index 0000000000..3fc3cb6f4a --- /dev/null +++ b/column_computation.hh @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2019 ScyllaDB + */ + +/* + * This file is part of Scylla. + * + * Scylla is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Scylla is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Scylla. If not, see . + */ + +#pragma once + +#include "bytes.hh" + +class schema; +class partition_key; +class clustering_row; + +class column_computation; +using column_computation_ptr = std::unique_ptr; + +/* + * Column computation represents a computation performed in order to obtain a value for a computed column. + * Computed columns description is also available at docs/system_schema_keyspace.md. They hold values + * not provided directly by the user, but rather computed: from other column values and possibly other sources. + * This class is able to serialize/deserialize column computations and perform the computation itself, + * based on given schema, partition key and clustering row. Responsibility for providing enough data + * in the clustering row in order for computation to succeed belongs to the caller. In particular, + * generating a value might involve performing a read-before-write if the computation is performed + * on more values than are present in the update request. + */ +class column_computation { +public: + virtual ~column_computation() = default; + + static column_computation_ptr deserialize(bytes_view raw); + static column_computation_ptr deserialize(const Json::Value& json); + + virtual column_computation_ptr clone() const = 0; + + virtual bytes serialize() const = 0; + virtual bytes_opt compute_value(const schema& schema, const partition_key& key, const clustering_row& row) const = 0; +}; diff --git a/schema.cc b/schema.cc index 0db0f4a122..be2e2a5c3c 100644 --- a/schema.cc +++ b/schema.cc @@ -497,12 +497,13 @@ sstring index_metadata::get_default_index_name(const sstring& cf_name, return cf_name + "_idx"; } -column_definition::column_definition(bytes name, data_type type, column_kind kind, column_id component_index, column_view_virtual is_view_virtual, api::timestamp_type dropped_at) +column_definition::column_definition(bytes name, data_type type, column_kind kind, column_id component_index, column_view_virtual is_view_virtual, column_computation_ptr computation, api::timestamp_type dropped_at) : _name(std::move(name)) , _dropped_at(dropped_at) , _is_atomic(type->is_atomic()) , _is_counter(type->is_counter()) , _is_view_virtual(is_view_virtual) + , _computation(std::move(computation)) , type(std::move(type)) , id(component_index) , kind(kind) @@ -516,6 +517,9 @@ std::ostream& operator<<(std::ostream& os, const column_definition& cd) { if (cd.is_view_virtual()) { os << ", view_virtual"; } + if (cd.is_computed()) { + os << ", computed:" << cd.get_computation().serialize(); + } os << ", componentIndex=" << (cd.has_component_index() ? std::to_string(cd.component_index()) : "null"); os << ", droppedAt=" << cd._dropped_at; os << "}"; @@ -701,7 +705,7 @@ column_definition& schema_builder::find_column(const cql3::column_identifier& c) } schema_builder& schema_builder::with_column(const column_definition& c) { - return with_column(bytes(c.name()), data_type(c.type), column_kind(c.kind), c.position(), c.view_virtual()); + return with_column(bytes(c.name()), data_type(c.type), column_kind(c.kind), c.position(), c.view_virtual(), c.get_computation_ptr()); } schema_builder& schema_builder::with_column(bytes name, data_type type, column_kind kind, column_view_virtual is_view_virtual) { @@ -709,8 +713,8 @@ schema_builder& schema_builder::with_column(bytes name, data_type type, column_k return with_column(name, type, kind, 0, is_view_virtual); } -schema_builder& schema_builder::with_column(bytes name, data_type type, column_kind kind, column_id component_index, column_view_virtual is_view_virtual) { - _raw._columns.emplace_back(name, type, kind, component_index, is_view_virtual); +schema_builder& schema_builder::with_column(bytes name, data_type type, column_kind kind, column_id component_index, column_view_virtual is_view_virtual, column_computation_ptr computation) { + _raw._columns.emplace_back(name, type, kind, component_index, is_view_virtual, std::move(computation)); if (type->is_multi_cell()) { with_collection(name, type); } else if (type->is_counter()) { @@ -719,6 +723,10 @@ schema_builder& schema_builder::with_column(bytes name, data_type type, column_k return *this; } +schema_builder& schema_builder::with_computed_column(bytes name, data_type type, column_kind kind, column_computation_ptr computation) { + return with_column(name, type, kind, 0, column_view_virtual::no, std::move(computation)); +} + schema_builder& schema_builder::remove_column(bytes name) { auto it = boost::range::find_if(_raw._columns, [&] (auto& column) { @@ -1244,6 +1252,10 @@ raw_view_info::raw_view_info(utils::UUID base_id, sstring base_name, bool includ , _where_clause(where_clause) { } +column_computation_ptr column_computation::deserialize(bytes_view raw) { + throw std::runtime_error("Incorrect column computation value"); +} + bool operator==(const raw_view_info& x, const raw_view_info& y) { return x._base_id == y._base_id && x._base_name == y._base_name diff --git a/schema.hh b/schema.hh index decd2a4c26..023010bb59 100644 --- a/schema.hh +++ b/schema.hh @@ -39,6 +39,7 @@ #include "compress.hh" #include "compaction_strategy.hh" #include "caching_options.hh" +#include "column_computation.hh" using column_count_type = uint32_t; @@ -217,6 +218,7 @@ private: bool _is_atomic; bool _is_counter; column_view_virtual _is_view_virtual; + column_computation_ptr _computation; struct thrift_bits { thrift_bits() @@ -232,6 +234,7 @@ public: column_definition(bytes name, data_type type, column_kind kind, column_id component_index = 0, column_view_virtual view_virtual = column_view_virtual::no, + column_computation_ptr = nullptr, api::timestamp_type dropped_at = api::missing_timestamp); data_type type; @@ -244,6 +247,35 @@ public: column_kind kind; ::shared_ptr column_specification; + // NOTICE(sarna): This copy constructor is hand-written instead of default, + // because it involves deep copying of the computation object. + // Computation has a strict ownership policy provided by + // unique_ptr, and as such cannot rely on default copying. + column_definition(const column_definition& other) + : _name(other._name) + , _dropped_at(other._dropped_at) + , _is_atomic(other._is_atomic) + , _is_counter(other._is_counter) + , _is_view_virtual(other._is_view_virtual) + , _computation(other.get_computation_ptr()) + , _thrift_bits(other._thrift_bits) + , type(other.type) + , id(other.id) + , kind(other.kind) + , column_specification(other.column_specification) + {} + + column_definition& operator=(const column_definition& other) { + if (this == &other) { + return *this; + } + column_definition tmp(other); + *this = std::move(tmp); + return *this; + } + + column_definition& operator=(column_definition&& other) = default; + bool is_static() const { return kind == column_kind::static_column; } bool is_regular() const { return kind == column_kind::regular_column; } bool is_partition_key() const { return kind == column_kind::partition_key; } @@ -258,6 +290,14 @@ public: // These columns should be hidden from the user's SELECT queries. bool is_view_virtual() const { return _is_view_virtual == column_view_virtual::yes; } column_view_virtual view_virtual() const { return _is_view_virtual; } + // Computed column values are generated from other columns (and possibly other sources) during updates. + // Their values are still stored on disk, same as a regular columns. + bool is_computed() const { return bool(_computation); } + const column_computation& get_computation() const { return *_computation; } + column_computation_ptr get_computation_ptr() const { + return _computation ? _computation->clone() : nullptr; + } + void set_computed(column_computation_ptr computation) { _computation = std::move(computation); } // Columns hidden from CQL cannot be in any way retrieved by the user, // either explicitly or via the '*' operator, or functions, aggregates, etc. bool is_hidden_from_cql() const { return is_view_virtual(); } diff --git a/schema_builder.hh b/schema_builder.hh index 6f67ceb1c3..b74b08e76a 100644 --- a/schema_builder.hh +++ b/schema_builder.hh @@ -239,7 +239,8 @@ public: column_definition& find_column(const cql3::column_identifier&); schema_builder& with_column(const column_definition& c); schema_builder& with_column(bytes name, data_type type, column_kind kind = column_kind::regular_column, column_view_virtual view_virtual = column_view_virtual::no); - schema_builder& with_column(bytes name, data_type type, column_kind kind, column_id component_index, column_view_virtual view_virtual = column_view_virtual::no); + schema_builder& with_column(bytes name, data_type type, column_kind kind, column_id component_index, column_view_virtual view_virtual = column_view_virtual::no, column_computation_ptr computation = nullptr); + schema_builder& with_computed_column(bytes name, data_type type, column_kind kind, column_computation_ptr computation); schema_builder& remove_column(bytes name); schema_builder& without_column(sstring name, api::timestamp_type timestamp); schema_builder& without_column(sstring name, data_type, api::timestamp_type timestamp); From 65bf6d34fe1176eca997ca1351166ea979fc4a37 Mon Sep 17 00:00:00 2001 From: Piotr Sarna Date: Fri, 22 Mar 2019 15:14:01 +0100 Subject: [PATCH 02/14] schema: add implementation of computing token column Computed column of 'token' type can now have its value computed. --- column_computation.hh | 9 +++++++++ schema.cc | 28 +++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/column_computation.hh b/column_computation.hh index 3fc3cb6f4a..8fc53042dd 100644 --- a/column_computation.hh +++ b/column_computation.hh @@ -52,3 +52,12 @@ public: virtual bytes serialize() const = 0; virtual bytes_opt compute_value(const schema& schema, const partition_key& key, const clustering_row& row) const = 0; }; + +class token_column_computation : public column_computation { +public: + virtual column_computation_ptr clone() const override { + return std::make_unique(*this); + } + virtual bytes serialize() const override; + virtual bytes_opt compute_value(const schema& schema, const partition_key& key, const clustering_row& row) const override; +}; diff --git a/schema.cc b/schema.cc index be2e2a5c3c..1cdad7d5d5 100644 --- a/schema.cc +++ b/schema.cc @@ -1253,7 +1253,33 @@ raw_view_info::raw_view_info(utils::UUID base_id, sstring base_name, bool includ { } column_computation_ptr column_computation::deserialize(bytes_view raw) { - throw std::runtime_error("Incorrect column computation value"); + return deserialize(json::to_json_value(sstring(raw.begin(), raw.end()))); +} + +column_computation_ptr column_computation::deserialize(const Json::Value& parsed) { + if (!parsed.isObject()) { + throw std::runtime_error(format("Invalid column computation value: {}", parsed.toStyledString())); + } + Json::Value type_json = parsed.get("type", Json::Value()); + if (!type_json.isString()) { + throw std::runtime_error(format("Type {} is not convertible to string", type_json.toStyledString())); + } + sstring type = type_json.asString(); + if (type == "token") { + return std::make_unique(); + } + throw std::runtime_error(format("Incorrect column computation type {} found when parsing {}", type, parsed.toStyledString())); +} + +bytes token_column_computation::serialize() const { + Json::Value serialized(Json::objectValue); + serialized["type"] = Json::Value("token"); + return to_bytes(json::to_sstring(serialized)); +} + +bytes_opt token_column_computation::compute_value(const schema& schema, const partition_key& key, const clustering_row& row) const { + dht::i_partitioner& partitioner = dht::global_partitioner(); + return partitioner.token_to_bytes(partitioner.get_token(schema, key)); } bool operator==(const raw_view_info& x, const raw_view_info& y) { From a1100e37375f4fadaff132b1c4d0c0d0ead9db74 Mon Sep 17 00:00:00 2001 From: Piotr Sarna Date: Fri, 15 Mar 2019 16:30:56 +0100 Subject: [PATCH 03/14] schema: allow marking columns as computed in schema builder In order to be able to transform legacy materialized view definitions, builder is now able to mark an existing column as computed. --- schema.cc | 12 +++++++++++- schema_builder.hh | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/schema.cc b/schema.cc index 1cdad7d5d5..d9b4da0e2a 100644 --- a/schema.cc +++ b/schema.cc @@ -732,7 +732,9 @@ schema_builder& schema_builder::remove_column(bytes name) auto it = boost::range::find_if(_raw._columns, [&] (auto& column) { return column.name() == name; }); - assert(it != _raw._columns.end()); + if(it == _raw._columns.end()) { + throw std::out_of_range(format("Cannot remove: column {} not found.", name)); + } without_column(it->name_as_text(), it->type, api::new_timestamp()); _raw._columns.erase(it); return *this; @@ -778,6 +780,14 @@ schema_builder& schema_builder::alter_column_type(bytes name, data_type new_type return *this; } +schema_builder& schema_builder::mark_column_computed(bytes name, column_computation_ptr computation) { + auto it = boost::find_if(_raw._columns, [&name] (const column_definition& c) { return c.name() == name; }); + assert(it != _raw._columns.end()); + it->set_computed(std::move(computation)); + + return *this; +} + schema_builder& schema_builder::with_collection(bytes name, data_type type) { _raw._collections.emplace(name, type); diff --git a/schema_builder.hh b/schema_builder.hh index b74b08e76a..9420e72b1c 100644 --- a/schema_builder.hh +++ b/schema_builder.hh @@ -246,6 +246,7 @@ public: schema_builder& without_column(sstring name, data_type, api::timestamp_type timestamp); schema_builder& rename_column(bytes from, bytes to); schema_builder& alter_column_type(bytes name, data_type new_type); + schema_builder& mark_column_computed(bytes name, column_computation_ptr computation); // Adds information about collection that existed in the past but the column // has since been removed. For adding colllections that are still alive From a0e02df36ace1caa685975ae8ade4454096bb46d Mon Sep 17 00:00:00 2001 From: Piotr Sarna Date: Fri, 15 Mar 2019 09:40:45 +0100 Subject: [PATCH 04/14] service: add computed columns feature Computed columns feature should be checked before creating index schemas the new way - by adding computed column names to system_schema.computed_columns. --- db/schema_features.hh | 4 +++- service/storage_service.cc | 5 +++++ service/storage_service.hh | 8 ++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/db/schema_features.hh b/db/schema_features.hh index ed05a58a4e..e87e378b3d 100644 --- a/db/schema_features.hh +++ b/db/schema_features.hh @@ -32,11 +32,13 @@ enum class schema_feature { // tombstones in an empty partition expire. // See https://github.com/scylladb/scylla/issues/4485 DIGEST_INSENSITIVE_TO_EXPIRY, + COMPUTED_COLUMNS, }; using schema_features = enum_set>; } diff --git a/service/storage_service.cc b/service/storage_service.cc index cbecf5cdd6..805ea90e8e 100644 --- a/service/storage_service.cc +++ b/service/storage_service.cc @@ -111,6 +111,7 @@ static const sstring CORRECT_STATIC_COMPACT_IN_MC = "CORRECT_STATIC_COMPACT_IN_M static const sstring UNBOUNDED_RANGE_TOMBSTONES_FEATURE = "UNBOUNDED_RANGE_TOMBSTONES"; static const sstring VIEW_VIRTUAL_COLUMNS = "VIEW_VIRTUAL_COLUMNS"; static const sstring DIGEST_INSENSITIVE_TO_EXPIRY = "DIGEST_INSENSITIVE_TO_EXPIRY"; +static const sstring COMPUTED_COLUMNS_FEATURE = "COMPUTED_COLUMNS"; static const sstring SSTABLE_FORMAT_PARAM_NAME = "sstable_format"; @@ -164,6 +165,7 @@ storage_service::storage_service(distributed& db, gms::gossiper& gossi , _unbounded_range_tombstones_feature(_feature_service, UNBOUNDED_RANGE_TOMBSTONES_FEATURE) , _view_virtual_columns(_feature_service, VIEW_VIRTUAL_COLUMNS) , _digest_insensitive_to_expiry(_feature_service, DIGEST_INSENSITIVE_TO_EXPIRY) + , _computed_columns(_feature_service, COMPUTED_COLUMNS_FEATURE) , _la_feature_listener(*this, _feature_listeners_sem, sstables::sstable_version_types::la) , _mc_feature_listener(*this, _feature_listeners_sem, sstables::sstable_version_types::mc) , _replicate_action([this] { return do_replicate_to_all_cores(); }) @@ -218,6 +220,7 @@ void storage_service::enable_all_features() { std::ref(_unbounded_range_tombstones_feature), std::ref(_view_virtual_columns), std::ref(_digest_insensitive_to_expiry), + std::ref(_computed_columns), }) { if (features.count(f.name())) { @@ -322,6 +325,7 @@ std::set storage_service::get_config_supported_features_set() { CORRECT_STATIC_COMPACT_IN_MC, VIEW_VIRTUAL_COLUMNS, DIGEST_INSENSITIVE_TO_EXPIRY, + COMPUTED_COLUMNS_FEATURE, }; // Do not respect config in the case database is not started @@ -3508,6 +3512,7 @@ db::schema_features storage_service::cluster_schema_features() const { db::schema_features f; f.set_if(bool(_view_virtual_columns)); f.set_if(bool(_digest_insensitive_to_expiry)); + f.set_if(bool(_computed_columns)); return f; } diff --git a/service/storage_service.hh b/service/storage_service.hh index d933e75577..823acb50b7 100644 --- a/service/storage_service.hh +++ b/service/storage_service.hh @@ -332,6 +332,7 @@ private: gms::feature _unbounded_range_tombstones_feature; gms::feature _view_virtual_columns; gms::feature _digest_insensitive_to_expiry; + gms::feature _computed_columns; sstables::sstable_version_types _sstables_format = sstables::sstable_version_types::ka; seastar::semaphore _feature_listeners_sem = {1}; @@ -2344,14 +2345,21 @@ public: bool cluster_supports_unbounded_range_tombstones() const { return bool(_unbounded_range_tombstones_feature); } + const gms::feature& cluster_supports_view_virtual_columns() const { return _view_virtual_columns; } const gms::feature& cluster_supports_digest_insensitive_to_expiry() const { return _digest_insensitive_to_expiry; } + + bool cluster_supports_computed_columns() const { + return bool(_computed_columns); + } + // Returns schema features which all nodes in the cluster advertise as supported. db::schema_features cluster_schema_features() const; + private: future<> set_cql_ready(bool ready); private: From 6a6871aa0ed06af9ee40ab15e8e7d47def580abf Mon Sep 17 00:00:00 2001 From: Piotr Sarna Date: Wed, 13 Mar 2019 13:06:17 +0100 Subject: [PATCH 05/14] view: check for computed columns in view Currently, having a 'computed' column in view update generation indicates that token value needs to be generated and assigned to it. --- db/view/view.cc | 41 ++++++++++++++++++++++++++--------------- view_info.hh | 2 -- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/db/view/view.cc b/db/view/view.cc index 40e2f13239..6a07c694e3 100644 --- a/db/view/view.cc +++ b/db/view/view.cc @@ -83,11 +83,18 @@ view_info::view_info(const schema& schema, const raw_view_info& raw_view_info) cql3::statements::select_statement& view_info::select_statement() const { if (!_select_statement) { shared_ptr raw; - if (is_index()) { - // Token column is the first clustering column - auto token_column_it = boost::range::find_if(_schema.all_columns(), std::mem_fn(&column_definition::is_clustering_key)); - auto real_columns = _schema.all_columns() | boost::adaptors::filtered([this, token_column_it](const column_definition& cdef) { - return std::addressof(cdef) != std::addressof(*token_column_it); + // FIXME(sarna): legacy code, should be removed after "computed_columns" feature is guaranteed + // to be available on every node. Then, we won't need to check if this view is backing a secondary index. + const column_definition* legacy_token_column = nullptr; + if (service::get_local_storage_service().db().local().find_column_family(base_id()).get_index_manager().is_index(_schema)) { + if (!_schema.clustering_key_columns().empty()) { + legacy_token_column = &_schema.clustering_key_columns().front(); + } + } + + if (legacy_token_column || boost::algorithm::any_of(_schema.all_columns(), std::mem_fn(&column_definition::is_computed))) { + auto real_columns = _schema.all_columns() | boost::adaptors::filtered([this, legacy_token_column] (const column_definition& cdef) { + return &cdef != legacy_token_column && !cdef.is_computed(); }); schema::columns_type columns = boost::copy_range(std::move(real_columns)); raw = cql3::util::build_select_statement(base_name(), where_clause(), include_all_columns(), columns); @@ -142,12 +149,6 @@ void view_info::initialize_base_dependent_fields(const schema& base) { } } -bool view_info::is_index() const { - //TODO(sarna): result of this call can be cached instead of calling index_manager::is_index every time - column_family& base_cf = service::get_local_storage_service().db().local().find_column_family(base_id()); - return base_cf.get_index_manager().is_index(view_ptr(_schema.shared_from_this())); -} - namespace db { namespace view { @@ -306,11 +307,21 @@ deletable_row& view_updates::get_view_row(const partition_key& base_key, const c auto get_value = boost::adaptors::transformed([&, this] (const column_definition& cdef) -> bytes_view { auto* base_col = _base->get_column_definition(cdef.name()); if (!base_col) { - if (!_view_info.is_index()) { - throw std::logic_error(format("Column {} doesn't exist in base and this view is not backing a secondary index", cdef.name_as_text())); + bytes_opt computed_value; + if (!cdef.is_computed()) { + //FIXME(sarna): this legacy code is here for backward compatibility and should be removed + // once "computed_columns feature" is supported by every node + if (!service::get_local_storage_service().db().local().find_column_family(_base->id()).get_index_manager().is_index(*_base)) { + throw std::logic_error(format("Column {} doesn't exist in base and this view is not backing a secondary index", cdef.name_as_text())); + } + computed_value = token_column_computation().compute_value(*_base, base_key, update); + } else { + computed_value = cdef.get_computation().compute_value(*_base, base_key, update); } - auto& partitioner = dht::global_partitioner(); - return linearized_values.emplace_back(partitioner.token_to_bytes(token_for(base_key))); + if (!computed_value) { + throw std::logic_error(format("No value computed for primary key column {}", cdef.name())); + } + return linearized_values.emplace_back(*computed_value); } switch (base_col->kind) { case column_kind::partition_key: diff --git a/view_info.hh b/view_info.hh index 23f22177e7..55df7870f3 100644 --- a/view_info.hh +++ b/view_info.hh @@ -58,8 +58,6 @@ public: return _raw.where_clause(); } - bool is_index() const; - cql3::statements::select_statement& select_statement() const; const query::partition_slice& partition_slice() const; const dht::partition_range_vector& partition_ranges() const; From 3c5dd9430657ac51c16e601ec9ff1435c2f243b4 Mon Sep 17 00:00:00 2001 From: Piotr Sarna Date: Fri, 22 Mar 2019 12:10:16 +0100 Subject: [PATCH 06/14] view: remove unused token_for function The function was only used once in code removed in this series. --- db/view/view.cc | 5 ----- 1 file changed, 5 deletions(-) diff --git a/db/view/view.cc b/db/view/view.cc index 6a07c694e3..698f1cd6d6 100644 --- a/db/view/view.cc +++ b/db/view/view.cc @@ -249,7 +249,6 @@ private: return _updates.emplace(std::move(key), mutation_partition(_view)).first->second; } row_marker compute_row_marker(const clustering_row& base_row) const; - dht::token token_for(const partition_key& base_key); deletable_row& get_view_row(const partition_key& base_key, const clustering_row& update); bool can_skip_view_updates(const clustering_row& update, const clustering_row& existing) const; void create_entry(const partition_key& base_key, const clustering_row& update, gc_clock::time_point now); @@ -298,10 +297,6 @@ row_marker view_updates::compute_row_marker(const clustering_row& base_row) cons return marker; } -dht::token view_updates::token_for(const partition_key& base_key) { - return dht::global_partitioner().get_token(*_base, base_key); -} - deletable_row& view_updates::get_view_row(const partition_key& base_key, const clustering_row& update) { std::vector linearized_values; auto get_value = boost::adaptors::transformed([&, this] (const column_definition& cdef) -> bytes_view { From 17c323c096585835f9b3cc8e72917c5ea15e6ec1 Mon Sep 17 00:00:00 2001 From: Piotr Sarna Date: Fri, 15 Mar 2019 11:02:33 +0100 Subject: [PATCH 07/14] database: add fixing previous secondary index schemas If a schema was created before computed columns were implemented, its token column may not have been marked as computed. To remedy this, if no computed column is found, the schema will be recreated. The code will work correctly even without this patch in order to support upgrading from legacy versions, but it's still important: it transforms token columns from the legacy format to new computed format, which will eventually (after a few release cycles) allow dropping the support for legacy format altogether. --- database.cc | 6 +++++- db/schema_tables.cc | 33 +++++++++++++++++++++++++++++++++ db/schema_tables.hh | 2 ++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/database.cc b/database.cc index 0d2ec4b686..699fc83196 100644 --- a/database.cc +++ b/database.cc @@ -90,6 +90,8 @@ #include "user_types_metadata.hh" #include +#include "schema_builder.hh" + using namespace std::chrono_literals; using namespace db; @@ -600,7 +602,9 @@ future<> database::parse_system_tables(distributed& prox return do_parse_schema_tables(proxy, db::schema_tables::VIEWS, [this, &proxy] (schema_result_value_type &v) { return create_views_from_schema_partition(proxy, v.second).then([this] (std::vector views) { return parallel_for_each(views.begin(), views.end(), [this] (auto&& v) { - return this->add_column_family_and_make_directory(v); + return this->add_column_family_and_make_directory(v).then([this, v] { + return maybe_update_legacy_secondary_index_mv_schema(*this, v); + }); }); }); }); diff --git a/db/schema_tables.cc b/db/schema_tables.cc index 25c55b927c..5e50f738bb 100644 --- a/db/schema_tables.cc +++ b/db/schema_tables.cc @@ -2730,6 +2730,39 @@ std::vector all_table_names(schema_features features) { boost::adaptors::transformed([] (auto schema) { return schema->cf_name(); })); } +future<> maybe_update_legacy_secondary_index_mv_schema(database& db, view_ptr v) { + // TODO(sarna): Remove once computed columns are guaranteed to be featured in the whole cluster. + // Legacy format for a secondary index used a hardcoded "token" column, which ensured a proper + // order for indexed queries. This "token" column is now implemented as a computed column, + // but for the sake of compatibility we assume that there might be indexes created in the legacy + // format, where "token" is not marked as computed. Once we're sure that all indexes have their + // columns marked as computed (because they were either created on a node that supports computed + // columns or were fixed by this utility function), it's safe to remove this function altogether. + if (!service::get_local_storage_service().cluster_supports_computed_columns()) { + return make_ready_future<>(); + } + + if (v->clustering_key_size() == 0) { + return make_ready_future<>(); + } + const column_definition& first_view_ck = v->clustering_key_columns().front(); + if (first_view_ck.is_computed()) { + return make_ready_future<>(); + } + + table& base = db.find_column_family(v->view_info()->base_id()); + schema_ptr base_schema = base.schema(); + // If the first clustering key part of a view is a column with name not found in base schema, + // it implies it might be backing an index created before computed columns were introduced, + // and as such it must be recreated properly. + if (base_schema->columns_by_name().count(first_view_ck.name()) == 0) { + schema_builder builder{schema_ptr(v)}; + builder.mark_column_computed(first_view_ck.name(), std::make_unique()); + return service::get_local_migration_manager().announce_view_update(view_ptr(builder.build()), true); + } + return make_ready_future<>(); +} + namespace legacy { table_schema_version schema_mutations::digest() const { diff --git a/db/schema_tables.hh b/db/schema_tables.hh index e6ca707f24..12616d47ab 100644 --- a/db/schema_tables.hh +++ b/db/schema_tables.hh @@ -206,6 +206,8 @@ std::vector make_update_view_mutations(lw_shared_ptr make_drop_view_mutations(lw_shared_ptr keyspace, view_ptr view, api::timestamp_type timestamp); +future<> maybe_update_legacy_secondary_index_mv_schema(database& db, view_ptr v); + sstring serialize_kind(column_kind kind); column_kind deserialize_kind(sstring kind); data_type parse_type(sstring str); From 03ade01db7969d495c9ec66828310ecf2c569c71 Mon Sep 17 00:00:00 2001 From: Piotr Sarna Date: Fri, 21 Jun 2019 13:14:56 +0200 Subject: [PATCH 08/14] tests: disable computed columns feature in schema change test In order to make sure that old schema digest is not recomputed and can be verified - computed columns feature is initially disabled in schema_change_test. The reason for that is as follows: running CQL test env assumes that we are running the newest cluster with all features enabled. However, the mere existence of some features might influence digest calculation. So, in order for the existing test to work correctly, it should have exactly the same set of cluster supported features as it had during its creation. It used to be "all features", but now it's "all features except computed columns". One can think of that as running a cluster with some nodes not yet knowing what computed columns are, so they are not taken into account when computing digests. Additionally, a separate test case that takes computed column digest into account will be generated and added in this series. --- tests/schema_change_test.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/schema_change_test.cc b/tests/schema_change_test.cc index 1fd89c2eeb..b67981bd26 100644 --- a/tests/schema_change_test.cc +++ b/tests/schema_change_test.cc @@ -527,6 +527,8 @@ SEASTAR_TEST_CASE(test_schema_digest_does_not_change) { fs::copy(std::string(data_dir), std::string(tmp.path().string()), fs::copy_options::recursive); db_cfg.data_file_directories({tmp.path().string()}, db::config::config_source::CommandLine); } + cql_test_config cfg_in(db_cfg_ptr); + cfg_in.disabled_features = std::set{"COMPUTED_COLUMNS"}; return do_with_cql_env_thread([regenerate](cql_test_env& e) { if (regenerate) { @@ -586,5 +588,5 @@ SEASTAR_TEST_CASE(test_schema_digest_does_not_change) { expect_version("ks", "tbl", utils::UUID("5c9cadec-e5df-357e-81d0-0261530af64b")); expect_version("ks", "tbl_view", utils::UUID("1d91ad22-ea7c-3e7f-9557-87f0f3bb94d7")); expect_version("ks", "tbl_view_2", utils::UUID("2dcd4a37-cbb5-399b-b3c9-8eb1398b096b")); - }, db_cfg_ptr).then([tmp = std::move(tmp)] {}); + }, cfg_in).then([tmp = std::move(tmp)] {}); } From 589200f5a24117c67bf66b332f936d73104838ba Mon Sep 17 00:00:00 2001 From: Piotr Sarna Date: Thu, 6 Jun 2019 12:47:08 +0200 Subject: [PATCH 09/14] tests: add schema change test regeneration comment Schema change test might need regenerating every time a system table is added. In order to save future developer's time on debugging this test, a short description of that requirement is added. --- tests/schema_change_test.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/schema_change_test.cc b/tests/schema_change_test.cc index b67981bd26..83fcbd2fda 100644 --- a/tests/schema_change_test.cc +++ b/tests/schema_change_test.cc @@ -515,6 +515,10 @@ SEASTAR_TEST_CASE(test_schema_digest_does_not_change) { using namespace db::schema_tables; auto tmp = tmpdir(); + // NOTICE: Regenerating data for this test may be necessary when a system table is added. + // This test uses pre-generated sstables and relies on the fact that they are up to date + // with the current system schema. If it is not, the schema will be updated, which will cause + // new timestamps to appear and schema digests will not match anymore. const bool regenerate = false; sstring data_dir = "./tests/sstables/schema_digest_test"; From c1d5aef7355a705fdbe7f87ba67af7fea2b0d602 Mon Sep 17 00:00:00 2001 From: Piotr Sarna Date: Fri, 15 Mar 2019 11:27:55 +0100 Subject: [PATCH 10/14] db: add system_schema.computed_columns Information on which columns of a table are 'computed' is now kept in system_schema.computed_columns system table. --- db/schema_tables.cc | 113 +++++++++++++++++++++++++++++++++++---- db/schema_tables.hh | 2 + idl/frozen_schema.idl.hh | 1 + schema_mutations.cc | 14 ++++- schema_mutations.hh | 18 ++++++- 5 files changed, 133 insertions(+), 15 deletions(-) diff --git a/db/schema_tables.cc b/db/schema_tables.cc index 5e50f738bb..8dc3da15ed 100644 --- a/db/schema_tables.cc +++ b/db/schema_tables.cc @@ -84,6 +84,7 @@ #include "user_types_metadata.hh" #include "index/target_parser.hh" +#include "service/storage_service.hh" using namespace db::system_keyspace; using namespace std::chrono_literals; @@ -155,9 +156,12 @@ struct user_types_to_drop final { static future<> do_merge_schema(distributed&, std::vector, bool do_flush); +using computed_columns_map = std::unordered_map; +static computed_columns_map get_computed_columns(const schema_mutations& sm); + static std::vector create_columns_from_column_rows( const query::result_set& rows, const sstring& keyspace, - const sstring& table, bool is_super, column_view_virtual is_view_virtual); + const sstring& table, bool is_super, column_view_virtual is_view_virtual, const computed_columns_map& computed_columns); static std::vector create_indices_from_index_rows(const query::result_set& rows, @@ -171,6 +175,9 @@ static index_metadata create_index_from_index_row(const query::result_set_row& r static void add_column_to_schema_mutation(schema_ptr, const column_definition&, api::timestamp_type, mutation&); +static void add_computed_column_to_schema_mutation(schema_ptr, const column_definition&, + api::timestamp_type, mutation&); + static void add_index_to_schema_mutation(schema_ptr table, const index_metadata& index, api::timestamp_type timestamp, mutation& mutation); @@ -345,6 +352,38 @@ schema_ptr view_virtual_columns() { return schema; } +// Computed columns are a special kind of columns. Rather than having their value provided directly +// by the user, they are computed - possibly from other column values. This table stores which columns +// for a given table are computed, and a serialized computation itself. Full column information is stored +// in the `columns` table, this one stores only entries for computed columns, so it will be empty for tables +// without any computed columns defined in the schema. `computation` is a serialized blob and its format +// is defined in column_computation.hh and system_schema docs. +// +static schema_ptr computed_columns_schema(const char* columns_table_name) { + schema_builder builder(make_lw_shared(::schema(generate_legacy_id(NAME, columns_table_name), NAME, columns_table_name, + // partition key + {{"keyspace_name", utf8_type}}, + // clustering key + {{"table_name", utf8_type}, {"column_name", utf8_type}}, + // regular columns + {{"computation", bytes_type}}, + // static columns + {}, + // regular column name type + utf8_type, + // comment + "computed columns" + ))); + builder.set_gc_grace_seconds(schema_gc_grace); + builder.with_version(generate_schema_version(builder.uuid())); + return builder.build(); +} + +schema_ptr computed_columns() { + static thread_local auto schema = computed_columns_schema(COMPUTED_COLUMNS); + return schema; +} + schema_ptr dropped_columns() { static thread_local auto schema = [] { schema_builder builder(make_lw_shared(::schema(generate_legacy_id(NAME, DROPPED_COLUMNS), NAME, DROPPED_COLUMNS, @@ -1662,6 +1701,7 @@ static schema_mutations make_table_mutations(schema_ptr table, api::timestamp_ty add_table_params_to_mutations(m, ckey, table, timestamp); mutation columns_mutation(columns(), pkey); + mutation computed_columns_mutation(computed_columns(), pkey); mutation dropped_columns_mutation(dropped_columns(), pkey); mutation indices_mutation(indexes(), pkey); @@ -1671,6 +1711,9 @@ static schema_mutations make_table_mutations(schema_ptr table, api::timestamp_ty throw std::logic_error("view_virtual column found in non-view table"); } add_column_to_schema_mutation(table, column, timestamp, columns_mutation); + if (column.is_computed()) { + add_computed_column_to_schema_mutation(table, column, timestamp, computed_columns_mutation); + } } for (auto&& index : table->indices()) { add_index_to_schema_mutation(table, index, timestamp, indices_mutation); @@ -1682,7 +1725,7 @@ static schema_mutations make_table_mutations(schema_ptr table, api::timestamp_ty } } - return schema_mutations{std::move(m), std::move(columns_mutation), std::nullopt, + return schema_mutations{std::move(m), std::move(columns_mutation), std::nullopt, std::move(computed_columns_mutation), std::move(indices_mutation), std::move(dropped_columns_mutation), std::move(scylla_tables_mutation)}; } @@ -1743,6 +1786,7 @@ static void make_update_columns_mutations(schema_ptr old_table, std::vector& mutations) { mutation columns_mutation(columns(), partition_key::from_singular(*columns(), old_table->ks_name())); mutation view_virtual_columns_mutation(view_virtual_columns(), partition_key::from_singular(*columns(), old_table->ks_name())); + mutation computed_columns_mutation(computed_columns(), partition_key::from_singular(*columns(), old_table->ks_name())); auto diff = difference(old_table->v3().columns_by_name(), new_table->v3().columns_by_name()); @@ -1759,6 +1803,9 @@ static void make_update_columns_mutations(schema_ptr old_table, } else { drop_column_from_schema_mutation(columns(), old_table, column.name_as_text(), timestamp, mutations); } + if (column.is_computed()) { + drop_column_from_schema_mutation(computed_columns(), old_table, column.name_as_text(), timestamp, mutations); + } } // newly added columns and old columns with updated attributes @@ -1769,10 +1816,14 @@ static void make_update_columns_mutations(schema_ptr old_table, } else { add_column_to_schema_mutation(new_table, column, timestamp, columns_mutation); } + if (column.is_computed()) { + add_computed_column_to_schema_mutation(new_table, column, timestamp, computed_columns_mutation); + } } mutations.emplace_back(std::move(columns_mutation)); mutations.emplace_back(std::move(view_virtual_columns_mutation)); + mutations.emplace_back(std::move(computed_columns_mutation)); // dropped columns auto dc_diff = difference(old_table->dropped_columns(), new_table->dropped_columns()); @@ -1826,6 +1877,9 @@ static void make_drop_table_or_view_mutations(schema_ptr schema_table, } else { drop_column_from_schema_mutation(columns(), table_or_view, column.name_as_text(), timestamp, mutations); } + if (column.is_computed()) { + drop_column_from_schema_mutation(computed_columns(), table_or_view, column.name_as_text(), timestamp, mutations); + } } for (auto& column : table_or_view->dropped_columns() | boost::adaptors::map_keys) { drop_column_from_schema_mutation(dropped_columns(), table_or_view, column, timestamp, mutations); @@ -1860,11 +1914,12 @@ static future read_table_mutations(distributed column_defs = create_columns_from_column_rows( query::result_set(sm.columns_mutation()), ks_name, cf_name,/*, fullRawComparator, */ cf == cf_type::super, - column_view_virtual::no); + column_view_virtual::no, + computed_columns); builder.set_is_dense(is_dense); @@ -2165,6 +2222,16 @@ static void add_column_to_schema_mutation(schema_ptr table, m.set_clustered_cell(ckey, "type", type->as_cql3_type().to_string(), timestamp); } +static void add_computed_column_to_schema_mutation(schema_ptr table, + const column_definition& column, + api::timestamp_type timestamp, + mutation& m) { + auto ckey = clustering_key::from_exploded(*m.schema(), + {utf8_type->decompose(table->cf_name()), utf8_type->decompose(column.name_as_text())}); + + m.set_clustered_cell(ckey, "computation", data_value(column.get_computation().serialize()), timestamp); +} + sstring serialize_kind(column_kind kind) { switch (kind) { @@ -2250,12 +2317,24 @@ static void drop_column_from_schema_mutation( mutations.emplace_back(m); } +static computed_columns_map get_computed_columns(const schema_mutations& sm) { + if (!sm.computed_columns_mutation()) { + return {}; + } + query::result_set computed_result(*sm.computed_columns_mutation()); + return boost::copy_range( + computed_result.rows() | boost::adaptors::transformed([] (const query::result_set_row& row) { + return computed_columns_map::value_type{to_bytes(row.get_nonnull("column_name")), column_computation::deserialize(row.get_nonnull("computation"))}; + })); +} + static std::vector create_columns_from_column_rows(const query::result_set& rows, const sstring& keyspace, const sstring& table, /*, AbstractType rawComparator, */ bool is_super, - column_view_virtual is_view_virtual) + column_view_virtual is_view_virtual, + const computed_columns_map& computed_columns) { std::vector columns; for (auto&& row : rows.rows()) { @@ -2271,8 +2350,13 @@ static std::vector create_columns_from_column_rows(const quer type = reversed_type_impl::get_instance(type); } } + column_computation_ptr computation; + auto computed_it = computed_columns.find(name_bytes); + if (computed_it != computed_columns.end()) { + computation = computed_it->second->clone(); + } - columns.emplace_back(name_bytes, type, kind, position, is_view_virtual); + columns.emplace_back(name_bytes, type, kind, position, is_view_virtual, std::move(computation)); } return columns; } @@ -2317,12 +2401,13 @@ view_ptr create_view_from_mutations(const schema_ctxt& ctxt, schema_mutations sm schema_builder builder{ks_name, cf_name, id}; prepare_builder_from_table_row(ctxt, builder, row); - auto column_defs = create_columns_from_column_rows(query::result_set(sm.columns_mutation()), ks_name, cf_name, false, column_view_virtual::no); + auto computed_columns = get_computed_columns(sm); + auto column_defs = create_columns_from_column_rows(query::result_set(sm.columns_mutation()), ks_name, cf_name, false, column_view_virtual::no, computed_columns); for (auto&& cdef : column_defs) { builder.with_column(cdef); } if (sm.view_virtual_columns_mutation()) { - column_defs = create_columns_from_column_rows(query::result_set(*sm.view_virtual_columns_mutation()), ks_name, cf_name, false, column_view_virtual::yes); + column_defs = create_columns_from_column_rows(query::result_set(*sm.view_virtual_columns_mutation()), ks_name, cf_name, false, column_view_virtual::yes, computed_columns); for (auto&& cdef : column_defs) { builder.with_column(cdef); } @@ -2394,9 +2479,9 @@ static schema_mutations make_view_mutations(view_ptr view, api::timestamp_type t add_table_params_to_mutations(m, ckey, view, timestamp); - mutation columns_mutation(columns(), pkey); mutation view_virtual_columns_mutation(view_virtual_columns(), pkey); + mutation computed_columns_mutation(computed_columns(), pkey); mutation dropped_columns_mutation(dropped_columns(), pkey); mutation indices_mutation(indexes(), pkey); @@ -2407,6 +2492,9 @@ static schema_mutations make_view_mutations(view_ptr view, api::timestamp_type t } else { add_column_to_schema_mutation(view, column, timestamp, columns_mutation); } + if (column.is_computed()) { + add_computed_column_to_schema_mutation(view, column, timestamp, computed_columns_mutation); + } } for (auto&& e : view->dropped_columns()) { @@ -2419,7 +2507,7 @@ static schema_mutations make_view_mutations(view_ptr view, api::timestamp_type t auto scylla_tables_mutation = make_scylla_tables_mutation(view, timestamp); - return schema_mutations{std::move(m), std::move(columns_mutation), std::move(view_virtual_columns_mutation), + return schema_mutations{std::move(m), std::move(columns_mutation), std::move(view_virtual_columns_mutation), std::move(computed_columns_mutation), std::move(indices_mutation), std::move(dropped_columns_mutation), std::move(scylla_tables_mutation)}; } @@ -2722,6 +2810,9 @@ std::vector all_tables(schema_features features) { if (features.contains()) { result.emplace_back(view_virtual_columns()); } + if (features.contains()) { + result.emplace_back(computed_columns()); + } return result; } diff --git a/db/schema_tables.hh b/db/schema_tables.hh index 12616d47ab..640ad8f5aa 100644 --- a/db/schema_tables.hh +++ b/db/schema_tables.hh @@ -101,6 +101,7 @@ static constexpr auto FUNCTIONS = "functions"; static constexpr auto AGGREGATES = "aggregates"; static constexpr auto INDEXES = "indexes"; static constexpr auto VIEW_VIRTUAL_COLUMNS = "view_virtual_columns"; // Scylla specific +static constexpr auto COMPUTED_COLUMNS = "computed_columns"; // Scylla specific schema_ptr columns(); schema_ptr view_virtual_columns(); @@ -109,6 +110,7 @@ schema_ptr indexes(); schema_ptr tables(); schema_ptr scylla_tables(); schema_ptr views(); +schema_ptr computed_columns(); } diff --git a/idl/frozen_schema.idl.hh b/idl/frozen_schema.idl.hh index 4e0ebee019..e55a7aa988 100644 --- a/idl/frozen_schema.idl.hh +++ b/idl/frozen_schema.idl.hh @@ -31,6 +31,7 @@ class schema_mutations { std::optional dropped_columns_canonical_mutation()[[version 2.0]]; std::optional scylla_tables_canonical_mutation()[[version 2.0]]; std::optional view_virtual_columns_canonical_mutation()[[version 2.4]]; + std::optional computed_columns_canonical_mutation()[[version 3.2]]; }; class schema stub [[writable]] { diff --git a/schema_mutations.cc b/schema_mutations.cc index 3747c6685b..98fc9c0d24 100644 --- a/schema_mutations.cc +++ b/schema_mutations.cc @@ -30,10 +30,12 @@ schema_mutations::schema_mutations(canonical_mutation columnfamilies, std::optional indices, std::optional dropped_columns, std::optional scylla_tables, - std::optional view_virtual_columns) + std::optional view_virtual_columns, + std::optional computed_columns) : _columnfamilies(columnfamilies.to_mutation(is_view ? db::schema_tables::views() : db::schema_tables::tables())) , _columns(columns.to_mutation(db::schema_tables::columns())) , _view_virtual_columns(view_virtual_columns ? mutation_opt{view_virtual_columns.value().to_mutation(db::schema_tables::view_virtual_columns())} : std::nullopt) + , _computed_columns(computed_columns ? mutation_opt{computed_columns.value().to_mutation(db::schema_tables::computed_columns())} : std::nullopt) , _indices(indices ? mutation_opt{indices.value().to_mutation(db::schema_tables::indexes())} : std::nullopt) , _dropped_columns(dropped_columns ? mutation_opt{dropped_columns.value().to_mutation(db::schema_tables::dropped_columns())} : std::nullopt) , _scylla_tables(scylla_tables ? mutation_opt{scylla_tables.value().to_mutation(db::schema_tables::scylla_tables())} : std::nullopt) @@ -45,6 +47,9 @@ void schema_mutations::copy_to(std::vector& dst) const { if (_view_virtual_columns) { dst.push_back(*_view_virtual_columns); } + if (_computed_columns) { + dst.push_back(*_computed_columns); + } if (_indices) { dst.push_back(*_indices); } @@ -85,6 +90,9 @@ table_schema_version schema_mutations::digest() const { if (_view_virtual_columns && !_view_virtual_columns->partition().empty()) { db::schema_tables::feed_hash_for_schema_digest(h, *_view_virtual_columns, sf); } + if (_computed_columns && !_computed_columns->partition().empty()) { + db::schema_tables::feed_hash_for_schema_digest(h, *_computed_columns, sf); + } if (_indices && !_indices->partition().empty()) { db::schema_tables::feed_hash_for_schema_digest(h, *_indices, sf); } @@ -112,6 +120,7 @@ bool schema_mutations::operator==(const schema_mutations& other) const { return compact(_columnfamilies) == compact(other._columnfamilies) && compact(_columns) == compact(other._columns) && compact(_view_virtual_columns) == compact(other._view_virtual_columns) + && compact(_computed_columns) == compact(other._computed_columns) && compact(_indices) == compact(other._indices) && compact(_dropped_columns) == compact(other._dropped_columns) && compact(_scylla_tables) == compact(other._scylla_tables) @@ -124,7 +133,8 @@ bool schema_mutations::operator!=(const schema_mutations& other) const { bool schema_mutations::live() const { return _columnfamilies.live_row_count() > 0 || _columns.live_row_count() > 0 || - (_view_virtual_columns && _view_virtual_columns->live_row_count() > 0); + (_view_virtual_columns && _view_virtual_columns->live_row_count() > 0) || + (_computed_columns && _computed_columns->live_row_count() > 0); } bool schema_mutations::is_view() const { diff --git a/schema_mutations.hh b/schema_mutations.hh index df2c32e01b..09d3b483fa 100644 --- a/schema_mutations.hh +++ b/schema_mutations.hh @@ -32,15 +32,17 @@ class schema_mutations { mutation _columnfamilies; mutation _columns; mutation_opt _view_virtual_columns; + mutation_opt _computed_columns; mutation_opt _indices; mutation_opt _dropped_columns; mutation_opt _scylla_tables; public: - schema_mutations(mutation columnfamilies, mutation columns, mutation_opt view_virtual_columns, mutation_opt indices, mutation_opt dropped_columns, + schema_mutations(mutation columnfamilies, mutation columns, mutation_opt view_virtual_columns, mutation_opt computed_columns, mutation_opt indices, mutation_opt dropped_columns, mutation_opt scylla_tables) : _columnfamilies(std::move(columnfamilies)) , _columns(std::move(columns)) , _view_virtual_columns(std::move(view_virtual_columns)) + , _computed_columns(std::move(computed_columns)) , _indices(std::move(indices)) , _dropped_columns(std::move(dropped_columns)) , _scylla_tables(std::move(scylla_tables)) @@ -51,7 +53,8 @@ public: std::optional indices, std::optional dropped_columns, std::optional scylla_tables, - std::optional view_virtual_columns); + std::optional view_virtual_columns, + std::optional computed_columns); schema_mutations(schema_mutations&&) = default; schema_mutations& operator=(schema_mutations&&) = default; @@ -72,6 +75,10 @@ public: return _view_virtual_columns; } + const mutation_opt& computed_columns_mutation() const { + return _computed_columns; + } + const mutation_opt& scylla_tables() const { return _scylla_tables; } @@ -102,6 +109,13 @@ public: return {}; } + std::optional computed_columns_canonical_mutation() const { + if (_computed_columns) { + return canonical_mutation(*_computed_columns); + } + return {}; + } + std::optional indices_canonical_mutation() const { if (_indices) { return canonical_mutation(*_indices); From 1e54752167729daf8b7d83193f0135fa345b5d91 Mon Sep 17 00:00:00 2001 From: Piotr Sarna Date: Fri, 12 Jul 2019 09:41:52 +0200 Subject: [PATCH 11/14] docs: init system_schema_keyspace.md with column computations The documentation file for system_schema keyspace is introduced, and its first entry describes the column_computation table. --- docs/system_schema_keyspace.md | 40 ++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 docs/system_schema_keyspace.md diff --git a/docs/system_schema_keyspace.md b/docs/system_schema_keyspace.md new file mode 100644 index 0000000000..a1ee1e5f1d --- /dev/null +++ b/docs/system_schema_keyspace.md @@ -0,0 +1,40 @@ +# System schema keyspace layout + +This section describes layouts and usage of system\_schema.* tables. + +## system\_schema.computed\_columns + +Computed columns are a special kind of columns. Rather than having their value provided directly +by the user, they are computed - possibly from other column values. Examples of such computed +columns could be: + * token column generated from the base partition key for secondary indexes + * map value column, generated as the extraction of a single value from a map stored in a different column + +Computed columns in many ways act as regular columns, so they are also present in the `system_schema.columns` table - +`system_schema.computed_columns` is an additional mapping that marks the column as computed and provides its computation. + +Schema: +~~~ +CREATE TABLE system_schema.computed_columns ( + keyspace_name text, + table_name text, + column_name text, + computation blob, + PRIMARY KEY (keyspace_name, table_name, column_name) +) WITH CLUSTERING ORDER BY (table_name ASC, column_name ASC); +~~~ + +`computation` is stored as a blob and its contents are assumed to be a JSON representation of computation's type +and any custom fields needed. + +Example representations: +~~~ +{'type':'token'} + +{'type':'map_value','map':'my_map_column_name','key':'AF$^GESHHgge6yhf'} +~~~ + +The token computation does not need additional arguments, as it returns the token of base's partition key. +In order to compute a map value, what's additionally needed is the column name that stores the map and the key +at which the value is expected. + From 1c0ef5f9e9a8ec169a4ff2341268a5e2a69059e5 Mon Sep 17 00:00:00 2001 From: Piotr Sarna Date: Fri, 21 Jun 2019 14:06:46 +0200 Subject: [PATCH 12/14] tests: generate new test case for schema change + computed cols The original "test_schema_digest_does_not_change" test case ensures that schema digests will match for older nodes that do not support all the features yet (including computed columns). The additional case uses sstables generated after computed columns are allowed, in order to make sure that the digest computed including computed columns does not change spuriously as well. --- tests/schema_change_test.cc | 57 ++++++++++++++---- .../mc-1-big-CompressionInfo.db | Bin 0 -> 66 bytes .../mc-1-big-Data.db | Bin 0 -> 31 bytes .../mc-1-big-Digest.crc32 | 1 + .../mc-1-big-Filter.db | Bin 0 -> 16 bytes .../mc-1-big-Index.db | Bin 0 -> 10 bytes .../mc-1-big-Scylla.db | Bin 0 -> 78 bytes .../mc-1-big-Statistics.db | Bin 0 -> 4663 bytes .../mc-1-big-Summary.db | Bin 0 -> 62 bytes .../mc-1-big-TOC.txt | 9 +++ .../mc-1-big-CompressionInfo.db | Bin 0 -> 66 bytes .../mc-1-big-Data.db | Bin 0 -> 87 bytes .../mc-1-big-Digest.crc32 | 1 + .../mc-1-big-Filter.db | Bin 0 -> 16 bytes .../mc-1-big-Index.db | Bin 0 -> 15 bytes .../mc-1-big-Scylla.db | Bin 0 -> 78 bytes .../mc-1-big-Statistics.db | Bin 0 -> 4637 bytes .../mc-1-big-Summary.db | Bin 0 -> 53 bytes .../mc-1-big-TOC.txt | 9 +++ .../mc-1-big-CompressionInfo.db | Bin 0 -> 74 bytes .../mc-1-big-Data.db | Bin 0 -> 2599 bytes .../mc-1-big-Digest.crc32 | 1 + .../mc-1-big-Filter.db | Bin 0 -> 96 bytes .../mc-1-big-Index.db | Bin 0 -> 1342 bytes .../mc-1-big-Scylla.db | Bin 0 -> 78 bytes .../mc-1-big-Statistics.db | Bin 0 -> 5090 bytes .../mc-1-big-Summary.db | Bin 0 -> 92 bytes .../mc-1-big-TOC.txt | 9 +++ .../mc-7-big-CompressionInfo.db | Bin 0 -> 74 bytes .../mc-7-big-Data.db | Bin 0 -> 5074 bytes .../mc-7-big-Digest.crc32 | 1 + .../mc-7-big-Filter.db | Bin 0 -> 336 bytes .../mc-7-big-Index.db | Bin 0 -> 9 bytes .../mc-7-big-Scylla.db | Bin 0 -> 78 bytes .../mc-7-big-Statistics.db | Bin 0 -> 5697 bytes .../mc-7-big-Summary.db | Bin 0 -> 59 bytes .../mc-7-big-TOC.txt | 9 +++ .../mc-8-big-CompressionInfo.db | Bin 0 -> 66 bytes .../mc-8-big-Data.db | Bin 0 -> 53 bytes .../mc-8-big-Digest.crc32 | 1 + .../mc-8-big-Filter.db | Bin 0 -> 16 bytes .../mc-8-big-Index.db | Bin 0 -> 9 bytes .../mc-8-big-Scylla.db | Bin 0 -> 78 bytes .../mc-8-big-Statistics.db | Bin 0 -> 5694 bytes .../mc-8-big-Summary.db | Bin 0 -> 59 bytes .../mc-8-big-TOC.txt | 9 +++ .../mc-3-big-CompressionInfo.db | Bin 0 -> 66 bytes .../mc-3-big-Data.db | Bin 0 -> 29 bytes .../mc-3-big-Digest.crc32 | 1 + .../mc-3-big-Filter.db | Bin 0 -> 176 bytes .../mc-3-big-Index.db | Bin 0 -> 8 bytes .../mc-3-big-Scylla.db | Bin 0 -> 78 bytes .../mc-3-big-Statistics.db | Bin 0 -> 5104 bytes .../mc-3-big-Summary.db | Bin 0 -> 56 bytes .../mc-3-big-TOC.txt | 9 +++ .../mc-1-big-CompressionInfo.db | Bin 0 -> 66 bytes .../mc-1-big-Data.db | Bin 0 -> 192 bytes .../mc-1-big-Digest.crc32 | 1 + .../mc-1-big-Filter.db | Bin 0 -> 16 bytes .../mc-1-big-Index.db | Bin 0 -> 16 bytes .../mc-1-big-Scylla.db | Bin 0 -> 78 bytes .../mc-1-big-Statistics.db | Bin 0 -> 4883 bytes .../mc-1-big-Summary.db | Bin 0 -> 53 bytes .../mc-1-big-TOC.txt | 9 +++ .../mc-1-big-CompressionInfo.db | Bin 0 -> 66 bytes .../mc-1-big-Data.db | Bin 0 -> 36 bytes .../mc-1-big-Digest.crc32 | 1 + .../mc-1-big-Filter.db | Bin 0 -> 16 bytes .../mc-1-big-Index.db | Bin 0 -> 10 bytes .../mc-1-big-Scylla.db | Bin 0 -> 78 bytes .../mc-1-big-Statistics.db | Bin 0 -> 4819 bytes .../mc-1-big-Summary.db | Bin 0 -> 62 bytes .../mc-1-big-TOC.txt | 9 +++ .../mc-1-big-CompressionInfo.db | Bin 0 -> 66 bytes .../mc-1-big-Data.db | Bin 0 -> 150 bytes .../mc-1-big-Digest.crc32 | 1 + .../mc-1-big-Filter.db | Bin 0 -> 16 bytes .../mc-1-big-Index.db | Bin 0 -> 77 bytes .../mc-1-big-Scylla.db | Bin 0 -> 78 bytes .../mc-1-big-Statistics.db | Bin 0 -> 4777 bytes .../mc-1-big-Summary.db | Bin 0 -> 122 bytes .../mc-1-big-TOC.txt | 9 +++ .../mc-1-big-CompressionInfo.db | Bin 0 -> 66 bytes .../mc-1-big-Data.db | Bin 0 -> 31 bytes .../mc-1-big-Digest.crc32 | 1 + .../mc-1-big-Filter.db | Bin 0 -> 16 bytes .../mc-1-big-Index.db | Bin 0 -> 10 bytes .../mc-1-big-Scylla.db | Bin 0 -> 78 bytes .../mc-1-big-Statistics.db | Bin 0 -> 5001 bytes .../mc-1-big-Summary.db | Bin 0 -> 62 bytes .../mc-1-big-TOC.txt | 9 +++ .../mc-17-big-CompressionInfo.db | Bin 0 -> 66 bytes .../mc-17-big-Data.db | Bin 0 -> 940 bytes .../mc-17-big-Digest.crc32 | 1 + .../mc-17-big-Filter.db | Bin 0 -> 336 bytes .../mc-17-big-Index.db | Bin 0 -> 66 bytes .../mc-17-big-Scylla.db | Bin 0 -> 78 bytes .../mc-17-big-Statistics.db | Bin 0 -> 4958 bytes .../mc-17-big-Summary.db | Bin 0 -> 71 bytes .../mc-17-big-TOC.txt | 9 +++ .../mc-13-big-CompressionInfo.db | Bin 0 -> 66 bytes .../mc-13-big-Data.db | Bin 0 -> 100 bytes .../mc-13-big-Digest.crc32 | 1 + .../mc-13-big-Filter.db | Bin 0 -> 336 bytes .../mc-13-big-Index.db | Bin 0 -> 19 bytes .../mc-13-big-Scylla.db | Bin 0 -> 78 bytes .../mc-13-big-Statistics.db | Bin 0 -> 4766 bytes .../mc-13-big-Summary.db | Bin 0 -> 61 bytes .../mc-13-big-TOC.txt | 9 +++ .../mc-9-big-CompressionInfo.db | Bin 0 -> 66 bytes .../mc-9-big-Data.db | Bin 0 -> 31 bytes .../mc-9-big-Digest.crc32 | 1 + .../mc-9-big-Filter.db | Bin 0 -> 16 bytes .../mc-9-big-Index.db | Bin 0 -> 10 bytes .../mc-9-big-Scylla.db | Bin 0 -> 78 bytes .../mc-9-big-Statistics.db | Bin 0 -> 4761 bytes .../mc-9-big-Summary.db | Bin 0 -> 62 bytes .../mc-9-big-TOC.txt | 9 +++ .../mc-1-big-CompressionInfo.db | Bin 0 -> 66 bytes .../mc-1-big-Data.db | Bin 0 -> 31 bytes .../mc-1-big-Digest.crc32 | 1 + .../mc-1-big-Filter.db | Bin 0 -> 16 bytes .../mc-1-big-Index.db | Bin 0 -> 10 bytes .../mc-1-big-Scylla.db | Bin 0 -> 78 bytes .../mc-1-big-Statistics.db | Bin 0 -> 5098 bytes .../mc-1-big-Summary.db | Bin 0 -> 62 bytes .../mc-1-big-TOC.txt | 9 +++ .../mc-13-big-CompressionInfo.db | Bin 0 -> 66 bytes .../mc-13-big-Data.db | Bin 0 -> 104 bytes .../mc-13-big-Digest.crc32 | 1 + .../mc-13-big-Filter.db | Bin 0 -> 336 bytes .../mc-13-big-Index.db | Bin 0 -> 19 bytes .../mc-13-big-Scylla.db | Bin 0 -> 78 bytes .../mc-13-big-Statistics.db | Bin 0 -> 4916 bytes .../mc-13-big-Summary.db | Bin 0 -> 61 bytes .../mc-13-big-TOC.txt | 9 +++ .../mc-29-big-CompressionInfo.db | Bin 0 -> 66 bytes .../mc-29-big-Data.db | Bin 0 -> 233 bytes .../mc-29-big-Digest.crc32 | 1 + .../mc-29-big-Filter.db | Bin 0 -> 336 bytes .../mc-29-big-Index.db | Bin 0 -> 65 bytes .../mc-29-big-Scylla.db | Bin 0 -> 78 bytes .../mc-29-big-Statistics.db | Bin 0 -> 4807 bytes .../mc-29-big-Summary.db | Bin 0 -> 71 bytes .../mc-29-big-TOC.txt | 9 +++ .../mc-17-big-CompressionInfo.db | Bin 0 -> 66 bytes .../mc-17-big-Data.db | Bin 0 -> 238 bytes .../mc-17-big-Digest.crc32 | 1 + .../mc-17-big-Filter.db | Bin 0 -> 336 bytes .../mc-17-big-Index.db | Bin 0 -> 64 bytes .../mc-17-big-Scylla.db | Bin 0 -> 78 bytes .../mc-17-big-Statistics.db | Bin 0 -> 4721 bytes .../mc-17-big-Summary.db | Bin 0 -> 71 bytes .../mc-17-big-TOC.txt | 9 +++ .../mc-17-big-CompressionInfo.db | Bin 0 -> 66 bytes .../mc-17-big-Data.db | Bin 0 -> 884 bytes .../mc-17-big-Digest.crc32 | 1 + .../mc-17-big-Filter.db | Bin 0 -> 336 bytes .../mc-17-big-Index.db | Bin 0 -> 66 bytes .../mc-17-big-Scylla.db | Bin 0 -> 78 bytes .../mc-17-big-Statistics.db | Bin 0 -> 6213 bytes .../mc-17-big-Summary.db | Bin 0 -> 71 bytes .../mc-17-big-TOC.txt | 9 +++ .../mc-1-big-CompressionInfo.db | Bin 0 -> 66 bytes .../mc-1-big-Data.db | Bin 0 -> 31 bytes .../mc-1-big-Digest.crc32 | 1 + .../mc-1-big-Filter.db | Bin 0 -> 16 bytes .../mc-1-big-Index.db | Bin 0 -> 10 bytes .../mc-1-big-Scylla.db | Bin 0 -> 78 bytes .../mc-1-big-Statistics.db | Bin 0 -> 4832 bytes .../mc-1-big-Summary.db | Bin 0 -> 62 bytes .../mc-1-big-TOC.txt | 9 +++ .../mc-3-big-CompressionInfo.db | Bin 0 -> 66 bytes .../mc-3-big-Data.db | Bin 0 -> 107 bytes .../mc-3-big-Digest.crc32 | 1 + .../mc-3-big-Filter.db | Bin 0 -> 336 bytes .../mc-3-big-Index.db | Bin 0 -> 19 bytes .../mc-3-big-Scylla.db | Bin 0 -> 78 bytes .../mc-3-big-Statistics.db | Bin 0 -> 4909 bytes .../mc-3-big-Summary.db | Bin 0 -> 61 bytes .../mc-3-big-TOC.txt | 9 +++ .../mc-5-big-CompressionInfo.db | Bin 0 -> 66 bytes .../mc-5-big-Data.db | Bin 0 -> 116 bytes .../mc-5-big-Digest.crc32 | 1 + .../mc-5-big-Filter.db | Bin 0 -> 336 bytes .../mc-5-big-Index.db | Bin 0 -> 16 bytes .../mc-5-big-Scylla.db | Bin 0 -> 78 bytes .../mc-5-big-Statistics.db | Bin 0 -> 4939 bytes .../mc-5-big-Summary.db | Bin 0 -> 58 bytes .../mc-5-big-TOC.txt | 9 +++ .../mc-7-big-CompressionInfo.db | Bin 0 -> 66 bytes .../mc-7-big-Data.db | Bin 0 -> 618 bytes .../mc-7-big-Digest.crc32 | 1 + .../mc-7-big-Filter.db | Bin 0 -> 336 bytes .../mc-7-big-Index.db | Bin 0 -> 26 bytes .../mc-7-big-Scylla.db | Bin 0 -> 78 bytes .../mc-7-big-Statistics.db | Bin 0 -> 6309 bytes .../mc-7-big-Summary.db | Bin 0 -> 61 bytes .../mc-7-big-TOC.txt | 9 +++ 199 files changed, 264 insertions(+), 13 deletions(-) create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/IndexInfo-9f5c6374d48532299a0a5094af9ad1e3/mc-1-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/IndexInfo-9f5c6374d48532299a0a5094af9ad1e3/mc-1-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/IndexInfo-9f5c6374d48532299a0a5094af9ad1e3/mc-1-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/IndexInfo-9f5c6374d48532299a0a5094af9ad1e3/mc-1-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/IndexInfo-9f5c6374d48532299a0a5094af9ad1e3/mc-1-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/IndexInfo-9f5c6374d48532299a0a5094af9ad1e3/mc-1-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/IndexInfo-9f5c6374d48532299a0a5094af9ad1e3/mc-1-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/IndexInfo-9f5c6374d48532299a0a5094af9ad1e3/mc-1-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/IndexInfo-9f5c6374d48532299a0a5094af9ad1e3/mc-1-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/mc-1-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/mc-1-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/mc-1-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/mc-1-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/mc-1-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/mc-1-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/mc-1-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/mc-1-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/mc-1-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/mc-1-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/mc-1-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/mc-1-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/mc-1-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/mc-1-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/mc-1-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/mc-1-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/mc-1-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/mc-1-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-7-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-7-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-7-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-7-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-7-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-7-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-7-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-7-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-7-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-8-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-8-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-8-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-8-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-8-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-8-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-8-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-8-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-8-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/peers-37f71aca7dc2383ba70672528af04d4f/mc-3-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/peers-37f71aca7dc2383ba70672528af04d4f/mc-3-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/peers-37f71aca7dc2383ba70672528af04d4f/mc-3-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/peers-37f71aca7dc2383ba70672528af04d4f/mc-3-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/peers-37f71aca7dc2383ba70672528af04d4f/mc-3-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/peers-37f71aca7dc2383ba70672528af04d4f/mc-3-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/peers-37f71aca7dc2383ba70672528af04d4f/mc-3-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/peers-37f71aca7dc2383ba70672528af04d4f/mc-3-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/peers-37f71aca7dc2383ba70672528af04d4f/mc-3-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/scylla_views_builds_in_progress-a04c7bfd1e1336c9a44df22da352281d/mc-1-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/scylla_views_builds_in_progress-a04c7bfd1e1336c9a44df22da352281d/mc-1-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/scylla_views_builds_in_progress-a04c7bfd1e1336c9a44df22da352281d/mc-1-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/scylla_views_builds_in_progress-a04c7bfd1e1336c9a44df22da352281d/mc-1-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/scylla_views_builds_in_progress-a04c7bfd1e1336c9a44df22da352281d/mc-1-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/scylla_views_builds_in_progress-a04c7bfd1e1336c9a44df22da352281d/mc-1-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/scylla_views_builds_in_progress-a04c7bfd1e1336c9a44df22da352281d/mc-1-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/scylla_views_builds_in_progress-a04c7bfd1e1336c9a44df22da352281d/mc-1-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system/scylla_views_builds_in_progress-a04c7bfd1e1336c9a44df22da352281d/mc-1-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_auth/roles-5bc52802de2535edaeab188eecebb090/mc-1-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_auth/roles-5bc52802de2535edaeab188eecebb090/mc-1-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_auth/roles-5bc52802de2535edaeab188eecebb090/mc-1-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_auth/roles-5bc52802de2535edaeab188eecebb090/mc-1-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_auth/roles-5bc52802de2535edaeab188eecebb090/mc-1-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_auth/roles-5bc52802de2535edaeab188eecebb090/mc-1-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_auth/roles-5bc52802de2535edaeab188eecebb090/mc-1-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_auth/roles-5bc52802de2535edaeab188eecebb090/mc-1-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_auth/roles-5bc52802de2535edaeab188eecebb090/mc-1-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/aggregates-924c55872e3a345bb10c12f37c1ba895/mc-1-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/aggregates-924c55872e3a345bb10c12f37c1ba895/mc-1-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/aggregates-924c55872e3a345bb10c12f37c1ba895/mc-1-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/aggregates-924c55872e3a345bb10c12f37c1ba895/mc-1-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/aggregates-924c55872e3a345bb10c12f37c1ba895/mc-1-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/aggregates-924c55872e3a345bb10c12f37c1ba895/mc-1-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/aggregates-924c55872e3a345bb10c12f37c1ba895/mc-1-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/aggregates-924c55872e3a345bb10c12f37c1ba895/mc-1-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/aggregates-924c55872e3a345bb10c12f37c1ba895/mc-1-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/columns-24101c25a2ae3af787c1b40ee1aca33f/mc-17-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/columns-24101c25a2ae3af787c1b40ee1aca33f/mc-17-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/columns-24101c25a2ae3af787c1b40ee1aca33f/mc-17-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/columns-24101c25a2ae3af787c1b40ee1aca33f/mc-17-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/columns-24101c25a2ae3af787c1b40ee1aca33f/mc-17-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/columns-24101c25a2ae3af787c1b40ee1aca33f/mc-17-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/columns-24101c25a2ae3af787c1b40ee1aca33f/mc-17-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/columns-24101c25a2ae3af787c1b40ee1aca33f/mc-17-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/columns-24101c25a2ae3af787c1b40ee1aca33f/mc-17-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/dropped_columns-5e7583b5f3f43af19a39b7e1d6f5f11f/mc-9-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/dropped_columns-5e7583b5f3f43af19a39b7e1d6f5f11f/mc-9-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/dropped_columns-5e7583b5f3f43af19a39b7e1d6f5f11f/mc-9-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/dropped_columns-5e7583b5f3f43af19a39b7e1d6f5f11f/mc-9-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/dropped_columns-5e7583b5f3f43af19a39b7e1d6f5f11f/mc-9-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/dropped_columns-5e7583b5f3f43af19a39b7e1d6f5f11f/mc-9-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/dropped_columns-5e7583b5f3f43af19a39b7e1d6f5f11f/mc-9-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/dropped_columns-5e7583b5f3f43af19a39b7e1d6f5f11f/mc-9-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/dropped_columns-5e7583b5f3f43af19a39b7e1d6f5f11f/mc-9-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/functions-96489b7980be3e14a70166a0b9159450/mc-1-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/functions-96489b7980be3e14a70166a0b9159450/mc-1-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/functions-96489b7980be3e14a70166a0b9159450/mc-1-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/functions-96489b7980be3e14a70166a0b9159450/mc-1-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/functions-96489b7980be3e14a70166a0b9159450/mc-1-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/functions-96489b7980be3e14a70166a0b9159450/mc-1-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/functions-96489b7980be3e14a70166a0b9159450/mc-1-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/functions-96489b7980be3e14a70166a0b9159450/mc-1-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/functions-96489b7980be3e14a70166a0b9159450/mc-1-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/indexes-0feb57ac311f382fba6d9024d305702f/mc-13-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/indexes-0feb57ac311f382fba6d9024d305702f/mc-13-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/indexes-0feb57ac311f382fba6d9024d305702f/mc-13-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/indexes-0feb57ac311f382fba6d9024d305702f/mc-13-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/indexes-0feb57ac311f382fba6d9024d305702f/mc-13-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/indexes-0feb57ac311f382fba6d9024d305702f/mc-13-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/indexes-0feb57ac311f382fba6d9024d305702f/mc-13-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/indexes-0feb57ac311f382fba6d9024d305702f/mc-13-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/indexes-0feb57ac311f382fba6d9024d305702f/mc-13-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/scylla_tables-5d912ff1f7593665b2c88042ab5103dd/mc-17-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/scylla_tables-5d912ff1f7593665b2c88042ab5103dd/mc-17-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/scylla_tables-5d912ff1f7593665b2c88042ab5103dd/mc-17-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/scylla_tables-5d912ff1f7593665b2c88042ab5103dd/mc-17-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/scylla_tables-5d912ff1f7593665b2c88042ab5103dd/mc-17-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/scylla_tables-5d912ff1f7593665b2c88042ab5103dd/mc-17-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/scylla_tables-5d912ff1f7593665b2c88042ab5103dd/mc-17-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/scylla_tables-5d912ff1f7593665b2c88042ab5103dd/mc-17-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/scylla_tables-5d912ff1f7593665b2c88042ab5103dd/mc-17-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/triggers-4df70b666b05325195a132b54005fd48/mc-1-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/triggers-4df70b666b05325195a132b54005fd48/mc-1-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/triggers-4df70b666b05325195a132b54005fd48/mc-1-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/triggers-4df70b666b05325195a132b54005fd48/mc-1-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/triggers-4df70b666b05325195a132b54005fd48/mc-1-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/triggers-4df70b666b05325195a132b54005fd48/mc-1-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/triggers-4df70b666b05325195a132b54005fd48/mc-1-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/triggers-4df70b666b05325195a132b54005fd48/mc-1-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/triggers-4df70b666b05325195a132b54005fd48/mc-1-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/types-5a8b1ca866023f77a0459273d308917a/mc-3-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/types-5a8b1ca866023f77a0459273d308917a/mc-3-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/types-5a8b1ca866023f77a0459273d308917a/mc-3-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/types-5a8b1ca866023f77a0459273d308917a/mc-3-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/types-5a8b1ca866023f77a0459273d308917a/mc-3-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/types-5a8b1ca866023f77a0459273d308917a/mc-3-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/types-5a8b1ca866023f77a0459273d308917a/mc-3-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/types-5a8b1ca866023f77a0459273d308917a/mc-3-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/types-5a8b1ca866023f77a0459273d308917a/mc-3-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/view_virtual_columns-08843b6345dc3be29798a0418295cfaa/mc-5-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/view_virtual_columns-08843b6345dc3be29798a0418295cfaa/mc-5-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/view_virtual_columns-08843b6345dc3be29798a0418295cfaa/mc-5-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/view_virtual_columns-08843b6345dc3be29798a0418295cfaa/mc-5-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/view_virtual_columns-08843b6345dc3be29798a0418295cfaa/mc-5-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/view_virtual_columns-08843b6345dc3be29798a0418295cfaa/mc-5-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/view_virtual_columns-08843b6345dc3be29798a0418295cfaa/mc-5-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/view_virtual_columns-08843b6345dc3be29798a0418295cfaa/mc-5-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/view_virtual_columns-08843b6345dc3be29798a0418295cfaa/mc-5-big-TOC.txt create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/views-9786ac1cdd583201a7cdad556410c985/mc-7-big-CompressionInfo.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/views-9786ac1cdd583201a7cdad556410c985/mc-7-big-Data.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/views-9786ac1cdd583201a7cdad556410c985/mc-7-big-Digest.crc32 create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/views-9786ac1cdd583201a7cdad556410c985/mc-7-big-Filter.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/views-9786ac1cdd583201a7cdad556410c985/mc-7-big-Index.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/views-9786ac1cdd583201a7cdad556410c985/mc-7-big-Scylla.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/views-9786ac1cdd583201a7cdad556410c985/mc-7-big-Statistics.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/views-9786ac1cdd583201a7cdad556410c985/mc-7-big-Summary.db create mode 100644 tests/sstables/schema_digest_test_computed_columns/system_schema/views-9786ac1cdd583201a7cdad556410c985/mc-7-big-TOC.txt diff --git a/tests/schema_change_test.cc b/tests/schema_change_test.cc index 83fcbd2fda..50ef9d5662 100644 --- a/tests/schema_change_test.cc +++ b/tests/schema_change_test.cc @@ -510,7 +510,7 @@ SEASTAR_TEST_CASE(test_prepared_statement_is_invalidated_by_schema_change) { // We don't want schema digest to change between Scylla versions because that results in a schema disagreement // during rolling upgrade. -SEASTAR_TEST_CASE(test_schema_digest_does_not_change) { +future<> test_schema_digest_does_not_change_with_disabled_features(sstring data_dir, std::set disabled_features, std::vector expected_digests) { using namespace db; using namespace db::schema_tables; @@ -521,8 +521,6 @@ SEASTAR_TEST_CASE(test_schema_digest_does_not_change) { // new timestamps to appear and schema digests will not match anymore. const bool regenerate = false; - sstring data_dir = "./tests/sstables/schema_digest_test"; - auto db_cfg_ptr = make_shared(); auto& db_cfg = *db_cfg_ptr; if (regenerate) { @@ -532,9 +530,9 @@ SEASTAR_TEST_CASE(test_schema_digest_does_not_change) { db_cfg.data_file_directories({tmp.path().string()}, db::config::config_source::CommandLine); } cql_test_config cfg_in(db_cfg_ptr); - cfg_in.disabled_features = std::set{"COMPUTED_COLUMNS"}; + cfg_in.disabled_features = std::move(disabled_features); - return do_with_cql_env_thread([regenerate](cql_test_env& e) { + return do_with_cql_env_thread([regenerate, expected_digests = std::move(expected_digests)](cql_test_env& e) { if (regenerate) { // Exercise many different kinds of schema changes. e.execute_cql( @@ -572,25 +570,58 @@ SEASTAR_TEST_CASE(test_schema_digest_does_not_change) { schema_features sf = schema_features::of(); - expect_digest(sf, utils::UUID("492719e5-0169-30b1-a15e-3447674c0c0c")); + expect_digest(sf, expected_digests[0]); sf.set(); - expect_digest(sf, utils::UUID("be3c0af4-417f-31d5-8e0e-4ac257ec00ad")); + expect_digest(sf, expected_digests[1]); - expect_digest(schema_features::full(), utils::UUID("be3c0af4-417f-31d5-8e0e-4ac257ec00ad")); + sf.set(); + expect_digest(sf, expected_digests[2]); + + expect_digest(schema_features::full(), expected_digests[3]); // Causes tombstones to become expired // This is in order to test that schema disagreement doesn't form due to expired tombstones being collected // Refs https://github.com/scylladb/scylla/issues/4485 forward_jump_clocks(std::chrono::seconds(60*60*24*31)); - expect_digest(schema_features::full(), utils::UUID("be3c0af4-417f-31d5-8e0e-4ac257ec00ad")); + expect_digest(schema_features::full(), expected_digests[4]); // FIXME: schema_mutations::digest() is still sensitive to expiry, so we can check versions only after forward_jump_clocks() // otherwise the results would not be stable. - expect_version("tests", "table1", utils::UUID("4198e26c-f214-3888-9c49-c396eb01b8d7")); - expect_version("ks", "tbl", utils::UUID("5c9cadec-e5df-357e-81d0-0261530af64b")); - expect_version("ks", "tbl_view", utils::UUID("1d91ad22-ea7c-3e7f-9557-87f0f3bb94d7")); - expect_version("ks", "tbl_view_2", utils::UUID("2dcd4a37-cbb5-399b-b3c9-8eb1398b096b")); + expect_version("tests", "table1", expected_digests[5]); + expect_version("ks", "tbl", expected_digests[6]); + expect_version("ks", "tbl_view", expected_digests[7]); + expect_version("ks", "tbl_view_2", expected_digests[8]); }, cfg_in).then([tmp = std::move(tmp)] {}); } + +SEASTAR_TEST_CASE(test_schema_digest_does_not_change) { + std::vector expected_digests{ + utils::UUID("492719e5-0169-30b1-a15e-3447674c0c0c"), + utils::UUID("be3c0af4-417f-31d5-8e0e-4ac257ec00ad"), + utils::UUID("be3c0af4-417f-31d5-8e0e-4ac257ec00ad"), + utils::UUID("be3c0af4-417f-31d5-8e0e-4ac257ec00ad"), + utils::UUID("be3c0af4-417f-31d5-8e0e-4ac257ec00ad"), + utils::UUID("4198e26c-f214-3888-9c49-c396eb01b8d7"), + utils::UUID("5c9cadec-e5df-357e-81d0-0261530af64b"), + utils::UUID("1d91ad22-ea7c-3e7f-9557-87f0f3bb94d7"), + utils::UUID("2dcd4a37-cbb5-399b-b3c9-8eb1398b096b") + }; + return test_schema_digest_does_not_change_with_disabled_features("./tests/sstables/schema_digest_test", std::set{"COMPUTED_COLUMNS"}, std::move(expected_digests)); +} + +SEASTAR_TEST_CASE(test_schema_digest_does_not_change_after_computed_columns) { + std::vector expected_digests{ + utils::UUID("ddd2b841-1bbb-374a-972c-037d6bc14d28"), + utils::UUID("ea8433b3-d150-3c93-8249-a584537c1b4e"), + utils::UUID("ea8433b3-d150-3c93-8249-a584537c1b4e"), + utils::UUID("9837e11f-13b8-32ba-9171-5563248dc198"), + utils::UUID("9837e11f-13b8-32ba-9171-5563248dc198"), + utils::UUID("774d63ef-2f75-39f8-a2be-418d28d35a97"), + utils::UUID("5217fc3a-308f-32aa-8b9c-41a6f2bcc448"), + utils::UUID("d58e5214-516e-3d0b-95b5-01ab71584a8d"), + utils::UUID("e1b50bed-2ab8-3759-92c7-1f4288046ae6") + }; + return test_schema_digest_does_not_change_with_disabled_features("./tests/sstables/schema_digest_test_computed_columns", std::set{}, std::move(expected_digests)); +} diff --git a/tests/sstables/schema_digest_test_computed_columns/system/IndexInfo-9f5c6374d48532299a0a5094af9ad1e3/mc-1-big-CompressionInfo.db b/tests/sstables/schema_digest_test_computed_columns/system/IndexInfo-9f5c6374d48532299a0a5094af9ad1e3/mc-1-big-CompressionInfo.db new file mode 100644 index 0000000000000000000000000000000000000000..91b683f4fc2bbfbeb72975847924bb3d014eb8f1 GIT binary patch literal 66 zcmZSJ^@%cZ&d)6?b7toI)lYb{S>yHP`l&!MMj)1g&>U*biDDM*)(H#@NK6JM LpezRvgMd5$lOGOG literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system/IndexInfo-9f5c6374d48532299a0a5094af9ad1e3/mc-1-big-Statistics.db b/tests/sstables/schema_digest_test_computed_columns/system/IndexInfo-9f5c6374d48532299a0a5094af9ad1e3/mc-1-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..4bc3f926e5500d29bae9656ae5aee425e49215b8 GIT binary patch literal 4663 zcmeI$c}Nsd7y$5@*~4qy+;uZElrqhu*d#L(Dl^yAC^C=QE^5?8EiZQ0QZp>GKe8}8 z%!0BDBrKA$@+c~>-0nl7t*9{AER5QWG&^vc#U1^=N09$U`(SwQ_r5o8-^{!>^H_?a zgw$a2<1(5%mU9Qg9R=JWpeR`_H91e4p=9&fv`mdMjn(Pc+;lCgOwZIS7Zqr83bdgK ztX7|;&&tcyXd}yu-^89(Y~oJ#v{)mNc{p)ha;e5vVf{gvNLvR2)8N^|HT>ZD z8WCTxw#1A*YCE?47`Dd> zY_AUN@l&xU9mQ6vvBQsG&%1)1FdBR9SZv)A> z^HUUOlK6EnSk2tQ7N{Sf_Cg_^|H8-jP+WAY5?TDY9@#O;g6uS)L3SB%N0z4J`6yGp zM{z}q2eRjDFJy0HBJ#wC_<0BS`Ox>7 z$jvwK{dv`l?kDZ+)(hLyk+HjwOMOov-)#$lW&)bf`;|E$eFEbGuR=6G1TCwbU|d+} zGzVI=%80I4oR?Jy;||THK4>RZ%vWd^pH{S2c?w1D-9L1wHjq=2_^7wVP|9RWCx8K_?!~34>1azcd$m!w=Uk=*pY*vCyZJ z4*5dguPNUR-FLAg2AB?XO>Kcri;jltpRP}6g6p5Q?3cpz&uC1qFN5=$&NFk0fdzWn zv=>LRwao0-0qUY=jHb$HogMHr=*zu;eH@2^h3K8#3POGS~mhO zJlt>wj%TGgA`H&w+(cDf6=+|c+HB|qu6_CHN*(ak6DJ$scuj4=9pS@qTE6YxuX(`n z>w15d4V%*0%KST+%=xAaU$Eu>%ASiKwkKb(<@P-nx*-gl6I{f;=R&uKvhTUj{jl%3 z;5US#?0c^NYR|>31%{&cl~AIcPsA%*6nwr~(q^z8{93W}^Cc>sE74KL=#ZZ4Lv{SO zcBo=Rg%o<<}e9 literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/mc-1-big-Digest.crc32 b/tests/sstables/schema_digest_test_computed_columns/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/mc-1-big-Digest.crc32 new file mode 100644 index 0000000000..483ed3f52c --- /dev/null +++ b/tests/sstables/schema_digest_test_computed_columns/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/mc-1-big-Digest.crc32 @@ -0,0 +1 @@ +2185033598 \ No newline at end of file diff --git a/tests/sstables/schema_digest_test_computed_columns/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/mc-1-big-Filter.db b/tests/sstables/schema_digest_test_computed_columns/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/mc-1-big-Filter.db new file mode 100644 index 0000000000000000000000000000000000000000..a8cfebc67b804856e52962c0e53ecaa2f88a1c82 GIT binary patch literal 16 XcmZQzU|?lnU|?+MWMJfMU}OLQ3B&=L literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/mc-1-big-Index.db b/tests/sstables/schema_digest_test_computed_columns/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/mc-1-big-Index.db new file mode 100644 index 0000000000000000000000000000000000000000..25900c3610f5adabfe1de2c9f253775e1ee56817 GIT binary patch literal 15 WcmZQz$}VPLU|=mtEiNfGW&i*degjMZ literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/mc-1-big-Scylla.db b/tests/sstables/schema_digest_test_computed_columns/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/mc-1-big-Scylla.db new file mode 100644 index 0000000000000000000000000000000000000000..87320db5416c8a4216cdc7d816b4520380dfe87e GIT binary patch literal 78 zcmZQzU|?ooU|<1afj@WrmP}T6+rE%T>1)N@oQ*&+Mj)1g&>Xr&+(8oS%QP4mIO^NK Tww6{r`vjC>0%8sz1_5~hw1p6g literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/mc-1-big-Statistics.db b/tests/sstables/schema_digest_test_computed_columns/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/mc-1-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..0897886b75b26f0eae2de7eb5f16202b3771a790 GIT binary patch literal 4637 zcmeI$drVVT90%}wZy!K~N((BoNHzs^xYP$CYE*nwfyD*np;fok+xAB4c%?0h=%PXV zV{AcYR5bCi&4f545Oq^v#Qoufjj^f3jBS~QB^_H_X18T3ilN@pUip1b_Q(ER)|1?v z^EtoM_PlQI$>lgs%>`4kobmFtS-u4Ms+2Dk#~IqVIpwbHCb2@a7fU9)=yr=`4wqEzlHZYE7oWOV*;~9)oLk`SQAT0=HV+#`~ zE(=-7vXw$8-^h47!PE!W70eXchDQs*@O37ojz2Xzg-z z1T)^q5sd44(9u5h#Di$#`{>DA(24!%7w4j9ot>H6hzkKj# z@T;q^f14A%5a02;5xhUQ4SeG9VsQKCI6rsVVLo|X>;u}K&&+xkyl?tB@K@L7Q46!K z!2hdoOn;lkRf$!wKU5uWMA5jqDryC_=Jf#>ueRJ-MdK0e-iOpt=CyxQPe|&7`zgj^ zyh-D+s+?}>xQrCo&r|e|kJI=I=ij?W{nEnhi`28e+q8^&?#<#>>LuIWI!$f!W$paFjkjB3_OgT1DDN zHeRUym{^zlLAQ%I+FE~~j$i-1;T|2o;a2t~BWXWLtgE2UgQ@2-J53~>^yQF|u2=G3 zSvhqi{z{QAg`Nk}(|+sLlX&L9FP*!H*Pm=_q5awFTar%qb6LK*se!bwwYB#Q5}*F@ zPFEB0)eq0M(f)d`rS@lx$9dy{zNf2+b9Ou!sTnut4waSvV1cpHRH;||e>rn0<6WQ> zLOI;ya$We$1rroLbHQ|Q;WHP^NBGPYK68-`@n1W0$z2yXeoqajdFQq^x3hOF-_mt` zpZszoa4AFc4=W|k@w_x%;JG-DXe*KCTkZ3$PDhp1S>})ehXJ0`d2A)tola?&m3{C8 zUcX>^`sUk~%B8(yzxF78|aBHWmNkkJwSw!Uk7RRYp%c;vKqwP$Y8*DwZ{Fl7Q(?*>zi-EP!Z8B6Wv4N?HIwr13|6Q9>?s4|!9H<;F#%Z>Q)B!waU^Y?%Eu@yv3 z8n%DaVhp!U4_uO10*6Dskus(Vdv*D`Qs6sRl!CT@QwA}DdZfoM;F6SU6EhuVlud3<6WEX2*MPZ(L(eWDmThV76ate&7H$^n(Vo^Yy08}Q*bCTPBMmj@IB zsfSmaiy`mCc)6W!`?MtB>(#i06+(*d_y%=zd0?-WsQuRD zdA0acb}TGaNO7tt6YL1Dl?pdn&6}<w=o29z1`-1eUn(R};jc%pExT44eC zUlv-PhuC|@0$k!P3qoPVJ|W)~gEG0Y_cVTUpe$i}Mh0X$Blr~weE7~CCRCzKYXW)o z8&UW&gY7-pXhLo1U6`YVC$y|%!wg05$p#CkjX7kJ78PsQo>PMs2zUuo0L*=fZy&z^ zik?#gn4;!WpBY{~Uy82B6g=_aJ8Ch-rRZIlA}yPnZr%B`BbegVCobS+JvB7nhO$?j zPdkhl_=Pze&rHo;%6W`rP)Q8ndsHmzI4V|L%K1CKH|B6SZ#^x?@ol`z0DebAWadsX zr{zxwf$!Ev+#z1+jL32*!R?t`%xx3+WuSB%0|`ViB5ODzkf(>|iW!Rr>Df3X5^`~C zY)~Dnk_xM8DjhR;7Xk?p+W0*pdD+D4&KZm{l_f(GPTo)g@u5K_Gj@M|Q!1LK{t`!+ z6eIu->2g3rKwF_FKmI>k=|fx5up^WG)2`y@b(Q#92|NgS!S@$_;`I3+KN*?qql`FW zM7SG~zeC450>v1n7$W128sUiK1q_jNtyb)_Bap#!Q!IA@W65R5Blahp!?pX%;4!mY z8t5IjAJwma?m`3T8uKeahfDcEP&ey32hp}N*}>+mUfWs?T+9;*eEuJnfDr4Puz_~4 zc?(G=YPq)7JBS%J_&vjq{LhbIs8#I%ltqeWa9 z`D+(W-DdA(-wCH_zDtD-yE1YU8zxI?z5rsCt4G%<2v{;bbhD9kVR$8Q^=R7#>iipf zUZELGb$wnO5o{N7Ngo<<`hOjV?F=#kcYR(sE&u%=(IXHc{fFk`B3395x)?{$i_8{C z=|6-Yste}Q4+*mdFBTC`SD&T=K5|1saC$tExgHS|$W!wvN}U;TqMnGA?!-MFgiHk9 zJVK&*!neQX!i^_3xlpVL+YR2EOt%fe6Uh4r6J8!N;)(3Ua=UHODCdHJIzTz&HDau8 zA`+c7-2umgwn%@tNu-N-XC+d6tnTXsEK1_EP1ikIZ?!={E1GI>$Rrl-Ovb`T>(^j| z@;l!__GxtNkn#x;+@bx(gg$&%E=piXX--2Y@SU$iswi3K(xB}$w`he2niBr}gY6#> W>smjPiVlbk&ZU7k#%HTl_5TJBlR--W literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/mc-1-big-Digest.crc32 b/tests/sstables/schema_digest_test_computed_columns/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/mc-1-big-Digest.crc32 new file mode 100644 index 0000000000..a7b62f61b0 --- /dev/null +++ b/tests/sstables/schema_digest_test_computed_columns/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/mc-1-big-Digest.crc32 @@ -0,0 +1 @@ +1020716506 \ No newline at end of file diff --git a/tests/sstables/schema_digest_test_computed_columns/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/mc-1-big-Filter.db b/tests/sstables/schema_digest_test_computed_columns/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/mc-1-big-Filter.db new file mode 100644 index 0000000000000000000000000000000000000000..7a695a2a56f32f56a3a002432463625be41d15cd GIT binary patch literal 96 zcmV-m0H6N=000F5000X}0SyKah(u5TeIYQ7$Vg}tOQA%O08!>4a0VgB1$+twm9|te z6oh2JMkv8ngU~7f1kib?aUzALXmXfSP*rQh$|5S|(FNg&6a`Ec88vmm#UG210V^3c C&mZ3a literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/mc-1-big-Index.db b/tests/sstables/schema_digest_test_computed_columns/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/mc-1-big-Index.db new file mode 100644 index 0000000000000000000000000000000000000000..1c9376e38f7853a79528e873504ce84814e2efbd GIT binary patch literal 1342 zcmY+?Pe_w-9LMqB5DNwASKdNlQ52D^VIut#*1{- zn`Rj?JtipA5d=U2uQr`MY(;SMK}uFUGPZkEeFm` zxe2de=dl}fsP_}fLNO%EJ|D_pVxDjk<+DjD6BWP{zrwOiTm-&2%J>#IdXC=NUk{A< z=$-u!fo*<=+8#bpsYQ^QFz!F(Cj0}u{M0Eibr$$?!6cjpR=Khg2X_J&Q}oWk zIPmcVg!u4;ytiZU4@qCPMxDi-!(30cB GU@&N9~>;mr7({;HY|e U_IOL6#(JO(6A*I%F$l;500^NHH~;_u literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/mc-1-big-Statistics.db b/tests/sstables/schema_digest_test_computed_columns/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/mc-1-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..b3a08e57ba0a50822210e9145dc45597e21e14a4 GIT binary patch literal 5090 zcmeI$drVtZ7y$75=o3nX!ZwDE=mu`!EC?doG9Dd8s2KryY)r-O(q5q(ZAn`;U^62V z{}2rWBjS=h)Fp(l2T@cWE^`S2PN&<*Vx8F*Opxh};*6WjE#NKOTfXn8smA{dH@P|I zcfWIb&+FcvmZB&bHFv}a2`!vkgp(1@8sTIqN~fhBa=I$?Ts3E@%Yl45wT0C962*HGcA02s8XSjvkFGWvND!o7~c)s zh0}NVZU_(3zJ|a}50 z<;mEJG;Af&U)3EP4;sPNOk&^jBDU^L?8Q%EM~!0NFU^B^`N6|Dt}n$-J&3*GBzD0f z?5#_&-A`gSao8Qi`W-Ri_+&IP9eo44v>5v!UZ3>jmnhB@N$Ya%GV>`mTlxhmFO%W* zFS~FS#pRzgBP)LHLRJ;cAgiZ&qamy#MwZ^vr8o`1~{c_|*?VeP--fdOa}fp~qhZmc^XYnV_epcEkCR|JKq5 zzdw|5;S&Z>Ue*3i{d>Sc`EL!ofHmgkpJ4yBm%^^Y{)b)2?a_hqi@2t0_^iB{i{$KZ8Qhzr|88MaiT+(H@=6u)Mq=163}=o?75QQcr5I>{@b2Q7)yqtj~}PxFJDxoeeb2@%~?lwJiD($ z**b5z!JFUv$h_e`&Rl#-5_1`|_dOPQGS8`SQ zk`j}#xUO3GjipeP*Liri+2#mXX`|Co;j5&ctKqEi{NpNN7H3tB-SHe}w^h}d9h{vH zShb}1@io4?X)I2=@CTNMx0*T6!+|+LkPVzNsb)Zj_hB@vJ0?!eP literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/mc-1-big-Summary.db b/tests/sstables/schema_digest_test_computed_columns/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/mc-1-big-Summary.db new file mode 100644 index 0000000000000000000000000000000000000000..8e5f14fecfd20d2363fc26b6d5414ce9775c389f GIT binary patch literal 92 ycmZQzU}#`qU|n2s)3aRS|ks=hjapW{olh}?bt5T6-nlI5WWh?4OKZ}{p%^JiWvr=S0poH_8+ zrxc9~zO{@-$D|Ni6Cr;i-p z@8138ZQuLbJFh+ewKFeeIV`=mTw}B~I+jqZEhVNHO(c2B}ea*4?L@i zb}j~!tTw?Kn-^tVd+SSdJe!mDIs0g@W;Mi^b@V!E?TcYwp51(F^j34zs8dSWloVob z{u(|t-sJ4G4>_4wcFL<&aUmvagW>+hm1H@Juj`VCHYdxeT!foi!H49X)@)czSeJ1X zLm(udT`Z0qQ7T25xC9p^{H#mS!MvcxGd6{gbJ48v5qWln+}Tu$&2N{3jz8>mggv=) z^4u_)Ou<7jA15GZvNndgfglf#Y`K~{IhP6-C&&_G(lI@)coY~!Yp72k1=(27t~H^U zL@BrtTa{eGZnZ>_qK}mt6uY4YZ8~|7%6sofnbVYm$R1UjwM(H;g<^>;cv5bTa@CX~ zsEv*aX&x>4BkYnNQKxk91>{&4^KL~Y(j9Wjf@5z9H@Wt^RKjPz?tBO)0*hzbyO%;{ zfMbgvK8QtX>ZY|x2G|1$9i1tEtX4@epL5MC)rhS4;?*NSzHm!TQvbbD>%s-%yQ_8U z1FexfU*TZ!HkkklILMY@Zm%|gp?4Xyk-`V6f%cD9lzg27v(F(?$6B^UvrB#|{0)zW1yz)JM|taSKN~{E$zkEa<0{ofc>rYxZ;8_&^Iv?8F)8eR{ijrS|?gd zQ9zD9QgiC7l?8_-Tl&*m>nYlzh-=mX1xRz`-n~wy0+lf?=|WRQ9RT$Sbt-^vsD!Rh zFUqXj-3)>~Qa?`c+R)-5*t|;yE6_Iclel$Fso(_e5mmiTL7-HfoQYRf{2!hn+2PW`ZKlqJyA>QBFy1{9$BW(%=wzMj0G4IGVGIR zxe^vD4Wx1#dVjMT#t_}n=6<-EJ3uc#t>rK4!!)WT%jR9x#cbdN$d)r8 z$?K{?EZ0pe&tH=?m3vJN#sYa-^W$oe^s$LOmKN8KSJlszdRY4TIR%YSYg?Xa7 zPq*_+9Lj7wS*gop38-Y9AFQ|e&{3-iU5Ost|CWpb&8Y9K)>tdnp&IrbVnF6%r=R{! zH0}6W-8YX-sDG%JVJ8!ue@Ay8ZA-0wP;FMw0|1BX6EsGO?P4u6)f#k#W*HdqtP%@1 zrc|IWE(Sp8oCJ+g!26mFxXu-xL(TlUoXcPv<)Q_E&SRav{`G2*?R{Nzk+$s03mv&t zb|OV(dwrOPU?rWORtJ#^XLI~Qy%gx9qDR#TNegbjtfGUEnlWYzm&7fyj+Bh6WGj zL!C9&_##y8&dN?ck91uM|07GFiF|yzqdwgo3k+Fc^9%=~=W&-(i!|-lMox75`t}L6 zt8Sn18dlSs09mhL^XCnJj=o=`_P#$6@raGwcC7ODM1wbT0E z{And`G^?m>aG=EO6?#w4R{i|OmNi>)#?8zdd$cY7Z*=)bb>u4900Xc|L0ohAmu^2_ zC2K$r&{C`NlUieZ4#y+IgGT^ znmIjN$+_+zh6@uT7NS1X*$F80g{igRdUFig2SU!B?qDdl8#)7_sO%_C6?hHb>w^_oL;X)QZi?qqjq z-e$V#A3HRfzinz@+zwdmiOvXxaQ~PM=c!a%x5vP#nw)iPs1kEoc1A)lN9Xyg5Z5a03i}q5}J%JkH)d zy#aWrbZ;K#65p6a-QhUUZFJBqn%jH*@bhlpZoQ0#BDNvQV7@yeUsszdVJ&lS4mN`l zuu}6=V-guM-*bpZ#G(9i4g0yg}-YCIZGp-oW?Tt>Ch5>p$0K72;COZvG9;ufhs6-Z~jZbK3d%0b2CFoJlrQ} zN4j&%uW5hNOy7U1I)UyL%oUW_o9V~2Wz5+rwPqcw#?+Is>Io{tTzP%Gy9$iy63X)~ zwS*nVsI2$)VA8aHr7iQ%ph{2-Q2$)y2^^ zLWZJ0DdRa934Uy6Kzw>@(>ax1#TDZ6S_`#X2GOzMA_|XK7rZPM96JdB8Tt~q<(EKv zL*r$KjDHp9aLMhYOpF-9NOHgcVis z1~|%>S!{h&JFS6CtWgSn2QNaH$}eCD?yOE-dQrlLh~;s$!B~P06E9HPtVZakGk3}m zE1`FY9InR`#WEQqn#c(*7sW+}Zelt>q}!~5GmFH_Go=#ESuH1XE;P`tWXA&pckrT15R$Zdh&WKT7OB+9iFnQ(`y(LAziFK<>OGbWUl z{EyT*mcR$tge+py$PcS=4gEla6qkH6W+I%Aky!#{9%uY+-yAWH&0-bOh4|g ztG>TOji;Fqac_7loIR>YJ_rffwsuZhXxzp?1BhnZ7Zk01`oeSOWn3-iF-bciWdCs5z5#``YRf&yWeu!NoGkq4oJuHJ)$Zmaql8 sGpBG6_@AR}?K`aYol~&x|LT?AT!C^yZ?)RK8RMNzP=Ej3-@W($0n9FNSO5S3 literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-7-big-Digest.crc32 b/tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-7-big-Digest.crc32 new file mode 100644 index 0000000000..5481491e5a --- /dev/null +++ b/tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-7-big-Digest.crc32 @@ -0,0 +1 @@ +259816102 \ No newline at end of file diff --git a/tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-7-big-Filter.db b/tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-7-big-Filter.db new file mode 100644 index 0000000000000000000000000000000000000000..9c667654b33b328da0551294f7980d5972f4d009 GIT binary patch literal 336 lcmZQzU|?lnV9*3&S^)v019>j5dZ)H literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-7-big-Scylla.db b/tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-7-big-Scylla.db new file mode 100644 index 0000000000000000000000000000000000000000..2eaf46aa98fe62027e42d98e9d293d0c6dd2aed8 GIT binary patch literal 78 zcmZQzU|?ooU|<1a0p|V|ldL{3+a0r6liwZq6bTe#1Y#)&%`u&|-K=Pt_GtzNBqjqB LP?iITK|me=X%G&$ literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-7-big-Statistics.db b/tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-7-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..c3cf140074c4adf34a84ba5a74f78f7339fd911d GIT binary patch literal 5697 zcmeI$TTC2P7y#gzy>eN$>_Q90lxPdKAXx~Aw5Bb$t+1v|DHluCW_#Ej*e$R#°E zH8m9i*ipIIb(h)@NWFHeeg6_J-WX@vs4G z(-`)WXR)oX2OS)z%O1t?xIyf@Q?c(oift>$&N_mfcLuv?DfX`A*wQxaCW75gjo$$~ zj*rD7v+>ul%S*A3;PJ_heTm|l68t`EKE>9Se}T&Dba?#hE}lbi{m0G7hF?37LrSKQ zLnk@p@X07-vm1{`i~R=_kM3TE9D5}WdBspM@~ZQ=zmvyte`mCOh{|sm{vP?^TwK2$ zaU&?c`)4ci(_1@{58Yae-1QO8&*d(ZPc|&_1}x8J7rcPHf8{ac&wA6KHLFjf?^n&M z=1VZHjjKoFL)*PG6vlP+p&Oy~j}M{t8hCF#j2pW~ZbFCJH~kJB9^ZrBr-*Xv1sIRi zI{KlbvJ%mFjxpbQ4aV;}{?aw*d+slM2YU5a+t)*AVidZ$ucH9^c*&ua(4V(9z6gEuy}?bu?3##*ZfIA2K79Y#j-u1>{b#3M zF~j#?!;M_|09>ybKC!U@SSzz5F9Yim&RZSO)Q?Q z0*7sVqhACzIh%ih?KgjIxdz*BxmbA03d%1fO#=KqSbi+K#|Gl@pNv{zeoVbZ_7&UPTR{27imriS;I?lspJ@j^ z`{rAnu)ZU`$%9#Qan}0Gxrsbr$L<@q56qd7g6H@U(LCK z{r10|a|L^0an6N?Tw>b@oqprrK`hGd6c9Kka(XY;<~I-0l|Hn#bdR9?$73~B@VqR^A`t}6t@=Vsg~$`PvcMxdiQ6r5l9W2% zGaWuo&YdY6c(ln?qM|EtE6T18p;UcqK7j73nN<*aH`sYrIM>d<)HGj8Cax9p@B8Ugll= z0x~4bt;(s+kWM77YSpEeh+GXvB<`R0o+!8$ni#XBtV7lk_0J6UhgI?m0x!y(+gZsG z*{=+6)eSYv9?@GVtAA$jT{OsiHRqGI%{R(QI5{w6RM#iTB#VBZiv$`&xH7ttaaCg^ Ljlq}!cA?ZZ9cvZS literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-8-big-Digest.crc32 b/tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-8-big-Digest.crc32 new file mode 100644 index 0000000000..78e81091e8 --- /dev/null +++ b/tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-8-big-Digest.crc32 @@ -0,0 +1 @@ +3439255993 \ No newline at end of file diff --git a/tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-8-big-Filter.db b/tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-8-big-Filter.db new file mode 100644 index 0000000000000000000000000000000000000000..652b13cc89e8454b76b4258dd1a0fa0012bad9eb GIT binary patch literal 16 VcmZQzU|?lnU|v019>j5dZ)H literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-8-big-Scylla.db b/tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-8-big-Scylla.db new file mode 100644 index 0000000000000000000000000000000000000000..bfc53bc51445279f173ef9273d83f1286d3ed956 GIT binary patch literal 78 zcmZQzU|?ooU|<1afrU9G6ZVz3Oy6_h!pT#7>I;Bkj6f^}p*g0rwwo0#(>~3>fW%~A M0?Kj#F$l;50KoSU4FCWD literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-8-big-Statistics.db b/tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-8-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..d9d8479672a32ad7b97796656683fd4ed39da9ba GIT binary patch literal 5694 zcmeI0drTZf7{GV$#p}3o2Q3s+q7-Zoo1+1dHff8{t8m7ql!v80atwD{?h4$lyL(7! zO-;o=M1yFo*rX4w38}Ox(W(V(>K|3`QEf{aQDYlS5KWDu##U+@&OPo{zHef~%6~>S z8D@U_&CK_hZ*GTS7{R?<0&>%Y@ygnaSFw06fdE8DaAQaR^yOI$=6U^M)89b z*HgTU;=L4~pm+o`ORWcc4<(l=K8;zIO7R}ddTM_Cek?asV>aevHm$`RL-`wf1Iy!w zFqSbHjQRFl%y%Bb?5M$9cmQ+BDa_>yG1o4}EN#ZzPB3><`8(vq z@`((@Y{svcYpO6G!1>8ee1YV;N;QuouXUeb*4KQF`Wp;t{zqOLE}TVj<3}BcO~3RY zj;#zKj+^2TCrl+Hws>(qTAe>2c}o8x#A%n)5ic33K)m!EUhkYqyx#ep@1y=}N54aS ze=)XiYx)?HZ~w`L_{mMZi1%Gzg}Cnn9G^>lD4uM5(pA`>Eh>Eu@$Sqch(A5E60&aD zN%Z@wd)aak%Ju0jC_nW5kH$f{p(Sn|WaA?v$X^rhZ-MfdzOieN*4-q zd&*D3{m+J8vcUbXd$CntBo^)dd@xfgyvV(iJ| z#h`y|*PE?x1CHPH+Mo#7?C$s(`fvHldIkD#y-;?-2Kp}~?E?HBEIv{+-~jTBkH>9r zy|R8Qb+rTeit34McpfOo|8dX);KD{ zOLaR>ZA5Fd$CY>UXD$?=`7;*^2Qz=>Lh+bCbIqT*KtlZ2&RmM=I)**m%^07(XsWfl z)Oxpaxe+d^YoSTC#d!a2-J)@;4=;1G;hCCxd*<}SZ-lsr21Q9|`9I&l)H#}nDEUaE zqq^$8RaH9#<=-8fxsK;$NfwD9a9+&=t#u+#yvps4>?U5X$VpP}Y&u;5PA-o04XZYL z8iSI|iS7Vt;xy|`@I2P&ZstTuxjoW8$V+76_HY43o#sK-dR~(Jg1eqmuBk})w#q)c zhjM;i*tZxTuLQ=gA)M7NXLx|6(XYfJFxOb71{4FEIkzD4GVkH%5FugaN=|cx3?lI~ zXzsm0Z60(VC*BM<8n-mlTUX(endmBgOppxL49ks|l(Z5aB zt~0t9O)}rW1*FZhWmzRBhf_wgJ$AD!1_K@vc8171XPbT_5wuMo4b_U-CM?+@b5eLp F`(I3S4$}Yt literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-8-big-Summary.db b/tests/sstables/schema_digest_test_computed_columns/system/local-7ad54392bcdd35a684174e047860b377/mc-8-big-Summary.db new file mode 100644 index 0000000000000000000000000000000000000000..114c8576e5aab036c01f9174bbbed3b1e5527298 GIT binary patch literal 59 mcmZQzU}#`qU|#ud|%GwPWGb{?5uxUEt9D@XyW5upS!hT9oNx8K*TE^Pu?uv6_ zG&uioF>?@ckibBeEMyQCMP-`=O>mn(P+&1uiIADpVK7=XfJ4aYYt|dz?~BRGf5!BZ z%X^>uzIXTTy?4FWV;DxwOmBH4VadLk>>SyHWLGhashfGkFK)B&0p8^iEG}M>c%NJ3 zEpCr&*$@<)gJN+NFUnro>-Py_SzGImwv$;elFHf9XmpC4J%i-Q7CYz6))mjiE(kZ; zs1hki8iY2b@ybDsl8L8U$~wv^lv61iC>tr8;#S(7Ma8ozFQmMfav|l%D6gViN%?8Y z+bHj%ypQrJ${}o)8V`0k6_+WW#pdQy-i@uI&aXO%&tQbHs^#< zeEY9v{kA%A&p88o-#H2Qtz-Zp*% zTl6rlZqcuS);t$N_p9}LTVPx_5WWSix30SZot8UGa-Vfss9N%*t`k}`w--BNA-KJI0MHf9Mp;vBwsT>_>w~d%!0giWhCygoMFo8R*}kgN@cCz>ZyDk9 z&k5nHAA$PZ_=z>Gz$%#y?*&%pT`=3BCntBo@zMO%xevZSbOo6c<)C~@*SoFn1E+3$ zXG8=xI6HoW_iy~(bRFKm=~Cq>GblfoZx6ut!GdFDLlzLv{d~d<$1Cqoo4p;xAFYq% z!}UN(@h>Ar5HAZ|8+so2se}C|V0)g8tSo`^*;ixj?F8l98U{wkfxCaWa;6vf?9rZn z*xvBD!m-kOan}6m`MYa@?b~nO*?rH96wfQa!E~w=<&;c3{jaXMlxAirnRuE_Il1OS z9m2smK_baD7wR4+x#mLskz8}ZcL>8I*IYN?{P@4GxyZe84BK;r(R5Vw$d{{?bW6!m zTWnYQB08z$7&pnW<)ICpJ)g`RQ{J^R2NKHMZF=3&xP17Up`P`In#WXSCa`MxibH7bAO60p& vGoSc1Xr&+(8oS%QP4mIO^NK Tww6{r`vjC>0%8sz1_5~h(~c1e literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system/scylla_views_builds_in_progress-a04c7bfd1e1336c9a44df22da352281d/mc-1-big-Statistics.db b/tests/sstables/schema_digest_test_computed_columns/system/scylla_views_builds_in_progress-a04c7bfd1e1336c9a44df22da352281d/mc-1-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..04c9fbd37e31a03cefe32c874297f20952bc8738 GIT binary patch literal 4883 zcmeI$e{2&~902h9(RN$cm9-l%wy-E{!lvoQ${ZxX94l@$n$7)?f|7D=&#ka^%k>I% zLLfN*aGE)dW0LU0AIU-nVbP&%lYq&z^9Kqn#QF;|lR6AWD@Je#S-o3(<@82a#kb~nUQKwk5wogW;gjFeIOl6 z#$(WOL*OPg2yIH^l}xpgh#fVAlL#jh))Lkc))O`m&Lo^gcroFngbN9m5MD#Ln(z~Z zn+WfUSsnv<>x~}bzeBN<5)Z~Bvk96Q5BfnOE)qV2%`7Cm51S?GXAk1Isu5dl#@4LG zPEzhSmYsYX$F<|wx-j;<=dq1%U@zE=ojrklPZ9QgN3cyc?6O1H>rZ3X&d1)m2;2KO zb{B`;Pt4zO3yz0#k?Gv)*tQ1jLwJ7D;jd7fsaNJvG@JPho3(w3%Bxg({;MvYLvi&d z-N>5X29T5MBgiQ;JaXzx2D09T=cB>$6N+b!EI`h>l8wALSckmyJRa}DX*}NMp0lX@ z+Q}c0AF06Y+mszb@om2tk@waNA|JT53VHY=+&`CxQGe3f^c%1|U0(GP@}4C}kv|_R zhGv$XLjSMKe*GmFXS4liey}53Qea%=Pgw`8ekzFWSJUS9!+6qg=q7ZEWy2rPskx)* zc}lYxFTi*@YYjkWl;xxOyikAZbr{b%_R2NrdskM!3%%^?jccHbE;OHjUcGhqVQ9;@ z#T%jPjJ3> z9;iJ9pMN^?njSv?3?I7k0XUzTJie|2m=)>JtH7$f^F}N5^z<$`KI%Vvdg1#csUTyj z0+dhgd#B?hu(sySfB>wscmE3SU;mBa8oYnQ#p)p=C_kU;YKQNGMMuj=O(358>68(U zSKjYc)-Di#pfQ{e*8`>Ip96XjFArWF-3k2Y!NKFOJx_*Lm%{n%sk8L=fbyM=;qgh} z!{1*%-4A@`t+xkZdqZP|6J>YfwDGxfch&=2x81nC@2)9tERFwzql-Q{q~tT;96711 zxscymn2nVqfYcAX$i8UAMkHng*2=zx|%~b;XBeCZCe`_wO zFByv7T~DcByrii)nKOIbd{)0jHx}3S&@!Z+kl(((&mX2TI&h{59Hv%I@HTTTrpAVcS2aA-&NFi^S@3UFT0Nq*4+X^?H8;F>cT9 literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system/scylla_views_builds_in_progress-a04c7bfd1e1336c9a44df22da352281d/mc-1-big-Summary.db b/tests/sstables/schema_digest_test_computed_columns/system/scylla_views_builds_in_progress-a04c7bfd1e1336c9a44df22da352281d/mc-1-big-Summary.db new file mode 100644 index 0000000000000000000000000000000000000000..0d1760c6d966f4d7eaef4fee3ce8bbf70a941054 GIT binary patch literal 53 ncmZQzU}#`qU| literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_auth/roles-5bc52802de2535edaeab188eecebb090/mc-1-big-Scylla.db b/tests/sstables/schema_digest_test_computed_columns/system_auth/roles-5bc52802de2535edaeab188eecebb090/mc-1-big-Scylla.db new file mode 100644 index 0000000000000000000000000000000000000000..3a067ab1323fb83b0cc6f15c49d9f5eb395a5130 GIT binary patch literal 78 zcmZQzU|?ooU|<1affw&fXGN#G=Fi^~yLh(5krtpBBM?hLXpYA_)=hQqOx(%9fW%~A M0?Kj#F$l;501EpOuK)l5 literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_auth/roles-5bc52802de2535edaeab188eecebb090/mc-1-big-Statistics.db b/tests/sstables/schema_digest_test_computed_columns/system_auth/roles-5bc52802de2535edaeab188eecebb090/mc-1-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..7d09836305b144daf41d1cf865545ca1d4e015f0 GIT binary patch literal 4819 zcmeI$eQXnD90%~b>&w=?)U_KhW>^$9foTdl=O6(lqu9-87<-Z8OUkW1*J59myH@AK zVCMY8Y34NIBpKjKvfw}#L}i-<|3EiiP+%cWjgXntX)szff)az%UVw~l>zkEw<8#ApxTlY*daYMSX zPE>?$YK36aDzBY1Xo;Dlk#QR1bjBHsvlyEhTNvjt&SyMt##%cUF!2(`w=iD8xQg*T zjGGv5VZ4p;0mfr!o_QbqZA?7O_%K?S!?+EtW3I33!MMHwZ74+>SEAFH_NHIJc*Y1i zD~7)2DYW$!^z3`l1*7QemY{Fgg|<1-mG$Tj5#7u5-w`{;V})S8 z@K?069=!wmCm;I);zFI)&!*8S3lmyP4 z$_1M}*dHzSA0VDLI2)XQx&SUGGEwmE+%m?_7=b+gK2V_~xIi z;3wAggSVew1|IkTpUIQxPJ`VYYh2XXgqBodXCy;U;8_CX5kQwr);P7IF0A%s)wm_%Zs5u z&oQ5WnZ~c(^ZXg=>u;@ki+bUg8&*&+Iquy@y?oQ-JE`qoFWo?0yDLye?Jj=zcIt=! z%$}g`{IJhKy{B&beCp4-+n=L8_s-~AVt!F};~=$r%^EuX`M#Qibo}%27tM713sUs- zd!)QDzIRnCu`bL!SWWV$ckgd~n>b_LtHUyJ zmaFq;+J5s_mNT^dmJ?M6tR(*|v7?#J2Xl8<4B1G$@Z$+9eP2btIjTEI{HBIjF}~?}r{CzN@EyFRjmgvE^m7KL=~=yH@&Et; literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-Data.db b/tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-Data.db new file mode 100644 index 0000000000000000000000000000000000000000..cd47297a610687ffa732383d60844a6ac23d0a82 GIT binary patch literal 150 zcmcc2z`*cHoI#F(wIsE;q?mz0xFj(tC)F@M*)Tpcr6N8vFD12tq5l8>{|yX`4F8o? z7*4E6*`G1X@#iEN?x$M{=Dy+8VPI$$Vh;{=c6JR8W@HdxV9ExX!%>oy6JM5@T5iw4 wGfhD5*x^SE$BuJ2F$f7cF^F(EG3dt|xiIj4U{W~Ec#7dPYZu%A;p|170K%LwApigX literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-Digest.crc32 b/tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-Digest.crc32 new file mode 100644 index 0000000000..77ebef6fd9 --- /dev/null +++ b/tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-Digest.crc32 @@ -0,0 +1 @@ +1730504014 \ No newline at end of file diff --git a/tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-Filter.db b/tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-Filter.db new file mode 100644 index 0000000000000000000000000000000000000000..4faff7195df152c43e649bc06f0b46d3042bcf60 GIT binary patch literal 16 XcmZQzU|?lnU|>{Kc%ZPMLBRn44B`UV literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-Index.db b/tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-Index.db new file mode 100644 index 0000000000000000000000000000000000000000..94523f4e66255ed5234dcb9cc648cdc6085404de GIT binary patch literal 77 zcmZROV_+>wEiNf$U=S`zOv*_$j88U<&rGR^&&*3ntzZBG0S2aQpfpEGQciqXW@5JVJ8 literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-Scylla.db b/tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-Scylla.db new file mode 100644 index 0000000000000000000000000000000000000000..166f30f8995d5d216c1d76d2650f72cd86ffe137 GIT binary patch literal 78 zcmZQzU|?ooU|<1afjcWyu5I-3Q(E|G{xSBJ*WZC+j6f^}p*c8b{JC}EQqc+q298v= Uw7WS11*||BCLrbjVi1rA00d1Dj{pDw literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-Statistics.db b/tests/sstables/schema_digest_test_computed_columns/system_distributed/view_build_status-5582b59f8e4e35e1b9133acada51eb04/mc-1-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..946e3f94f134baa64d5840304702a965ffa4e21f GIT binary patch literal 4777 zcmeI$drVVT7y$5lZy&rnT2PTq;uKWSR3jpos0^ut8W$K3t*FrpZ7eFZ>0@JzMdFx= zY(X?*3?u5cgfJu!-vtf)fr8Je#Ei|T!K9+`RW<5h61v-Rk9^;W3H#HSHn}M}wEXft6chXwIzZOo8aJ$_jLhqr%cX&GX^hQ3lV#V7|8ikU! zXCUwcy6`rW!IK;rsfeYVvL9uC%7K)FDJv)|DTh;zpge{0bjop*=TlxRn#@bOXfkiB zsQgWo%P7}SK1#U{nePt3!P?8Tls7kkD5Y_$$Mu^xNbY3$4i*c&HfTR+FHvRKf$FIM& z!tpx0;(8Ou;;ic1OT){6wVPkQ-acl=D%Qz6nCzv9Nh(JwVoCByvy@cCQbrlQ6NK3N zvgaa~N%maCt4KvGeS0o6A-+8qnhwUd=R))0+jIH$Twp=GYkMwXXdJ_qWiYbuugfzW z!`?ElW5+h(&kfH(hVC9DHAerYHdbMo&~uIYPUGH`p*ObE6`4)eLYpDyE3;wNc-gr* ipC)+{=ltKqSa$qAbF~^zpA0Lv+IXAYI{q2rDEAZo literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/aggregates-924c55872e3a345bb10c12f37c1ba895/mc-1-big-Statistics.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/aggregates-924c55872e3a345bb10c12f37c1ba895/mc-1-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..0c35c41ac2066198cd9e3a249cac433d7037f84d GIT binary patch literal 5001 zcmeI$e@qis902gU>kmpP9W7N6BXJ5-aH&MbkVHkK3M?)%e#|;&@Mx=4F`IW*U%^5?~4ibPh($l zx%av6d+*-6d$0FWhGCSTThVlV@YmOPA%aJp&P

$%qJ=n%iuqVESojia&Z4UNJhp^37?3_02#V4^#CSb3bjO~5{yOGE4pysdFg5!Y{ zWH#kCwzV9)4bM+Da0$h^GO`XvFLOU*E39Wxd8HE1f8~WUD6aak30eJ5C$gq2h#WiO zK#m(pMAqB!d^A}8Kyg#gMC7FF$;eZErN}eR;rE>}jNf-w^LMEHg25ZeujS+ZtxWc# z`1-$$$UByIAs@Uq54rmX{Cuu;qvy$L6YjwBY+m7htYu|tKRmZ@v2?UIv9`X_TPn$wJiA$IxeLbt*3aa@jQ$tD2n@` z6LZqge4eDg_c4r5Ir9E3=oeop`VxBP1j3 zEP~#2KYj?h>2zly^pUcI)1iNDX?PF%?$-lLfZ18`RXxzQf&#ey+0K#^aQ(Bv5A|^U za}NLYZ$W)-@aV#NV1>l`KLA#yo--Ch4-apH???52^8xt%h)GWz$_M2&Enn1s1*~2E zX}<`pt8Drkj$ePpa0`y#aG~h95tN_6H`c=M!Q{hvy=D+k`Dw@q-&g9tg~g2^{&Gbi z4ekfBv;OSYgLt0rX76U;WvyLDVSiQyaSFRyT;78!+G)>OrJ?nj%32;XJyYtx}8Ka;d6A)g&qh8 z=Y$-I?zzz8VWN93^gN<_F8B>$nCPDCx!QBdYk_0fW*4K{cTv5n$3)Jnb$#B@LDoue znB*9{oMZES1(~I=F~SzB^u%OGQ_`LkKlGZkx-TZYiRIq?_sKj7q!KDexOB*LnooxHlm6 nG)}=O*<6A>;u>+HL-L41r4-3H$ZfQ4iI*Ht*R^n+r@GH0QRD&B literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/aggregates-924c55872e3a345bb10c12f37c1ba895/mc-1-big-Summary.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/aggregates-924c55872e3a345bb10c12f37c1ba895/mc-1-big-Summary.db new file mode 100644 index 0000000000000000000000000000000000000000..f234ed89dff3329431d772b02e09f771d615ec62 GIT binary patch literal 62 ncmZQzU}#`qU|AOQ^2hLp{&z1UMPUe`NI z$)!PR4pnpulH){i+8_?dznkw9F!O^R3;mi`hfREH`*RNeMfnn$-UM5<0TX4bsrqyt7 zy#bSh^=jjI97HR2)AIZpZ?4pEu2ZhzOsAZMx`ZD(WuxuZLeFleFfF5Ylel9zzRYPi zIsT3FzzV{a+YSS_UG`u^M_^os>0>Ar{hn4Vf1~72BmNXx7WyfePm!392Cf+IPLynPu9Y)`mVt8NGNWoHI4j>uW)S(v{fL7(6P zA@!Q=S9u`X+zF+WDX+}FE$)71IU)C|Rv>H<21eZvgvG1phXE*Qq%Z=!V)P8R0W}PH z^(yF4Nyut~mR)hJroHKoUIqTdn>c~0=I15Gb}%Z5MwcY6Gwmb{MtDyKAbk~MmBrOn zL=3_j)O#pM%}rv7b*TGD_w1u$hFtmhqepbOja+#IXqX8J$HrPFQ~MAEHEtsq5rh#forCha~_ z{Yg4ftV&L9a@*p~s=FjfSWRzu`8QAHvvYW72#Y`Yw`>SmFgN k)$x4iFR0V4#@yB%dVEA@$gD#fqzTL)H%vc$_s_-u0E8Cv7XSbN literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/columns-24101c25a2ae3af787c1b40ee1aca33f/mc-17-big-Digest.crc32 b/tests/sstables/schema_digest_test_computed_columns/system_schema/columns-24101c25a2ae3af787c1b40ee1aca33f/mc-17-big-Digest.crc32 new file mode 100644 index 0000000000..028ad2e7eb --- /dev/null +++ b/tests/sstables/schema_digest_test_computed_columns/system_schema/columns-24101c25a2ae3af787c1b40ee1aca33f/mc-17-big-Digest.crc32 @@ -0,0 +1 @@ +2158791753 \ No newline at end of file diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/columns-24101c25a2ae3af787c1b40ee1aca33f/mc-17-big-Filter.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/columns-24101c25a2ae3af787c1b40ee1aca33f/mc-17-big-Filter.db new file mode 100644 index 0000000000000000000000000000000000000000..a2a32173b889b2c9248ddc722111562b82999802 GIT binary patch literal 336 zcmah@K?;B{42y!Wqu=nC#h06*O|%pY8_k+zEr1Qc!CNqZHCsy(*K^X)n~WwNWh4Q+ icudPL@{hQkCBnswqFHFz@E)(t8)MT_)YG5Q@o`@Xs00oG literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/columns-24101c25a2ae3af787c1b40ee1aca33f/mc-17-big-Index.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/columns-24101c25a2ae3af787c1b40ee1aca33f/mc-17-big-Index.db new file mode 100644 index 0000000000000000000000000000000000000000..bbe915266314ca394ec76a8990ad1a0d09740676 GIT binary patch literal 66 zcmZSJF0L#tNzIK!w6FZszD#^pxff835s0NAG{?G_pq7Kp);tUh9QEyA TTT3gReFDlb0Wk*&M#Bm9;Bu%&;hI!lo$;bq*3>ZYypz8s zFdR_0v^Sm*ke;Tq& zE_c6so_p_o?%vzID@9RiD!JrK8(La7N-HC+A!$`nl<6$>NRV%`vMsE;nX|fCL0|(O zp0#?KMe8#m-XG#^H7qZBMQ<>`@nxNDKUW>IyeOTV6OYHIq}DT&4NW(iXfkn;UTIA% ziG8?`PILq=Qisr@bY3~AQFi35mT($j9pQAs2Es z*l9$)x;r?Y9>zAru;;#lZGIbj{&U#5W7rQa!+!V>wzUzv^Z<6nDeRhg*jpB03(sPA zvDkgY_zl}}JeG${=Uu~Ytj9ip$0r^87R8x5B!HGYHg)oMKc)fdj7xaNy) zWbL2*$hx{XvVMv~o->t&Z1gDOF?rZz{}sh8L-UbyF6SaIjMO48K8K%o(IkG}ww_N= z{_62xke@2Y{o9xuMe(h_n~^)#4IuBkwE}tYGkkw84Wj!=r)S=P`E*&;tH|w(4kLd( zQVh*3If?$hGH)3#!ni886^#$o&}Kc1t6TMJpf%4&P`%oqw-v_I2BSBj_4c*bq37fc zqxUJJ(R?1pGgXdJ=&aHLG@i4KxAwyL14mxJ3jNSy)gM4F`EJ81=w;`dk3p~8^3p+Q z`wzt%plc8LOQ78aA3XuR?RLflbob}|RnSN3_AP=w+uQjX^vx4vYk}#d8LlB{cV#7f z|LOjklkokg<8K<_`_FLE%O8XDnen4*+JIFe9eo2>oqx{kfS#P(37?PV@18x%_al*( zR+u$W4)S%q@3(yjoWAazQ6AXf?EVARZ~WeL71nRMP<`AC^5?N#E%1A=;BeWn6~yzt zoG`=ZmH$_jqYK0zZHN`X`9O*7w^1XAmqo4&ZwG#Q|G-h$pG~oqC2%|kYVCbJAivW! z7#;^c_~WHheZZ&ReQyBvH#$-@R(dy1n_oWjPX(}J>y10R?wS(hedTX3xm8jbWk=rr zU*}v(|1Cs+a|kPQE~Sq9WzHp+nev=V&Yzic$)25a;qfv%=R)^mcFqOAArv(`=eiEZ z$NfI%l4@lrdiVN{WYILG*?m#FX~?qKFcNN;e&A5c6k#aSHZQl`=?Zy$9;YC(Vo0F$(}x1Af978qLtoQaa1t{oyL6yB?nibPhT6!i<I(WOHy;=6H7}nKtfQ!jVjDql3H9+3;;xX49oxk literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/columns-24101c25a2ae3af787c1b40ee1aca33f/mc-17-big-TOC.txt b/tests/sstables/schema_digest_test_computed_columns/system_schema/columns-24101c25a2ae3af787c1b40ee1aca33f/mc-17-big-TOC.txt new file mode 100644 index 0000000000..af6ac45d73 --- /dev/null +++ b/tests/sstables/schema_digest_test_computed_columns/system_schema/columns-24101c25a2ae3af787c1b40ee1aca33f/mc-17-big-TOC.txt @@ -0,0 +1,9 @@ +Scylla.db +CompressionInfo.db +Filter.db +Statistics.db +TOC.txt +Digest.crc32 +Index.db +Summary.db +Data.db diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-CompressionInfo.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-CompressionInfo.db new file mode 100644 index 0000000000000000000000000000000000000000..fd823bb8f42485f20c5019adf9d90fda9eb7258f GIT binary patch literal 66 zcmZSJ^@%cZ&d)6 literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-Digest.crc32 b/tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-Digest.crc32 new file mode 100644 index 0000000000..5cb49c575d --- /dev/null +++ b/tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-Digest.crc32 @@ -0,0 +1 @@ +3359368046 \ No newline at end of file diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-Filter.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-Filter.db new file mode 100644 index 0000000000000000000000000000000000000000..4178162b8f9846f914fdb41f3fb82f43c40fe385 GIT binary patch literal 336 zcmZQzU|?lnV9*3&Ou&RG1Q%%lvA_g~fned&16D}{0W+h42(=_A;UGaRPNf)zG@vL2 E06&rf#Q*>R literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-Index.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-Index.db new file mode 100644 index 0000000000000000000000000000000000000000..293a79106dcccae33898427a094fe03e43981207 GIT binary patch literal 19 WcmZQzD@iRbDK=tYU|T}t3k10U literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-Scylla.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-Scylla.db new file mode 100644 index 0000000000000000000000000000000000000000..9c0b0baf9ab22a8aaadfee3c566772df3ec46818 GIT binary patch literal 78 zcmZQzU|?ooU|<1afz0U!3DcPTf;JqL6a1G_F9sB21Y#)&&7szuC}z=aoxs4rQQ!Wx TwY1{dC!h=y5OV-A2*?8fI}r|# literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-Statistics.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..b9d2695c1410dd873458cb6bd32281d64f234ced GIT binary patch literal 4766 zcmeI$e{2&~902fl*B@KAuB=^wF~g#;37e)2#~dWU+*aI1Fq`{D5y`l<7gk{Ha=l5J z7!1xooMui11_?hkS(ZUq1av>fdYeAHL}d44g-OT5gbBRuUjAceqT)7KPH;= zlIwe)_kH*7-Mx3cmm`Fz$>f%%B%HFZQ+8h288GL-<`*ml8nn%{NTQFPC;B@4vegx%X3if3EbR`^m*6-iGzLyrMUdch2iX{%Rl# znqSa^{$KgMhRZOnO7Wukq3YY9gK@Q2w-Q?OydPb!*6sAdcua5L4z$j?>UZe))PD3l zCD=?CU_4P(G6xs6SI^X@Kv8Ih}d^77$PUV$=l3 zEA6+Uk`@quyegOu*8@4(*9Q$Cp69>XzYTcJf$rn5KkI|ba^QS+m0LU7K>g<0Uf&4t zp&zfD=>R_a?t9&^zkz|wq1>rBXL{w_{Q}^U&A0FEnlkZ3^7KELXH2Woa_axfnv3=~ znPwvCzqRI~r>UlyNE%&pp&JribD`ToqH8X6KcZ`{=$Z>mi2vG}OX(UYdaryqjtXrQvD5LLOTELSeS*YDAF0QdJu5miN zHBOg9^b%b-E4#OdE~Vmh>P)mp8>cBf3Aw-JHJfCBMbljBTlWQUXVO>!d6RF o<OCVv};bgBH`lg?)rvCSqOh5%J`?A6l|A8Pq-_80S26>O#lD@ literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-Summary.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/computed_columns-cc7c7069374033c192a4c3de78dbd2c4/mc-13-big-Summary.db new file mode 100644 index 0000000000000000000000000000000000000000..7206b5d9c0db563606d013e81134ee4c69a806d7 GIT binary patch literal 61 ocmZQzU}#`qU|ils}$57mMlGTBE7HB*%K(n2*gqlnnSHQQOu&RxI)^ox*nAzws&%<$^}IsPP{>6l zvz$54oL7*q=VHr>UnZPVt>aJjcQ_o~{MCK=a$n*v$)_q;h4TwxBJJ!5Og(4!)d-yz zY9vCzl}ibG5cVYOO;|=)PFO)$<+5-e{zN>8@JPbpgeMZ7N;r}5Lc+@lmk{1V_$*;7 zHcgBNJ(-A`317x$h7c~r77^DM9l&vMI<_PdTRIKfgScPMpE&Mq!Is&v2X4Vu9>yNL z1Us+|d)Nf*QHQYATI}e9*fTF-ClA8T3cxlkz%FO8Yl!)4(cri}7?}?Kgsn}(K8WWh zZGVK~OscRBda9XQ*dpy+)Ltyc^I!a+6~!etDv+fgYmq%u9mrnYdgKA!e#mkio{tL6 z8x&VH4o3EW5r`aQO+g-c507_vCm!#}$}6b-wDwoXbK-FS76;l;e8qbu^2Ygf$ospd zAU9mY&*ymqdY-hm?^oEKj!oE(ykW#~p&T_TnNqpJ_iiy%<8h?^$)a_#CkJ{39(Kuxwey2YCPTCyKZ5 z{uK`r&niLtL2S7Zz7GP9$2O@!JosjZ5{_5M=Y*tk5FeLr4~6@IsK|FMauAQTzHV9r zJoiA|N!XtZdrTCZ&-p2uno7{VEW5$d4qW~0`K21*%SVsZ!T#Es!`q_!;#v!> zNh`koEbTL8a+QVOU@{k)GD5+X|0{bgq1*mK!IiuBTjVY{BqjqB LP?iITK|me=m7fl1 literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/functions-96489b7980be3e14a70166a0b9159450/mc-1-big-Statistics.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/functions-96489b7980be3e14a70166a0b9159450/mc-1-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..111d172cd1b1f05fb4c34122efc46904875bafa4 GIT binary patch literal 5098 zcmeI$e{2&~902gU>yLF?SJtk;m|;=agiTWx=NwCbxvj9xV3_+M1tjIxUb6uD8aVU>ej-Gf%><8gN zJ5~{ROy8ZzA(baN8j^@#wUkpR>nNvD)>Af6Hc~dnP1=!7#TQauOu3NqeUw*FuA%%W zWf$e`ly^}+MmdDdQscosK*eRsr?I*Dly_pQsOPKp;<&mATT_g!U5TASwO4l&$J2t? z`Uv)%7qCrlV$a)%oim1g=Q8ZO_hVaZ*rofhD^Fq9&Bflb0Neivb|;VBN6p`$6~`mF z$ZYOaY+EDtK0H6!$d@S2HIQ{Moy~oUt+IWA%B$6Q{;SWQL2=E;UC7#B`jK@FQRLJq z0Xcmt3)$er^U-Mi0maQj^N_PII2l-Y{H% zaaB$mnjfm6&8aZ1ZcAMSt$8ej+N<@s+h9CpFnk?4)w=pO==9uSw4O3-rgJc!sj3}? z&MM7E^Lf7E#%>tD#`87DOrZQ+zOxm+4;CCKAGUya?k5u_I9_?bR@Zid_`OY$ ze7GMdDgJTP0OIAL%fn9suiZOv2-as)q^tzaXR+Se*A2>dG!F*HfqTEbc&ZQh^xN+Y z!1{(q3dc$lan|(wnOl{>wOg;<+?g=rkEh9hFnuLOIg*H9|0{bgQtfP#h+mU?F4Q3$ zoD)hUx#vRN!zA}ys6Uc>F8B^%nB<=8f3@dQ)&j?{T^kwAOBb}8hRo!;Sw9kton);< zCrOHNDk-)iR8@5KgWGxJU3)uYR*74Wzi4}|%zRm25RC3nzNW;ErGNi1rrF}Cvz+b_?mAgN|S0i!YSk}Kd9MA~K_EWaFg`P-LRFZ7fy>$7H^4vGGsHERfk6al93umR9>a#B^wbg{hbh^RQKI1U Fc>p7f97F&B literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/indexes-0feb57ac311f382fba6d9024d305702f/mc-13-big-Digest.crc32 b/tests/sstables/schema_digest_test_computed_columns/system_schema/indexes-0feb57ac311f382fba6d9024d305702f/mc-13-big-Digest.crc32 new file mode 100644 index 0000000000..1d0dd80ddf --- /dev/null +++ b/tests/sstables/schema_digest_test_computed_columns/system_schema/indexes-0feb57ac311f382fba6d9024d305702f/mc-13-big-Digest.crc32 @@ -0,0 +1 @@ +1907193626 \ No newline at end of file diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/indexes-0feb57ac311f382fba6d9024d305702f/mc-13-big-Filter.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/indexes-0feb57ac311f382fba6d9024d305702f/mc-13-big-Filter.db new file mode 100644 index 0000000000000000000000000000000000000000..4178162b8f9846f914fdb41f3fb82f43c40fe385 GIT binary patch literal 336 zcmZQzU|?lnV9*3&Ou&RG1Q%%lvA_g~fned&16D}{0W+h42(=_A;UGaRPNf)zG@vL2 E06&rf#Q*>R literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/indexes-0feb57ac311f382fba6d9024d305702f/mc-13-big-Index.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/indexes-0feb57ac311f382fba6d9024d305702f/mc-13-big-Index.db new file mode 100644 index 0000000000000000000000000000000000000000..293a79106dcccae33898427a094fe03e43981207 GIT binary patch literal 19 WcmZQzD@iRbDK=tYU|T}t3k10U literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/indexes-0feb57ac311f382fba6d9024d305702f/mc-13-big-Scylla.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/indexes-0feb57ac311f382fba6d9024d305702f/mc-13-big-Scylla.db new file mode 100644 index 0000000000000000000000000000000000000000..8f5994c8bf8e4615130e8b509525d00739c0d6d1 GIT binary patch literal 78 zcmZQzU|?ooU|<1afryq0hYBUPt=*T;MxU^ZPy>oF0JR*d#;Q?+Nr#Jz>s+SdG;~+mH@@GOZSc>ME$JoK z_dfT1_wL<$?|Lss2$7S}mLesbv@e%-UfQdrT}Ftun@o0yYYc)@Fjra)X2InW>=scl zSSsCyMb%>5SiG zJezSr*z|f!nfMyU8yIh6e1x$Vn`6dTOR(z& z>}F>EdW<;kPeSIB9%GwIv3KJ6$@y=fIA22NW#}+}9$RL*gv!h1c>c?;cB8oBYy-0L zmlouxk^pk_fE9VvKs>U>g6E^w_#=wz+s7a$+)G3r?=417zKq8^y&sQvX5)9L{G8q& zkl)V5?OUGcL-DnbbjX_)w<2$UJ`=g^4DO%1ZKyxFn7AjfJeQOI8S=&n`;jknW(bZN8__(Z>0|L61u6K+jXG zNp}Ut<79ee<^yw+Vk_FA&3Sq7`R7`S zPQd4%3vAWE=byLw?tKf+=X(#%tp%33Io}pwdCFy7A#{KL1~@*7XN}w7`$Lr$-Ty@dlWck@t!UbSY6)mGrWJzE$u^i|JthsM|7b4XrbN--v{IN=X4lAJn3AY4vtsK zula@bAU>tcp9nhqjy}-Nf z+&$S0d}{B$R@h!&XL?WeP@L0!)ctZEaN*h~FE$UExWak*AN+SI56%f@|1WDU+Ux|H z38(+onu}g$Db0k_$eIgvNMy~0x`Ra4T&O=HYp%$e3rvXr+L}vh8c(<_$wcw#b>+gX z*9OxS?fO;fPR~Z^0|#w-pr7W5Maprx-n@**r~f=g-?j7rPn2$Fb%TlDu5^iAmI7d!SD9kV$|2$)>_kC5Wy{VZEWObivHh_nlUL#3e^u yknr+#HoIlS4ldP)HRJfuSi literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-Digest.crc32 b/tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-Digest.crc32 new file mode 100644 index 0000000000..6bba07905b --- /dev/null +++ b/tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-Digest.crc32 @@ -0,0 +1 @@ +619697098 \ No newline at end of file diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-Filter.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-Filter.db new file mode 100644 index 0000000000000000000000000000000000000000..a2a32173b889b2c9248ddc722111562b82999802 GIT binary patch literal 336 zcmah@K?;B{42y!Wqu=nC#h06*O|%pY8_k+zEr1Qc!CNqZHCsy(*K^X)n~WwNWh4Q+ icudPL@{hQkCBnswqFHFz@E)(t8)MT_)YG5Q@o`@Xs00oG literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-Index.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-Index.db new file mode 100644 index 0000000000000000000000000000000000000000..92ff2cc3b5912d7e5704c7aa055d1b2b91fee0c9 GIT binary patch literal 65 zcmZSJF0L#tNzIKYnUij5k6GcYh^7dHwp MFtCC}8YeOU0MD`&mH+?% literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-Scylla.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-Scylla.db new file mode 100644 index 0000000000000000000000000000000000000000..96a70d2149264946e6039b83e999989442d54dc9 GIT binary patch literal 78 zcmZQzU|?ooU|<1afxrvhmKS^-j?aGLv}VtO;M+hkMj)1g&>ZVxf?5tXTk|k5aMZVd TZ7r>M_6aD%1jHOb3kj>QM8&6gGOTU0cg|&<$OPg@zkiL$rT%$_G(itO3S$`JMjNc+VG)C`{g#- z%>3p*yEijCyF0fG!>F0DElx^UX)F8Bx#*;z~$tbCoauDTU%Au5Xl=YMil%o`reneC88I)&HPNY1K@&d}a zlvh&TsF<{;RxugJ7OH+1We+w>T@UtMD(<3u8k?I&c`LSxI=^Zcj;o8YH7VHIh1fx) zze;iN2#$xkv2{M|*FMEI?!}(E20LZ|`;8>*xAtJ0O0d&*V`rVh&Yyz4VLG;R1$HBk z-A>J4w;9KMvB+%f6YP>A?A>^NvcB6W&J~h*H&)DD!d8`BL-o~aJpa`q1~$T^+IrTJwPi^;c`RRl|5txAz%zh zG2Vdj2vuG`bYxmQn$Oep&%cK8*AH%c4E^Rix!*$1zO!lpbkdEo!_f0LeB1_YzL&fT zx?oR5Dzqj3_~S2h$H^^qN3C_TrEcUaz>{ za`GBMd~UHX9V+HZ`>?2)*o0;?XpJ7T(6};#yl&xxiP-M~8`mqugfUI(WOHy;=6H7}nKtfQ!jVjDql3H9+3;;xX49oxk literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-TOC.txt b/tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-TOC.txt new file mode 100644 index 0000000000..af6ac45d73 --- /dev/null +++ b/tests/sstables/schema_digest_test_computed_columns/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/mc-29-big-TOC.txt @@ -0,0 +1,9 @@ +Scylla.db +CompressionInfo.db +Filter.db +Statistics.db +TOC.txt +Digest.crc32 +Index.db +Summary.db +Data.db diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/scylla_tables-5d912ff1f7593665b2c88042ab5103dd/mc-17-big-CompressionInfo.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/scylla_tables-5d912ff1f7593665b2c88042ab5103dd/mc-17-big-CompressionInfo.db new file mode 100644 index 0000000000000000000000000000000000000000..00e01248fc7cb621c1bf2beee577ed0454a7da19 GIT binary patch literal 66 zcmZSJ^@%cZ&d)6=_u?N>YnUij6867?`q)8~PX+ KSiu4fmly!7R}~fj literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/scylla_tables-5d912ff1f7593665b2c88042ab5103dd/mc-17-big-Scylla.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/scylla_tables-5d912ff1f7593665b2c88042ab5103dd/mc-17-big-Scylla.db new file mode 100644 index 0000000000000000000000000000000000000000..484c6ae8df89732f73568d021f28748eaec0c973 GIT binary patch literal 78 zcmZQzU|?ooU|<1afun}83)e32J22%bw^~!%HdCM&BM?hLXpVI;K`jTHt$7$2IO^NK Tww6{r`vjC>0%8sz1_5~hxI7UF literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/scylla_tables-5d912ff1f7593665b2c88042ab5103dd/mc-17-big-Statistics.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/scylla_tables-5d912ff1f7593665b2c88042ab5103dd/mc-17-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..95fc5d2e67d0d622fc52d92369583deccd38e20f GIT binary patch literal 4721 zcmeI$e{2&~902fpch?^qU0u5YV}?aw6PTtf&N)aJW30HM*c{b znj%M}3=h_kfxtr@5IX4KX{Cl1V!4*Fj9GMM;W#tRtdGJYUt z+TZe+>2)Y)+CR>C3*+sKcQHQ3IDk!<`#~OJ;y%VFvH97IcVY`n|H57z7i+LJ`PkYb zY#lRS{Vg0%9>F$*uv+x!OhtPR+iquBQ>!M^tZw#ANJxDR{P3G9lQ*qi5IdmqDY zm$18;^*dt4@lX~r$-0JZug2a-*XMLK30*{SzKX8f>1zH{Y{7m8wHHOa{>AgBQC#zJ z2eS6(9%Ox07&&Q5MxHU1hHP}<^=PvGfa2->vyd|`XCluHR3a}pi|=>tB);GIogbq1 zMPuJ1KT?9nw>~q7;#;qpk$0@^Mc#9BDRSQ_e0?tUq3cPKQ?JAJq`2%QA;0@>`>*`;jXJiea z=PAW*J_qBef^8T&tuP0z=h?=aufzD=hhLe1p7&t+JJ1WiShpN{$+^0t(91SIvme^} zRo*)2$^)JPXlKs*E1{czPZ@{q80sm5K3uhDKJ@2ZZ7)OLcyDwyFj0Ifse|EFhls$+#Kb zuk2sSZ0#U^e@!R{?gt9;e;hV~cyZv$z&7ADdwY+-@oWq&D}d{{q0-vj3EH75 z{ZZWPH-9-KKmDL{`dB|Sk9T|f$rtQS z&%_nO;vsI)pZ|*Euy`cJTPM|9YN{VzTK!a$O#X38j_8`z(WyWD{QW64HfyBwKLE{C Bk-z`| literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/scylla_tables-5d912ff1f7593665b2c88042ab5103dd/mc-17-big-Summary.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/scylla_tables-5d912ff1f7593665b2c88042ab5103dd/mc-17-big-Summary.db new file mode 100644 index 0000000000000000000000000000000000000000..4b9b30448b440d463dc068b589dedb5aa6c8708e GIT binary patch literal 71 xcmZQzU}#`qU|I(WOHy;=6H7}nKtfQ!jVjDql3H9+3;;xX49oxk literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/scylla_tables-5d912ff1f7593665b2c88042ab5103dd/mc-17-big-TOC.txt b/tests/sstables/schema_digest_test_computed_columns/system_schema/scylla_tables-5d912ff1f7593665b2c88042ab5103dd/mc-17-big-TOC.txt new file mode 100644 index 0000000000..af6ac45d73 --- /dev/null +++ b/tests/sstables/schema_digest_test_computed_columns/system_schema/scylla_tables-5d912ff1f7593665b2c88042ab5103dd/mc-17-big-TOC.txt @@ -0,0 +1,9 @@ +Scylla.db +CompressionInfo.db +Filter.db +Statistics.db +TOC.txt +Digest.crc32 +Index.db +Summary.db +Data.db diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-CompressionInfo.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-CompressionInfo.db new file mode 100644 index 0000000000000000000000000000000000000000..fb6582932165b8f39789a72c2f15842f51c1ce0d GIT binary patch literal 66 zcmZSJ^@%cZ&d)6CYdmI zwjmZYTSP@6`Va(t@aI7g7sLvp@j;DJDzc&teGoxepK7tit^ZbNdUpls!}-p+=Y9vi z``z=#1w2v`8#YgmO~%9!JNTR0c2?8& z?0mfZT-6U=yqMAiKoX(sFb28Ea$6)KlGnBdc&y*BWBt1An2u@nO+~e`3Tg-L%@za_ z!4f?>UxvI?yVl%kbeo24B-^dtem&8Ky=xs?cZ_X=Vfa>s@m%t8?&xu$C?OcO!MTN( zr6J4S7ShGQb|aL~IoJD=wjMIAPy-f+A{)Qj3d}>jWp6;8mM^0cF9M@S37;JEg6hDs zs8K55t2~NI*LPTMrTUU#G?X`n@rK-Y&hC5re$m$bzdG;d|GT+7hz7WVD2-u-kUlgM zvII7ayzFji2{mt}>PCs&LO%(ViaN@& zG>_oDEMG~Q+_BAg$}y7HJ(ANQ!W z8n>t#*GZa5UYw`TaE3fMNq-a8{dn=j@apErqrR_iKUnj$5k6NdNP_Z@BCx!luB(p0 z9X|KlNjHB%2|KW9w2C0@;3?v=6YoinRlcO=^}D!;~lZ1D|Xt_xc{ZMa!hDfb|`x3Fuplih3IMsFhbYP^$^T&lmCrWBScZmgo zDNti5`I0FI3R}rSD1SyC_KZp&l1JU5w$DkA`Jz}D85z%!R>T>fM@EjY4|Uy#v;@DS zG$+g~;#H_!6#m}?Ll~;Yc8gZmy5S~4M6l2(d`ONYHx!Kt6yGA{XhCtXv#=Ocm0PO) E2M}!ihX4Qo literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-Digest.crc32 b/tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-Digest.crc32 new file mode 100644 index 0000000000..787ad51cdc --- /dev/null +++ b/tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-Digest.crc32 @@ -0,0 +1 @@ +4006707762 \ No newline at end of file diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-Filter.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-Filter.db new file mode 100644 index 0000000000000000000000000000000000000000..a2a32173b889b2c9248ddc722111562b82999802 GIT binary patch literal 336 zcmah@K?;B{42y!Wqu=nC#h06*O|%pY8_k+zEr1Qc!CNqZHCsy(*K^X)n~WwNWh4Q+ icudPL@{hQkCBnswqFHFz@E)(t8)MT_)YG5Q@o`@Xs00oG literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-Index.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-Index.db new file mode 100644 index 0000000000000000000000000000000000000000..b0b25e584e94f3e8fbc5e5082a18f497556e2f6c GIT binary patch literal 66 zcmZSJF0L#tNzIKxM+=}BBM?hLXpVI;K`jTHt$7$2IO^NK Tww6{r`vjC>0%8sz1_5~hvicC} literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-Statistics.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..dabf96e45678a62c1024dc51d6c417f0717f9d51 GIT binary patch literal 6213 zcmeI0eQXp(6u@`yqhFM>cN8ckGzwI>N)AFrAOR|HP--M#OQncp+1s18i+i`1-MvyO zga+}SYOop+N%-(1siY7ZMWjUnCMfj-;j> zncu$mX5Y-bnR&My$GNzkYqVML=Dozc9p)W3Zzsoj4{`UYT2(-diBdHQNTRNb(Xb{4 z!qrA#eq4*hwZes>X2^!DMu}FmzV6%N-Puo?#yN>Z;=0*-R!>8JHfl9#y=0SlTbEUb z7t59-@G>1j7j>RKbkmAmrZAk!a2mrI3}-UzVc5%Xw#~F3IgES+!=o53V0a?K(-@w| z@S_Y@F}#}LjSTN$xC1lK%m@E~Ew}s28;t%zn{7MCP%L+>!|Y_*cW$xecKfb!tnV(w zoH8AAD%0PzYgnGqjyban^IcD4_Pv66$YYpuPh!4%Jm!11V-8ecp1c+FtOJ-A4#vEE z7-szu%nc&uCMJH{gIL~`hnUa1h`C}B=B+qB`L55A+)+l?LC<5y$C#ZJpCNsh3&+3f z#8D)7f4Bj0%FoS+)5;Qv)2|c61FjE3>5A|BCEig?s9Jl_S~ zc)kl84XzFDiZ( z@!F9)5Px!b0%XUSeQ1AmyyQ6r<<8t%6d%sEW$94vs!g8(+5LD2>TilF*Ft$}Yv*Oi z>A^X_LLQK}AFZc>6~5z8p5-h#0(sEnd=$?^Jy%|a^5Hw5zX183`{%s{dCV7!r$HWn zym~j}sms@FgB<*7!eYp!+ar@8OZo3S2)X9!z;lo{e9&ABd1u+?k&r*#wEj8Bm-n8W z1DGE>Fw_QFnmrq?f4+I)KDhq*#ETxd{vD+A%)7weady{?I>1hY?|cEUYxFT+3FPkX z)o^~?zcp^8=ZB@1>K}A&CeTmY^k&`LfHM}ndPD=9DQx%&_TTfR_X6y{_r$zCKA=BX zY>2`0VAzhL{Q)4)`{==l8D!{P32RUC^JU zT~jB)c#f6^n;L=s`cP~8S-{)AK7F7G@WIz!Z-M@H9xgaJ`G%bLJ$3Z=S%6DcT)MXI z26MVyr+YA4QdI}7*yaBv=c0bxEa#$b=g^8>(wvL-_fE;V?C#w(=d$IuoO9Xs{W+IC z5O&d@bD{C*&$*_c@#xRF?x>v0oLdLSH^l0DCYk5l&zwqG+Lpa6^KkoG^8*K+`$RXb zabdH@&+M2z;o^ILJ)>t2eZX^>nyL^XLLwoeStm2kd23{{QV7LmB`oNMXvFD(&C!3o zZfZ`;#M-Oh>@Cf&=g(*Q+qtoS|D7fjh=`hAEh>TXMRTVtS`{OFuQfUEkdUIP5us96 z45A5@F+r*pqY^1d_O75B4=KcYTdHJ!Ig+DQ^-ala=4xskiCQ*E9h@)5dZkCZJTBS0 zsiNPXDyfkOi5f|Lpe7lnf%$dJ`T%yj^l^aYvPN|MHu5=3(j+tbi1b9?V=y-?DXJtY zf=0x!`4bamt?#X5he@RvR}8_BBSbJ%L6K{SKUrjzM2*6URI(WOHy;=6H7}nKtfQ!jVjDql3H9+3;;xX49oxk literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-TOC.txt b/tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-TOC.txt new file mode 100644 index 0000000000..af6ac45d73 --- /dev/null +++ b/tests/sstables/schema_digest_test_computed_columns/system_schema/tables-afddfb9dbc1e30688056eed6c302ba09/mc-17-big-TOC.txt @@ -0,0 +1,9 @@ +Scylla.db +CompressionInfo.db +Filter.db +Statistics.db +TOC.txt +Digest.crc32 +Index.db +Summary.db +Data.db diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/triggers-4df70b666b05325195a132b54005fd48/mc-1-big-CompressionInfo.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/triggers-4df70b666b05325195a132b54005fd48/mc-1-big-CompressionInfo.db new file mode 100644 index 0000000000000000000000000000000000000000..91b683f4fc2bbfbeb72975847924bb3d014eb8f1 GIT binary patch literal 66 zcmZSJ^@%cZ&d)6qdQqz$X{C4Uon=<^vOlsg zi^_tu7f4tnz15-u%j=zrbQKi_mxWPR(Zfo-_V8A}ZwU0?=mwUV-+Z%sGrKdl!%`F_ zrg~B^pV9oWh(8$qDBuqfMJX$(@dj?ChBdNTIeJYNYcjF<*&M6M&M|A|7I1k5Tx1H% znRCs#hI~C2S6uWu@vM3Sf3m;B;ppbC?!%Y+5`RfPmAfjOKL`_PXGdV_IlHe$=)6!P z5elwcN?1nNgRmE2Ibj81C1JJ8!Z`ei_z1#5gu@6=BpgdPiSPo#D+zBTe1Px;!d7gW zcpmg*B5o#p9h>nZybW7KTwinq$Hf`gl1OanRBRbBUXR~6?q$K2+p!1lz*Zf@9=aGi zpapwmIQE#M*cu&nbOrW|YuG76uvZMjHqFN_VX>=-`D@YQxIGY=4*ZO*OUJIj^OLqe zL2)KcSO-1T%sp(8?h$G)7UTIZZhnB`k~^iy(ofaM9%&9_&u%^Ppl)AeMK+#~O6@xo zSJw?i_J0+CJi?la9P}7J@32n%yd%qQp!QSS-XPD8$NgIrU_(P4h)~T9c+((q$2<;mkg66ZI;^!e4AAWjo z2lS{(N#~)*K3y0K9p0347CL6drb=k-^N5AesYmmoptC|QPlsOn%ex)A^mcV3^y#$2 zqoE&`7w>`oeyL?9Fg?yYvkp2dApx#`x;o_wT>rFVzXGm*MsIs{6`aqsotahyEHcx! zeZb=2$EsxL&d!bS`AB}09f0o-S*UM&JZSGxey->uu-ClfjU2FidFe+ue#J9o2OPh$ zIq8B5v>(Ej7~%V1*r~XB4TuNcZCAnP75pVJxdg-~WY|OCejqCHeWL=zFCu?ATZ4F^9(S31Rwf#ZY4B+Hd z-+piFGi7p>h5ukO7n(9c!Il3jdoH2d{zAc(yZ2n^hA?nW@DcZ(3*8>dz2`#r!@cK% z?+}V|@45b~Jr}eEnyqqT{Uz5ub1N)(P+0 z-iiSgx>oPhZH-aCm4{j!oB6LP&NS}tA7e5#c`RqjVb^Ff(q~OcUvJbi18zCsh7>I` o7@gmFOk1k@>&7h3P^8aycBJ3S&t;7RYA1|rLVv$4Gz<;>1N5)MU;qFB literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/triggers-4df70b666b05325195a132b54005fd48/mc-1-big-Summary.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/triggers-4df70b666b05325195a132b54005fd48/mc-1-big-Summary.db new file mode 100644 index 0000000000000000000000000000000000000000..f234ed89dff3329431d772b02e09f771d615ec62 GIT binary patch literal 62 ncmZQzU}#`qU|R literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/types-5a8b1ca866023f77a0459273d308917a/mc-3-big-Index.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/types-5a8b1ca866023f77a0459273d308917a/mc-3-big-Index.db new file mode 100644 index 0000000000000000000000000000000000000000..293a79106dcccae33898427a094fe03e43981207 GIT binary patch literal 19 WcmZQzD@iRbDK=tYU|T}t3k10U literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/types-5a8b1ca866023f77a0459273d308917a/mc-3-big-Scylla.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/types-5a8b1ca866023f77a0459273d308917a/mc-3-big-Scylla.db new file mode 100644 index 0000000000000000000000000000000000000000..ded8a7be555100f5654133ac061449bd33b55b0c GIT binary patch literal 78 zcmZQzU|?ooU|<1afxGAStep1SciYD6xmwAef6oMpF#@p^gyv9dP873fw@zSS;HYo^ T+FDxi>=RIi35Yp>7zE@2IWQ90 literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/types-5a8b1ca866023f77a0459273d308917a/mc-3-big-Statistics.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/types-5a8b1ca866023f77a0459273d308917a/mc-3-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..0ba2e03c15c4b9894a7605228d143a6195473a33 GIT binary patch literal 4909 zcmeI$e@qis902gU>kpumjuup8k!%Vo%v3T&G*J<${Ma-iKeYY|9&MGXwB%YgWIByw ze~c+(%N!%Y-w82jB>o08x&)>E+Eik!GiorYU^H4a>To)`E8LUs_eG=sEV`tZT;KcL z_uakk-MzbeDZ?;wrhkbQ3szj`i7O|rW#TGh80{hE6T7ff&zJJ1VvF9yI~=^tEbw}B zu~R>@OeiT6l5%*#X?0rdHj9v2S#dLSPvlqP&QU&}uU9;JxO70V5Et=~;!@l9+uxy7 z?JN8Vz{Q^kT>AGO*g}#gTNI=sl}gG%l!Ga&D61)JC~GN4N+#zKMa73v9zi*Q@~4z1 zQO=S~`kO<=mr`Cuc_Zchl-<}YbwAkgRNP7V7&bSA@;Yo8b$nSpj>`+M6-n62$=E^E z`3677ag_^O?Zy7!TWsA{?7{P~qdTxa8jC%03%1^fow5mg+EMJBLD-9jVmoGISMk^l z)cAE7aNHY%%*H&#Hs)h*!sC&dFZpTPEPYUX<6HN$rzpKVKo=0+Vx z?^o^@%_SI@MVF)TA!}I_0^{=XkSWlLg>H1dO1rfj#)FzYPoYB$(;q{J#~`pglsGh=hiIPt3gaK{`tc6*$K$g0L65pJcM|m23&ne&CoW#S8QO3)aV~W3 zmXc&>Q{17c&|mx=)&*UCvN02SS6w@WR^Nx`ulZAZ2cEz7V%B~gXg`RrDuv&Jp*vGs^&lQ|x=RP|SL~zA z>?#l+Q{at*^MT}~yX_hfPjz>?CJ#GeC_(t z2H<1ccQnC#J#7gcDFbm<_szK%(}1&=J$b%vz>GtxlXvjzN)GJful`@=TqNx%QjyC4 zYR*NvnL{d48JKgS3lf-fq07Mp=3MA{1m;|UITsiZ@7tV9OpRmM4c(05`%B8tS7-E< z3tA!b@RQW6WZWO>?IwKK$+FHu9|{8(2nF#5=5}LaS|w-QS*aUpw+4 zrgvsuEdS0}`cFo;I^M;Me)XR-Mfwt6a1`?^^ac4D6Y^JBNRQs{zG2 E0M;l0IsgCw literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/view_virtual_columns-08843b6345dc3be29798a0418295cfaa/mc-5-big-Index.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/view_virtual_columns-08843b6345dc3be29798a0418295cfaa/mc-5-big-Index.db new file mode 100644 index 0000000000000000000000000000000000000000..48839bb6ea60cd5b339a4f3105b51e594d0e91ab GIT binary patch literal 16 XcmZQzD@iRbDK=tYU|`BF7G(ecAG`x$ literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/view_virtual_columns-08843b6345dc3be29798a0418295cfaa/mc-5-big-Scylla.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/view_virtual_columns-08843b6345dc3be29798a0418295cfaa/mc-5-big-Scylla.db new file mode 100644 index 0000000000000000000000000000000000000000..73b6b4d928cd05f568b7ea38b1b1390dbe5673af GIT binary patch literal 78 zcmZQzU|?ooU|<1afpX8hss9gpZrbtJezxI7*1te8Mj)1g&>U*biDDM*)(H#@9J)o^ TK@#iBG=MTpK+FNeARrF_oURU8 literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/view_virtual_columns-08843b6345dc3be29798a0418295cfaa/mc-5-big-Statistics.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/view_virtual_columns-08843b6345dc3be29798a0418295cfaa/mc-5-big-Statistics.db new file mode 100644 index 0000000000000000000000000000000000000000..3a36a2f631e9239e86616cbf89eb7aa3bd36893e GIT binary patch literal 4939 zcmeI$e{2&~902gU>yLG%t7|)8%&;hI!iMRV)j3FjxvjX>Xqfu}MIhzcUbe#8F4rrJ zfnsp};WT3s$0Xs0KazzE!lF~z=7J`J)gLIZ5UWPWOzJQgtr)=}Wc6;+C9ET?Cu|^`5w|>!Od`IJ@M6OGgo_BTBwR&! z9pQ$!<^Jp@;$4LM35T(1;(pMN5^;g>X>4Xb;l0=j;`V;E9_sQ`bs5U|H_N!P+av%2eSItUSv&e z3^{d*L!L8bLe{(SdNf#nMDdKldB~YpvXB>sYmgV8$M-vb65nr2=SQgis_`F?pD4rq z+mIDO@vT1_k)L1NhkWqXa^!(Ccz!Mqp!uY=={I0~y0r2Yq9ZPITgm0Evc)aRhz-8(43obOCgkG`b*(1=_ZwuE$*Btd0 zL%VW6cno^`pJ@}&9cOzhp^w)dTm=0^ciTSbo9~aU0j8IxIR~L#6&3LLr+ceU!RMcj zy{3oHKf^_?d*#!swn1y%@jWIwPn=e*GdJvq4>-XGN;on7$#k&!1=_bcbON?SXK zKU^Qph5LbG%TJ?v5HAg19ohl>Izjz5=Rjy2_{evchkJle zzx8$>>~CZwf2?FSP8(l1cc&cKw)MvCy|bnQ@x1&SOr~;GM$W|3|7y=Ax34AIgL5o} z;2cZ-r#+Vxla9=poy*CC(*7(fbcjs+TXR*F9&NPB#u_Y}Sp0_K1IQ$a5W=lyj6@%+Y1xio)w3 z-z}5hb#ehiX$5DKW4njj;V7bLr&vxDx#X(y>ydmdQ+Kw#WZyMqx~j_yQA_{+FB+%W z%kqInw#i&y_xSR7o s1ul?xuaT5XwWOgaw|RW-gj>=y`vcSeQQflvn@_M5O*bHjtt8yQUw;YZl>h($ literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/view_virtual_columns-08843b6345dc3be29798a0418295cfaa/mc-5-big-Summary.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/view_virtual_columns-08843b6345dc3be29798a0418295cfaa/mc-5-big-Summary.db new file mode 100644 index 0000000000000000000000000000000000000000..08635e77128ffaea02d6b4fb4f3e89f806f8ae1d GIT binary patch literal 58 pcmZQzU}#`qU|sbW_wnZa=FJT6y#NeG;B^e! zv6D;w&tKtr{M~zdCrsd~_Qv7iVF!dkK!WHj*VI+hSnIY%@P!72m#?K~$AkOt^hqF$ z9MA4Wbh3}yKWE>DANcX-L>vIeLZ})on>l|?QJ9TdjWt_s8kXABEXQ=rM*Spm0(&!! zZxVDR+He{q&I4^+wN{+cR$yogsUl6v#!SC%rp%5DEdEfqFy%_75UPJLBLvWL)$X(}2d>5j-j0cbX4|R=K}oLe&$hSy@-j zdc|1pmP0_H{3IUXCgGjJ8Q>MguuZWn+w%oQW7wk17*6qHi1GX^aZf3T34RfUjo}0l faR`duqozVtUy1@oIt830hr22lV2 literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/views-9786ac1cdd583201a7cdad556410c985/mc-7-big-Scylla.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/views-9786ac1cdd583201a7cdad556410c985/mc-7-big-Scylla.db new file mode 100644 index 0000000000000000000000000000000000000000..b40bfa3af595acc6371467f58e0be59cfffb4a3e GIT binary patch literal 78 zcmZQzU|?ooU|<1a0roo4pqB~m>T{Rxo^Uy+XA4k_5s0NAG>2MqqL@XybpiteM}7O( T*3yb+pMWws9sE7tc5*|L1N`OEVm9`QvsZt*(&sa4=FsWcLS}}q}2zBmy3*R@9T#J7Qrkm`} z{Pvq~_nVn-zWFj7$2qvpYX~iPdM~86jowju+c_@hF!!LQSNX(}j8RzLC>`9OvTGhE2<7=|Y@ zJcHrK8Lnb@CBvH--p_CgW}cZ3{$WOLCOFZ5{t%Yi`Z2r)v)%fBLf^g>%N^yIQ;IOB zPQskV^f&z)mOGmzMmKfjR#q=KDrseqaY?Uj^oI+c1|L#5|`D<|X|x z8;@aLCt|K+{I}VUeMKor3LKnBR)zOMh`AUOjss;w@LlBd-4#kI$KUG@iUO`!a0L7ni<( zc-5eth`(qW1=%+20E(}+S6!!}+@4>9{KMX`I0MQZH5rp3r##t$`kShSYoI)>zV!;^ z4F9x0AonV0MC&Q5!hIadv+ZR^Am@%7iu}2s>*{MzK4ACD7a`yO(2RE>5Bp}pM93qL zhxS6Au;l6Okp16{S^#pbN3pX@4yynEi3L6E=Py!Iu?SKdE4 z4KP1EE6@O0nmQG(e}31T191KG9UEP6{o6?E*$;uf?cAQpwSes=-}(w*$B<+0GRW=i zE8+a4{JCKh+&|L1x#y>V_UW77seKQybM_lYbikRy`d?xHUEk(hg#FJsF=M|QwC^LX zi@^P$|IXq@ACMP(cHRx=Ysl}VW$S=^M0wj#m=BCC`uT_p$ctMpG%g1`bL+l6(4IwY z6UIV+R_FTbHh}hP1NF`40B`^P%)vUqhu(Z^AGEi%sqo~uTXNq0%+c#5fXkL%zP9ET zb4H?W#bCCyn%b;NqP$ykF3WxoV{abAx68RK{X(Yw7>3arr?R^>=SrA;$2nI*zbEIy z^WT$mq4DU+xq5Og;1K`!oQrnV#_=zjT*~vOQ)g~G6)zVxcot_iHLs!v9M({Dv|BYU zNNfC*mZ_sIeRT7kwbxiLcrMoz12P#cNTY>tuto^0K@v+2c+P1CWT84tmJ2sGB5Ma? zcVh1PvgayvQU-ezw2KcCVBe2SU~67)_ot$4@$BoiL#&*F-RW~F|2q0E1n>!6r-{!m|=ykK~0du)x?|3 zv&vMnXiUsmoutMjYHY}j)o&-$`Y+c)$qJJgF^j$4>?%p9(nW~~29Y#1Xmq{1wr+%{ z+^{Oi(I62-Sr#Nsjw-5gn?vqf;j={3WFp4ng9kQP%GuA z5fUOq4{JgCAwlUzcijqAh;JHqV1oN!`DKm~AyQNpP3n%+xlMgVmt$Av@(|I9Ajx9X KNFH^qi1#;@qUUM= literal 0 HcmV?d00001 diff --git a/tests/sstables/schema_digest_test_computed_columns/system_schema/views-9786ac1cdd583201a7cdad556410c985/mc-7-big-Summary.db b/tests/sstables/schema_digest_test_computed_columns/system_schema/views-9786ac1cdd583201a7cdad556410c985/mc-7-big-Summary.db new file mode 100644 index 0000000000000000000000000000000000000000..7206b5d9c0db563606d013e81134ee4c69a806d7 GIT binary patch literal 61 ocmZQzU}#`qU| Date: Wed, 13 Mar 2019 13:05:34 +0100 Subject: [PATCH 13/14] index: mark token column as 'computed' when creating mv Secondary indexes use a computed token column to preserve proper query ordering. This column is now marked as 'computed'. --- index/secondary_index_manager.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index/secondary_index_manager.cc b/index/secondary_index_manager.cc index f1e9a384d1..5a435ef536 100644 --- a/index/secondary_index_manager.cc +++ b/index/secondary_index_manager.cc @@ -135,7 +135,7 @@ view_ptr secondary_index_manager::create_view_for_index(const index_metadata& im builder.with_column(index_target->name(), index_target->type, column_kind::partition_key); // Additional token column is added to ensure token order on secondary index queries bytes token_column_name = get_available_token_column_name(*schema); - builder.with_column(token_column_name, bytes_type, column_kind::clustering_key); + builder.with_computed_column(token_column_name, bytes_type, column_kind::clustering_key, std::make_unique()); for (auto& col : schema->partition_key_columns()) { if (col == *index_target) { continue; From 4d1eaf8478f7d8303e3f71ce8479b4e9dda6912f Mon Sep 17 00:00:00 2001 From: Piotr Sarna Date: Fri, 29 Mar 2019 12:05:26 +0100 Subject: [PATCH 14/14] tests: add checking computed columns in SI The test case checks if token column generated for global indexing is indeed only present in global indexes and is marked as a computed column. --- tests/secondary_index_test.cc | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tests/secondary_index_test.cc b/tests/secondary_index_test.cc index fb8fa1bfbf..ab3330c9da 100644 --- a/tests/secondary_index_test.cc +++ b/tests/secondary_index_test.cc @@ -1195,3 +1195,31 @@ SEASTAR_TEST_CASE(test_indexing_paging_and_aggregation) { }); }); } + +SEASTAR_TEST_CASE(test_computed_columns) { + return do_with_cql_env_thread([] (auto& e) { + e.execute_cql("CREATE TABLE t (p1 int, p2 int, c1 int, c2 int, v int, PRIMARY KEY ((p1,p2),c1,c2))").get(); + e.execute_cql("CREATE INDEX local1 ON t ((p1,p2),v)").get(); + e.execute_cql("CREATE INDEX global1 ON t (v)").get(); + e.execute_cql("CREATE INDEX global2 ON t (c2)").get(); + e.execute_cql("CREATE INDEX local2 ON t ((p1,p2),c2)").get(); + + auto local1 = e.local_db().find_schema("ks", "local1_index"); + auto local2 = e.local_db().find_schema("ks", "local2_index"); + auto global1 = e.local_db().find_schema("ks", "global1_index"); + auto global2 = e.local_db().find_schema("ks", "global2_index"); + + bytes token_column_name("idx_token"); + data_value token_computation(token_column_computation().serialize()); + BOOST_REQUIRE_EQUAL(local1->get_column_definition(token_column_name), nullptr); + BOOST_REQUIRE_EQUAL(local2->get_column_definition(token_column_name), nullptr); + BOOST_REQUIRE(global1->get_column_definition(token_column_name)->is_computed()); + BOOST_REQUIRE(global2->get_column_definition(token_column_name)->is_computed()); + + auto msg = e.execute_cql("SELECT computation FROM system_schema.computed_columns WHERE keyspace_name='ks'").get0(); + assert_that(msg).is_rows().with_rows({ + {{bytes_type->decompose(token_computation)}}, + {{bytes_type->decompose(token_computation)}} + }); + }); +}