summaryrefslogtreecommitdiffstats
path: root/document
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2020-09-30 17:51:54 +0200
committerTor Egge <Tor.Egge@broadpark.no>2020-09-30 17:51:54 +0200
commit84db5fa6230b809265a4d7570e974a7f340b046c (patch)
tree8d4910ee0cdec1d4cbbd119355a8c0c28bbcfa62 /document
parent7186592cf598b66217579e042383844df9cbf879 (diff)
Handle ReferenceFieldValue in document selection expression.
Diffstat (limited to 'document')
-rw-r--r--document/src/vespa/document/select/valuenodes.cpp10
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));