aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/schema/processing
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/main/java/com/yahoo/schema/processing')
-rw-r--r--config-model/src/main/java/com/yahoo/schema/processing/IndexingInputs.java24
-rw-r--r--config-model/src/main/java/com/yahoo/schema/processing/IndexingValidation.java3
-rw-r--r--config-model/src/main/java/com/yahoo/schema/processing/NGramMatch.java6
-rw-r--r--config-model/src/main/java/com/yahoo/schema/processing/PredicateProcessor.java8
4 files changed, 20 insertions, 21 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/processing/IndexingInputs.java b/config-model/src/main/java/com/yahoo/schema/processing/IndexingInputs.java
index 985ec8653c7..0537f1704ab 100644
--- a/config-model/src/main/java/com/yahoo/schema/processing/IndexingInputs.java
+++ b/config-model/src/main/java/com/yahoo/schema/processing/IndexingInputs.java
@@ -31,9 +31,8 @@ public class IndexingInputs extends Processor {
ScriptExpression script = field.getIndexingScript();
if (script == null) continue;
- String fieldName = field.getName();
- script = (ScriptExpression)new DefaultToCurrentField(fieldName).convert(script);
- script = (ScriptExpression)new EnsureInputExpression(fieldName).convert(script);
+ script = (ScriptExpression)new DefaultToCurrentField(field).convert(script);
+ script = (ScriptExpression)new EnsureInputExpression(field).convert(script);
if (validate)
new VerifyInputExpression(schema, field).visit(script);
@@ -43,10 +42,10 @@ public class IndexingInputs extends Processor {
private static class DefaultToCurrentField extends ExpressionConverter {
- final String fieldName;
+ final SDField field;
- DefaultToCurrentField(String fieldName) {
- this.fieldName = fieldName;
+ DefaultToCurrentField(SDField field) {
+ this.field = field;
}
@Override
@@ -56,27 +55,28 @@ public class IndexingInputs extends Processor {
@Override
protected Expression doConvert(Expression exp) {
- return new InputExpression(fieldName);
+ return new InputExpression(field.getName());
}
}
private static class EnsureInputExpression extends ExpressionConverter {
- final String fieldName;
+ final SDField field;
- EnsureInputExpression(String fieldName) {
- this.fieldName = fieldName;
+ EnsureInputExpression(SDField field) {
+ this.field = field;
}
@Override
protected boolean shouldConvert(Expression exp) {
- return exp instanceof StatementExpression;
+ return exp instanceof StatementExpression
+ && ( field.isDocumentField() || ( field.getAttribute() != null && field.getAttribute().isMutable()));
}
@Override
protected Expression doConvert(Expression exp) {
if (exp.requiredInputType() != null) {
- return new StatementExpression(new InputExpression(fieldName), exp);
+ return new StatementExpression(new InputExpression(field.getName()), exp);
} else {
return exp;
}
diff --git a/config-model/src/main/java/com/yahoo/schema/processing/IndexingValidation.java b/config-model/src/main/java/com/yahoo/schema/processing/IndexingValidation.java
index 3c7e9b4066f..e17b1e46a6e 100644
--- a/config-model/src/main/java/com/yahoo/schema/processing/IndexingValidation.java
+++ b/config-model/src/main/java/com/yahoo/schema/processing/IndexingValidation.java
@@ -24,6 +24,7 @@ import com.yahoo.vespa.indexinglanguage.expressions.SummaryExpression;
import com.yahoo.vespa.indexinglanguage.expressions.VerificationContext;
import com.yahoo.vespa.indexinglanguage.expressions.VerificationException;
import com.yahoo.vespa.model.container.search.QueryProfiles;
+import com.yahoo.yolean.Exceptions;
import java.util.HashSet;
import java.util.Set;
@@ -51,7 +52,7 @@ public class IndexingValidation extends Processor {
converter.convert(exp); // TODO: stop doing this explicitly when visiting a script does not branch
}
} catch (VerificationException e) {
- fail(schema, field, "For expression '" + e.getExpression() + "': " + e.getMessage());
+ fail(schema, field, "For expression '" + e.getExpression() + "': " + Exceptions.toMessageString(e));
}
}
}
diff --git a/config-model/src/main/java/com/yahoo/schema/processing/NGramMatch.java b/config-model/src/main/java/com/yahoo/schema/processing/NGramMatch.java
index f1ff910be43..6ec5428156f 100644
--- a/config-model/src/main/java/com/yahoo/schema/processing/NGramMatch.java
+++ b/config-model/src/main/java/com/yahoo/schema/processing/NGramMatch.java
@@ -31,7 +31,7 @@ public class NGramMatch extends Processor {
for (SDField field : schema.allConcreteFields()) {
if (field.getMatching().getType().equals(MatchType.GRAM))
implementGramMatch(schema, field, validate);
- else if (validate && field.getMatching().getGramSize() >= 0)
+ else if (validate && field.getMatching().getGramSize().isPresent())
throw new IllegalArgumentException("gram-size can only be set when the matching mode is 'gram'");
}
}
@@ -40,9 +40,7 @@ public class NGramMatch extends Processor {
if (validate && field.doesAttributing() && ! field.doesIndexing())
throw new IllegalArgumentException("gram matching is not supported with attributes, use 'index' in indexing");
- int n = field.getMatching().getGramSize();
- if (n < 0)
- n = DEFAULT_GRAM_SIZE; // not set - use default gram size
+ int n = field.getMatching().getGramSize().orElse(DEFAULT_GRAM_SIZE);
if (validate && n == 0)
throw new IllegalArgumentException("Illegal gram size in " + field + ": Must be at least 1");
field.getNormalizing().inferCodepoint();
diff --git a/config-model/src/main/java/com/yahoo/schema/processing/PredicateProcessor.java b/config-model/src/main/java/com/yahoo/schema/processing/PredicateProcessor.java
index 0362dc39c4c..1627320dc54 100644
--- a/config-model/src/main/java/com/yahoo/schema/processing/PredicateProcessor.java
+++ b/config-model/src/main/java/com/yahoo/schema/processing/PredicateProcessor.java
@@ -15,11 +15,11 @@ import com.yahoo.vespa.documentmodel.DocumentSummary;
import com.yahoo.vespa.documentmodel.SummaryField;
import com.yahoo.vespa.documentmodel.SummaryTransform;
import com.yahoo.vespa.indexinglanguage.ExpressionConverter;
+import com.yahoo.vespa.indexinglanguage.expressions.ConstantExpression;
import com.yahoo.vespa.indexinglanguage.expressions.Expression;
import com.yahoo.vespa.indexinglanguage.expressions.OptimizePredicateExpression;
import com.yahoo.vespa.indexinglanguage.expressions.OutputExpression;
import com.yahoo.vespa.indexinglanguage.expressions.ScriptExpression;
-import com.yahoo.vespa.indexinglanguage.expressions.SetValueExpression;
import com.yahoo.vespa.indexinglanguage.expressions.SetVarExpression;
import com.yahoo.vespa.indexinglanguage.expressions.StatementExpression;
import com.yahoo.vespa.model.container.search.QueryProfiles;
@@ -112,14 +112,14 @@ public class PredicateProcessor extends Processor {
private Expression makeSetPredicateVariablesScript(BooleanIndexDefinition options) {
List<Expression> expressions = new ArrayList<>();
- expressions.add(new SetValueExpression(new IntegerFieldValue(options.getArity())));
+ expressions.add(new ConstantExpression(new IntegerFieldValue(options.getArity())));
expressions.add(new SetVarExpression("arity"));
if (options.hasLowerBound()) {
- expressions.add(new SetValueExpression(new LongFieldValue(options.getLowerBound())));
+ expressions.add(new ConstantExpression(new LongFieldValue(options.getLowerBound())));
expressions.add(new SetVarExpression("lower_bound"));
}
if (options.hasUpperBound()) {
- expressions.add(new SetValueExpression(new LongFieldValue(options.getUpperBound())));
+ expressions.add(new ConstantExpression(new LongFieldValue(options.getUpperBound())));
expressions.add(new SetVarExpression("upper_bound"));
}
return new StatementExpression(expressions);