schema: Calculate default validator

Fixes #2605

Signed-off-by: Duarte Nunes <duarte@scylladb.com>
Message-Id: <20170719105131.21455-3-duarte@scylladb.com>
This commit is contained in:
Duarte Nunes
2017-07-19 12:51:31 +02:00
committed by Tomasz Grabiec
parent 259cfaf8f9
commit 013fa3da14
2 changed files with 12 additions and 1 deletions

View File

@@ -751,6 +751,16 @@ schema_ptr schema_builder::build() {
}
prepare_dense_schema(new_raw);
if (_default_validator) {
new_raw._default_validator = *_default_validator;
} else if (new_raw._is_dense || !new_raw._is_compound) {
auto regular_column = std::find_if(new_raw._columns.begin(), new_raw._columns.end(), [] (auto&& col) {
return col.kind == column_kind::regular_column;
});
new_raw._default_validator = regular_column->type;
}
return make_lw_shared<schema>(schema(new_raw));
}

View File

@@ -31,6 +31,7 @@ private:
schema::raw_schema _raw;
std::experimental::optional<compact_storage> _compact_storage;
std::experimental::optional<table_schema_version> _version;
std::experimental::optional<data_type> _default_validator;
schema_builder(const schema::raw_schema&);
public:
schema_builder(const sstring& ks_name, const sstring& cf_name,
@@ -74,7 +75,7 @@ public:
}
schema_builder& set_default_validator(const data_type& validator) {
_raw._default_validator = validator;
_default_validator = {validator};
return *this;
}