aboutsummaryrefslogtreecommitdiff
path: root/icing/util/document-validator.cc
diff options
context:
space:
mode:
Diffstat (limited to 'icing/util/document-validator.cc')
-rw-r--r--icing/util/document-validator.cc22
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() ==