diff --git a/types.cc b/types.cc index f8576c13dd..686e488d17 100644 --- a/types.cc +++ b/types.cc @@ -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()); diff --git a/types/set.hh b/types/set.hh index 85a0095924..7794c3d354 100644 --- a/types/set.hh +++ b/types/set.hh @@ -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;