diff options
Diffstat (limited to 'icing/util/document-validator.cc')
-rw-r--r-- | icing/util/document-validator.cc | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/icing/util/document-validator.cc b/icing/util/document-validator.cc index e0880ea..bc75334 100644 --- a/icing/util/document-validator.cc +++ b/icing/util/document-validator.cc @@ -15,13 +15,23 @@ #include "icing/util/document-validator.h" #include <cstdint> +#include <string> +#include <string_view> +#include <unordered_map> #include <unordered_set> +#include <utility> #include "icing/text_classifier/lib3/utils/base/status.h" +#include "icing/text_classifier/lib3/utils/base/statusor.h" #include "icing/absl_ports/canonical_errors.h" +#include "icing/absl_ports/str_cat.h" +#include "icing/legacy/core/icing-string-util.h" #include "icing/proto/document.pb.h" #include "icing/proto/schema.pb.h" +#include "icing/schema/schema-store.h" #include "icing/schema/schema-util.h" +#include "icing/store/document-filter-data.h" +#include "icing/util/logging.h" #include "icing/util/status-macros.h" namespace icing { @@ -123,6 +133,18 @@ libtextclassifier3::Status DocumentValidator::Validate( } else if (property_config.data_type() == PropertyConfigProto::DataType::DOCUMENT) { value_size = property.document_values_size(); + } else if (property_config.data_type() == + PropertyConfigProto::DataType::VECTOR) { + value_size = property.vector_values_size(); + for (const PropertyProto::VectorProto& vector_value : + property.vector_values()) { + if (vector_value.values_size() == 0) { + return absl_ports::InvalidArgumentError(IcingStringUtil::StringPrintf( + "Property '%s' contains empty vectors for key: (%s, %s).", + property.name().c_str(), document.namespace_().c_str(), + document.uri().c_str())); + } + } } if (property_config.cardinality() == |