diff options
author | Jon Bratseth <bratseth@gmail.com> | 2020-09-03 15:29:34 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2020-09-03 15:29:34 +0200 |
commit | bf46d861e0e7cc3380508a11fa2e5085427b2725 (patch) | |
tree | dbddce55f89474d75adb81dbcb48feb6158a45eb /container-search | |
parent | 842478eca170b3cc04408d80acafb252d7c19c26 (diff) |
Allow varref in equiv
Diffstat (limited to 'container-search')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/yql/YqlParser.java | 10 | ||||
-rw-r--r-- | container-search/src/test/java/com/yahoo/search/yql/UserInputTestCase.java | 10 |
2 files changed, 16 insertions, 4 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java b/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java index 3880ad594e3..739aae0e277 100644 --- a/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java +++ b/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java @@ -1283,7 +1283,7 @@ public class YqlParser implements Parser { equiv.setIndexName(field); for (OperatorNode<ExpressionOperator> arg : args) { switch (arg.getOperator()) { - case LITERAL: + case LITERAL: case VARREF: equiv.addItem(instantiateWordItem(field, arg, equiv.getClass())); break; case CALL: @@ -1292,7 +1292,7 @@ public class YqlParser implements Parser { break; default: throw newUnexpectedArgumentException(arg.getOperator(), - ExpressionOperator.CALL, ExpressionOperator.LITERAL); + ExpressionOperator.CALL, ExpressionOperator.LITERAL, ExpressionOperator.VARREF); } } return leafStyleSettings(ast, equiv); @@ -1353,7 +1353,8 @@ public class YqlParser implements Parser { } private Item instantiateWordItem(String field, - OperatorNode<ExpressionOperator> ast, Class<?> parent, + OperatorNode<ExpressionOperator> ast, + Class<?> parent, SegmentWhen segmentPolicy) { String wordData = getStringContents(ast); return instantiateWordItem(field, wordData, ast, parent, segmentPolicy, null, decideParsingLanguage(ast, wordData)); @@ -1369,7 +1370,8 @@ public class YqlParser implements Parser { // which always expands first, but not using getIndex, which performs checks that doesn't always work private Item instantiateWordItem(String field, String rawWord, - OperatorNode<ExpressionOperator> ast, Class<?> parent, + OperatorNode<ExpressionOperator> ast, + Class<?> parent, SegmentWhen segmentPolicy, Boolean exactMatch, Language language) { diff --git a/container-search/src/test/java/com/yahoo/search/yql/UserInputTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/UserInputTestCase.java index 6433270d691..06160e1c6d5 100644 --- a/container-search/src/test/java/com/yahoo/search/yql/UserInputTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/yql/UserInputTestCase.java @@ -217,6 +217,16 @@ public class UserInputTestCase { assertEquals("select * from sources * where myfield contains \"token\" | [{ 'continuations':['BCBCBCBEBG', 'BCBKCBACBKCCK'] }]all(group(f) each(output(count())));", query.yqlRepresentation()); } + @Test + public void testReferenceInEquiv() { + URIBuilder builder = searchUri(); + builder.setParameter("term", "A"); + builder.setParameter("yql", + "select foo from bar where fieldName contains equiv(@term,'B');"); + Query query = searchAndAssertNoErrors(builder); + assertEquals("select foo from bar where fieldName contains equiv(\"A\", \"B\");", query.yqlRepresentation()); + } + private Query searchAndAssertNoErrors(URIBuilder builder) { Query query = new Query(builder.toString()); Result r = execution.search(query); |