types: Implement validation for set

Signed-off-by: Piotr Jastrzebski <piotr@scylladb.com>
This commit is contained in:
Piotr Jastrzebski
2019-02-28 16:20:50 +01:00
parent 086d8abf89
commit bd2823b623
2 changed files with 8 additions and 0 deletions

View File

@@ -2966,6 +2966,13 @@ set_type_impl::less(bytes_view o1, bytes_view o2) const {
[this] (bytes_view o1, bytes_view o2) { return _elements->less(o1, o2); });
}
void set_type_impl::validate(bytes_view v, cql_serialization_format sf) const {
auto nr = read_collection_size(v, sf);
for (int i = 0; i != nr; ++i) {
_elements->validate(read_collection_value(v, sf), sf);
}
}
void
set_type_impl::serialize(const void* value, bytes::iterator& out) const {
return serialize(value, out, cql_serialization_format::internal());

View File

@@ -54,6 +54,7 @@ public:
virtual bool is_value_compatible_with_frozen(const collection_type_impl& previous) const override;
virtual bool less(bytes_view o1, bytes_view o2) const override;
virtual bool is_byte_order_comparable() const override { return _elements->is_byte_order_comparable(); }
virtual void validate(bytes_view v, cql_serialization_format sf) const override;
virtual void serialize(const void* value, bytes::iterator& out) const override;
virtual void serialize(const void* value, bytes::iterator& out, cql_serialization_format sf) const override;
virtual size_t serialized_size(const void* value) const override;