aboutsummaryrefslogtreecommitdiffstats
path: root/indexinglanguage
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2021-09-26 19:39:35 +0000
committerJon Bratseth <bratseth@gmail.com>2021-09-26 19:39:35 +0000
commit4f0e63ee85a845b4b959bd70a9661b63cb590344 (patch)
tree639fdd868bb851f1b65dd184f71702c5fcaac35f /indexinglanguage
parent1abb5adacbdbcfad7070243630164e4d31f68773 (diff)
Set statement output explicitly
Diffstat (limited to 'indexinglanguage')
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EncodeExpression.java5
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java2
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionList.java6
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GuardExpression.java5
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OutputExpression.java23
5 files changed, 41 insertions, 0 deletions
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EncodeExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EncodeExpression.java
index 09034659ad0..f84da9ddef8 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EncodeExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EncodeExpression.java
@@ -27,6 +27,11 @@ public class EncodeExpression extends Expression {
}
@Override
+ public void setStatementOutputType(DataType type) {
+ targetType = ((TensorDataType)type).getTensorType();
+ }
+
+ @Override
protected void doExecute(ExecutionContext context) {
StringFieldValue input = (StringFieldValue) context.getValue();
Tensor tensor = encoder.encode(input.getString(), context.getLanguage(), targetType);
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java
index a121df8e5a8..67459c2b035 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java
@@ -31,6 +31,8 @@ public abstract class Expression extends Selectable {
this.inputType = inputType;
}
+ public void setStatementOutputType(DataType type) {}
+
public final FieldValue execute(FieldValue val) {
return execute(new ExecutionContext().setValue(val));
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionList.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionList.java
index 0ac195efb5d..0f7c2a411de 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionList.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionList.java
@@ -24,6 +24,12 @@ public abstract class ExpressionList<T extends Expression> extends CompositeExpr
}
}
+ @Override
+ public void setStatementOutputType(DataType type) {
+ for (Expression expression : expressions)
+ expression.setStatementOutputType(type);
+ }
+
public int size() {
return expressions.size();
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GuardExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GuardExpression.java
index 179f202788c..78c261caccb 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GuardExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GuardExpression.java
@@ -27,6 +27,11 @@ public final class GuardExpression extends CompositeExpression {
}
@Override
+ public void setStatementOutputType(DataType type) {
+ exp.setStatementOutputType(type);
+ }
+
+ @Override
protected void doExecute(ExecutionContext context) {
if (!shouldExecute && context.getAdapter() instanceof UpdateAdapter) {
context.setValue(null);
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OutputExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OutputExpression.java
index 398c2751bd8..267fb6fc51b 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OutputExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OutputExpression.java
@@ -2,6 +2,11 @@
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
+import com.yahoo.vespa.objects.ObjectOperation;
+import com.yahoo.vespa.objects.ObjectPredicate;
+
+import java.util.ArrayList;
+import java.util.List;
/**
* @author Simon Thoresen Hult
@@ -58,4 +63,22 @@ public abstract class OutputExpression extends Expression {
return getClass().hashCode() + (fieldName != null ? fieldName.hashCode() : 0);
}
+ public static class OutputFieldNameExtractor implements ObjectOperation, ObjectPredicate {
+
+ private final List<String> outputFieldNames = new ArrayList<>(1);
+
+ public List<String> getOutputFieldNames() { return outputFieldNames; }
+
+ @Override
+ public void execute(Object obj) {
+ outputFieldNames.add(((OutputExpression) obj).getFieldName());
+ }
+
+ @Override
+ public boolean check(Object obj) {
+ return obj instanceof OutputExpression;
+ }
+
+ }
+
}