summaryrefslogtreecommitdiffstats
path: root/indexinglanguage
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-09-27 21:18:35 -0700
committerJon Bratseth <bratseth@oath.com>2018-09-27 21:18:35 -0700
commit52bc788c7e9677e726a3800a3d4fdbd67b4ad6fb (patch)
treeed75c285a6f8e6fea7b5b1b7105eed10c4e7847e /indexinglanguage
parentb03429e1aa5c07bd5c56ccf09196c16288736458 (diff)
Imported ML model robustness
- Handle properly that compiling an expression leads to adding new expressions - Don't load rank profile models as global when reading stored models - Proper verification of model pseudofeature arguments before taking an action - Handle missing models and missing models in existing paths properly - Don't require return types to be resolved for all functions yet (they won't be for those added during comppilation)
Diffstat (limited to 'indexinglanguage')
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldExpression.java6
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetVarExpression.java1
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java8
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldTestCase.java4
4 files changed, 13 insertions, 6 deletions
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldExpression.java
index 483139f746a..30d4ff37587 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldExpression.java
@@ -32,7 +32,8 @@ public class GetFieldExpression extends Expression {
StructuredFieldValue struct = (StructuredFieldValue)input;
Field field = struct.getField(fieldName);
if (field == null) {
- throw new IllegalArgumentException("Field '" + fieldName + "' not found.");
+ throw new IllegalArgumentException("Field '" + fieldName + "' not found in struct type '" +
+ struct.getDataType().getName() + "'");
}
ctx.setValue(struct.getFieldValue(field));
}
@@ -45,7 +46,8 @@ public class GetFieldExpression extends Expression {
}
Field field = ((StructuredDataType)input).getField(fieldName);
if (field == null) {
- throw new VerificationException(this, "Field '" + fieldName + "' not found.");
+ throw new VerificationException(this, "Field '" + fieldName + "' not found in struct type '" +
+ input.getName() + "'");
}
context.setValue(field.getDataType());
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetVarExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetVarExpression.java
index 7bb99a4506a..6079652174d 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetVarExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetVarExpression.java
@@ -64,4 +64,5 @@ public class GetVarExpression extends Expression {
public int hashCode() {
return getClass().hashCode() + varName.hashCode();
}
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java
index 676bcd74a6c..e94b5df1d24 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java
@@ -28,8 +28,7 @@ public class InputExpression extends Expression {
}
@Override
- protected void doExecute(ExecutionContext ctx)
- {
+ protected void doExecute(ExecutionContext ctx) {
if (fieldPath != null) {
ctx.setValue(ctx.getInputValue(fieldPath));
} else {
@@ -79,6 +78,7 @@ public class InputExpression extends Expression {
}
public static class FieldPathOptimizer implements ObjectOperation, ObjectPredicate {
+
private final DocumentType documentType;
public FieldPathOptimizer(DocumentType documentType) {
@@ -95,9 +95,11 @@ public class InputExpression extends Expression {
public boolean check(Object obj) {
return obj instanceof InputExpression;
}
+
}
public static class InputFieldNameExtractor implements ObjectOperation, ObjectPredicate {
+
private List<String> inputFieldNames = new ArrayList<>(1);
public List<String> getInputFieldNames() { return inputFieldNames; }
@@ -111,5 +113,7 @@ public class InputExpression extends Expression {
public boolean check(Object obj) {
return obj instanceof InputExpression;
}
+
}
+
}
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldTestCase.java
index 3b5569995e6..af1a58a1de6 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldTestCase.java
@@ -40,7 +40,7 @@ public class GetFieldTestCase {
assertVerify(type, exp, DataType.STRING);
assertVerifyThrows(null, exp, "Expected any input, got null.");
assertVerifyThrows(DataType.INT, exp, "Expected structured input, got int.");
- assertVerifyThrows(type, new GetFieldExpression("bar"), "Field 'bar' not found.");
+ assertVerifyThrows(type, new GetFieldExpression("bar"), "Field 'bar' not found in struct type 'my_struct'");
}
@Test
@@ -79,7 +79,7 @@ public class GetFieldTestCase {
new GetFieldExpression("foo").execute(new StructDataType("my_struct").createFieldValue());
fail();
} catch (IllegalArgumentException e) {
- assertEquals("Field 'foo' not found.", e.getMessage());
+ assertEquals("Field 'foo' not found in struct type 'my_struct'", e.getMessage());
}
}
}