summaryrefslogtreecommitdiffstats
path: root/indexinglanguage/src/main
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2023-03-24 11:50:56 +0100
committerJon Bratseth <bratseth@gmail.com>2023-03-24 11:50:56 +0100
commit4fe77d7309056c81c713a2095339fd463ee604b4 (patch)
tree1b6c3e52d02856ffbf106412da4fc8c4c1b06c66 /indexinglanguage/src/main
parent6db94ff887b65b10b8c4a8ce10c0d2e195bc0c0a (diff)
Retrieve execution value explicitly by '_'
Diffstat (limited to 'indexinglanguage/src/main')
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionValueExpression.java54
-rw-r--r--indexinglanguage/src/main/javacc/IndexingParser.jj8
2 files changed, 62 insertions, 0 deletions
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionValueExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionValueExpression.java
new file mode 100644
index 00000000000..a4c430125a4
--- /dev/null
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionValueExpression.java
@@ -0,0 +1,54 @@
+package com.yahoo.vespa.indexinglanguage.expressions;
+
+import com.yahoo.document.DataType;
+import com.yahoo.document.DocumentType;
+import com.yahoo.document.FieldPath;
+import com.yahoo.vespa.objects.ObjectOperation;
+import com.yahoo.vespa.objects.ObjectPredicate;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Returns the current execution value, that is the value passed to this expression.
+ * Referring to this explicitly is useful e.g to concatenate it to some other string:
+ * ... | input foo . " " . _ | ...
+ *
+ * @author bratseth
+ */
+public final class ExecutionValueExpression extends Expression {
+
+ public ExecutionValueExpression() {
+ super(null);
+ }
+
+ @Override
+ protected void doExecute(ExecutionContext context) {
+ // Noop: Set the output execution value to the current execution value
+ }
+
+ @Override
+ protected void doVerify(VerificationContext context) {}
+
+ @Override
+ public DataType createdOutputType() {
+ return UnresolvedDataType.INSTANCE;
+ }
+
+ @Override
+ public String toString() {
+ return "_";
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ return obj instanceof ExecutionValueExpression;
+ }
+
+ @Override
+ public int hashCode() {
+ return 9875876;
+ }
+
+}
diff --git a/indexinglanguage/src/main/javacc/IndexingParser.jj b/indexinglanguage/src/main/javacc/IndexingParser.jj
index 9f0b4733119..a039ad137ee 100644
--- a/indexinglanguage/src/main/javacc/IndexingParser.jj
+++ b/indexinglanguage/src/main/javacc/IndexingParser.jj
@@ -205,6 +205,7 @@ TOKEN :
<ZCURVE: "zcurve"> |
<TRUE: "true" > |
<FALSE: "false" > |
+ <UNDERSCORE: "_"> |
<IDENTIFIER: ["a"-"z","A"-"Z", "_"] (["a"-"z","A"-"Z","0"-"9","_","-"])*>
}
@@ -343,6 +344,7 @@ Expression value() :
val = trimExp() |
val = literalBoolExp() |
val = zcurveExp() |
+ val = executionValueExp() |
( <LPAREN> val = statement() <RPAREN> { val = new ParenthesisExpression(val); } ) )
{ return val; }
}
@@ -752,6 +754,12 @@ Expression zcurveExp() : { }
{ return new ZCurveExpression(); }
}
+Expression executionValueExp() : { }
+{
+ ( <UNDERSCORE> )
+ { return new ExecutionValueExpression(); }
+}
+
String identifier() :
{
String val;