From 5b2e9e50b95032651f836b061273fd059103c3c4 Mon Sep 17 00:00:00 2001 From: Jaime Soriano Pastor Date: Wed, 11 Oct 2023 16:51:26 +0200 Subject: [PATCH] Accept null as array --- internal/fields/validate.go | 3 +++ internal/fields/validate_test.go | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/internal/fields/validate.go b/internal/fields/validate.go index 11ee9390ee..13ede4cfa4 100644 --- a/internal/fields/validate.go +++ b/internal/fields/validate.go @@ -804,6 +804,9 @@ func (v *Validator) parseSingleElementValue(key string, definition FieldDefiniti break } return forEachElementValue(key, definition, val, doc, v.parseSingleElementValue) + case nil: + // The document contains a null, let's consider this like an empty array. + return nil default: return fmt.Errorf("field %q is a group of fields, it cannot store values", key) } diff --git a/internal/fields/validate_test.go b/internal/fields/validate_test.go index 0047c45d54..b44ab6bb44 100644 --- a/internal/fields/validate_test.go +++ b/internal/fields/validate_test.go @@ -736,6 +736,21 @@ func Test_parseElementValue(t *testing.T) { } }, }, + { + key: "null_array", + value: nil, + definition: FieldDefinition{ + Name: "null_array", + Type: "group", + Fields: []FieldDefinition{ + { + Name: "id", + Type: "keyword", + }, + }, + }, + specVersion: *semver3_0_1, + }, } { t.Run(test.key, func(t *testing.T) {