diff options
author | Tor Egge <Tor.Egge@broadpark.no> | 2020-09-30 17:51:54 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@broadpark.no> | 2020-09-30 17:51:54 +0200 |
commit | 84db5fa6230b809265a4d7570e974a7f340b046c (patch) | |
tree | 8d4910ee0cdec1d4cbbd119355a8c0c28bbcfa62 | |
parent | 7186592cf598b66217579e042383844df9cbf879 (diff) |
Handle ReferenceFieldValue in document selection expression.
-rw-r--r-- | document/src/vespa/document/select/valuenodes.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/document/src/vespa/document/select/valuenodes.cpp b/document/src/vespa/document/select/valuenodes.cpp index 026623cf83c..73fc1c6486b 100644 --- a/document/src/vespa/document/select/valuenodes.cpp +++ b/document/src/vespa/document/select/valuenodes.cpp @@ -6,6 +6,7 @@ #include <vespa/document/base/exceptions.h> #include <vespa/document/update/documentupdate.h> #include <vespa/document/fieldvalue/fieldvalues.h> +#include <vespa/document/fieldvalue/referencefieldvalue.h> #include <vespa/document/fieldvalue/iteratorhandler.h> #include <vespa/document/datatype/documenttype.h> #include <vespa/vespalib/util/md5.h> @@ -303,6 +304,15 @@ IteratorHandler::getInternalValue(const FieldValue& fval) const const StringFieldValue& val(dynamic_cast<const StringFieldValue&>(fval)); return std::make_unique<StringValue>(val.getAsString()); } + case ReferenceFieldValue::classId: + { + const ReferenceFieldValue& val(dynamic_cast<const ReferenceFieldValue&>(fval)); + if (val.hasValidDocumentId()) { + return std::make_unique<StringValue>(val.getDocumentId().toString()); + } else { + return std::make_unique<InvalidValue>(); + } + } case ArrayFieldValue::classId: { const ArrayFieldValue& val(dynamic_cast<const ArrayFieldValue&>(fval)); |