diff options
author | Arne Juul <arnej@vespa.ai> | 2024-03-19 11:26:40 +0000 |
---|---|---|
committer | Arne Juul <arnej@vespa.ai> | 2024-03-19 11:29:29 +0000 |
commit | 94b66781ae182e0368991bedd04a05a0822b2747 (patch) | |
tree | 2f040697314b39909c04e496933ee76bf4ad89d2 /indexinglanguage/src | |
parent | 3cc4afe284f321a5216324aca3b0d38b2c22ce4e (diff) |
fill variable types of VerificationContext
Diffstat (limited to 'indexinglanguage/src')
3 files changed, 8 insertions, 0 deletions
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CatExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CatExpression.java index 8ecd9fa8ef5..6e90142d8a1 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CatExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CatExpression.java @@ -36,6 +36,7 @@ public final class CatExpression extends ExpressionList<Expression> { FieldValue input = context.getValue(); DataType inputType = input != null ? input.getDataType() : null; VerificationContext ver = new VerificationContext(context); + context.fillVariableTypes(ver); List<FieldValue> values = new LinkedList<>(); List<DataType> types = new LinkedList<>(); for (Expression exp : this) { diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionContext.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionContext.java index ae8af9da778..b0478f8001c 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionContext.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionContext.java @@ -132,4 +132,10 @@ public class ExecutionContext implements FieldTypeAdapter, FieldValueAdapter, Cl return this; } + void fillVariableTypes(VerificationContext vctx) { + for (var entry : variables.entrySet()) { + vctx.setVariable(entry.getKey(), entry.getValue().getDataType()); + } + } + } diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachExpression.java index 25ac948c435..256ae68ba65 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachExpression.java @@ -47,6 +47,7 @@ public final class ForEachExpression extends CompositeExpression { FieldValue next = new MyConverter(context, exp).convert(input); if (next == null) { VerificationContext vctx = new VerificationContext(context); + context.fillVariableTypes(vctx); vctx.setValueType(input.getDataType()).execute(this); next = vctx.getValueType().createFieldValue(); } |