summaryrefslogtreecommitdiffstats
path: root/indexinglanguage
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@oath.com>2018-06-07 12:51:15 +0200
committerTor Brede Vekterli <vekterli@oath.com>2018-06-07 12:51:15 +0200
commit8fcb70aac51836e84deabfc1e43853701cb801aa (patch)
treed047ea3bf25a38b73a3cc6c4beb9eeb4a2fb7813 /indexinglanguage
parentc6bdb3015528cc6358eaf978e94c690e14ed5042 (diff)
Restrict what field path updates may be considered 'complete'
Only allow field value update conversion of updates that affect a top level field value.
Diffstat (limited to 'indexinglanguage')
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateHelper.java17
1 files changed, 4 insertions, 13 deletions
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateHelper.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateHelper.java
index 171c6a8eb9a..5c170fe147e 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateHelper.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateHelper.java
@@ -20,19 +20,10 @@ public abstract class FieldPathUpdateHelper {
if (!(update instanceof AssignFieldPathUpdate)) {
return false;
}
- for (FieldPathEntry entry : update.getFieldPath()) {
- switch (entry.getType()) {
- case STRUCT_FIELD:
- case MAP_ALL_KEYS:
- case MAP_ALL_VALUES:
- continue;
- case ARRAY_INDEX:
- case MAP_KEY:
- case VARIABLE:
- return false;
- }
- }
- return true;
+ // Only consider field path updates that touch a top-level field as 'complete',
+ // as these may be converted to regular field value updates.
+ return ((update.getFieldPath().size() == 1)
+ && update.getFieldPath().get(0).getType() == FieldPathEntry.Type.STRUCT_FIELD);
}
public static void applyUpdate(FieldPathUpdate update, Document doc) {