diff options
author | Arne Juul <arnej@yahooinc.com> | 2024-02-26 12:54:53 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahooinc.com> | 2024-02-26 12:54:53 +0000 |
commit | 6ad14f5a685cbfe3acabcc477e1771ada79c961c (patch) | |
tree | 8664502352bf5260fbf719431832df2904c768a2 /config-model | |
parent | 0420245d142858687f6d8b412fd08e8edf1018d5 (diff) |
drop conversion to zcurve attribute for streaming
Diffstat (limited to 'config-model')
-rw-r--r-- | config-model/src/main/java/com/yahoo/schema/derived/IndexingScript.java | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/IndexingScript.java b/config-model/src/main/java/com/yahoo/schema/derived/IndexingScript.java index c35445cfa58..9f41f4d3542 100644 --- a/config-model/src/main/java/com/yahoo/schema/derived/IndexingScript.java +++ b/config-model/src/main/java/com/yahoo/schema/derived/IndexingScript.java @@ -8,6 +8,7 @@ import com.yahoo.vespa.configdefinition.IlscriptsConfig; import com.yahoo.vespa.configdefinition.IlscriptsConfig.Ilscript.Builder; import com.yahoo.vespa.indexinglanguage.ExpressionConverter; import com.yahoo.vespa.indexinglanguage.ExpressionVisitor; +import com.yahoo.vespa.indexinglanguage.expressions.AttributeExpression; import com.yahoo.vespa.indexinglanguage.expressions.ClearStateExpression; import com.yahoo.vespa.indexinglanguage.expressions.Expression; import com.yahoo.vespa.indexinglanguage.expressions.ForEachExpression; @@ -113,12 +114,49 @@ public final class IndexingScript extends Derived implements IlscriptsConfig.Pro } } + // for streaming, drop zcurve conversion to attribute with suffix + private static class DropZcurve extends ExpressionConverter { + private static final String zSuffix = "_zcurve"; + private static final int zSuffixLen = zSuffix.length(); + private boolean seenZcurve = false; + + @Override + protected boolean shouldConvert(Expression exp) { + if (exp instanceof ZCurveExpression) { + seenZcurve = true; + return true; + } + if (seenZcurve && exp instanceof AttributeExpression attrExp) { + return attrExp.getFieldName().endsWith(zSuffix); + } + return false; + } + + @Override + protected Expression doConvert(Expression exp) { + if (exp instanceof ZCurveExpression) { + return null; + } + if (exp instanceof AttributeExpression attrExp) { + String orig = attrExp.getFieldName(); + int len = orig.length(); + if (len > zSuffixLen && orig.endsWith(zSuffix)) { + String fieldName = orig.substring(0, len - zSuffixLen); + var result = new AttributeExpression(fieldName); + return result; + } + } + return exp; + } + } + private void addContentInOrder(IlscriptsConfig.Ilscript.Builder ilscriptBuilder) { ArrayList<Expression> later = new ArrayList<>(); Set<String> touchedFields = new HashSet<>(); for (Expression expression : expressions) { if (isStreaming) { expression = expression.convertChildren(new DropTokenize()); + expression = expression.convertChildren(new DropZcurve()); } if (modifiesSelf(expression) && ! setsLanguage(expression)) { later.add(expression); |