aboutsummaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorArne H Juul <arnej27959@users.noreply.github.com>2024-01-10 12:36:38 +0100
committerGitHub <noreply@github.com>2024-01-10 12:36:38 +0100
commit949cede5ec0375c03dacdbb141f04e471aac8099 (patch)
tree2370e5e80f2bd6f468b530aedbca8518c0b91f8e /container-search
parent7788df8ee7b8409b2e2ff15adf4cf454409cd9fd (diff)
parenta966b029e6503405fe92bc22a1a9900f58fce309 (diff)
Merge pull request #29780 from vespa-engine/bratseth/programmatic-test
Bratseth/programmatic test
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/parser/ParserFactory.java36
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java14
2 files changed, 26 insertions, 24 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/query/parser/ParserFactory.java b/container-search/src/main/java/com/yahoo/search/query/parser/ParserFactory.java
index feabf7f76f1..16345c98cff 100644
--- a/container-search/src/main/java/com/yahoo/search/query/parser/ParserFactory.java
+++ b/container-search/src/main/java/com/yahoo/search/query/parser/ParserFactory.java
@@ -27,30 +27,18 @@ public final class ParserFactory {
*/
@SuppressWarnings("deprecation")
public static Parser newInstance(Query.Type type, ParserEnvironment environment) {
- switch (type) {
- case ALL:
- return new AllParser(environment, false);
- case ANY:
- return new AnyParser(environment);
- case PHRASE:
- return new PhraseParser(environment);
- case ADVANCED:
- return new AdvancedParser(environment);
- case WEB:
- return new WebParser(environment);
- case PROGRAMMATIC:
- return new ProgrammaticParser();
- case YQL:
- return new YqlParser(environment);
- case SELECT:
- return new SelectParser(environment);
- case WEAKAND:
- return new AllParser(environment, true);
- case TOKENIZE:
- return new TokenizeParser(environment);
- default:
- throw new UnsupportedOperationException(type.toString());
- }
+ return switch (type) {
+ case ALL -> new AllParser(environment, false);
+ case ANY -> new AnyParser(environment);
+ case PHRASE -> new PhraseParser(environment);
+ case ADVANCED -> new AdvancedParser(environment);
+ case WEB -> new WebParser(environment);
+ case PROGRAMMATIC -> new ProgrammaticParser();
+ case YQL -> new YqlParser(environment);
+ case SELECT -> new SelectParser(environment);
+ case WEAKAND -> new AllParser(environment, true);
+ case TOKENIZE -> new TokenizeParser(environment);
+ };
}
}
diff --git a/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java
index 783a0ec61de..75e9525f09b 100644
--- a/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java
@@ -45,8 +45,10 @@ import com.yahoo.search.query.Sorting.LowerCaseSorter;
import com.yahoo.search.query.Sorting.Order;
import com.yahoo.search.query.Sorting.UcaSorter;
import com.yahoo.search.query.parser.Parsable;
+import com.yahoo.search.query.parser.Parser;
import com.yahoo.search.query.parser.ParserEnvironment;
+import com.yahoo.search.query.parser.ParserFactory;
import com.yahoo.search.searchchain.Execution;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
@@ -1210,6 +1212,18 @@ public class YqlParserTestCase {
"and string fields. The fieldset mixed has both"));
}
+ // TODO: Put this in the documentation
+ @Test
+ public void testProgrammaticYqlParsing() {
+ Execution execution = new Execution(Execution.Context.createContextStub());
+ Parser parser = ParserFactory.newInstance(Query.Type.YQL,
+ ParserEnvironment.fromExecutionContext(execution.context()));
+ Query query = new Query();
+ query.getModel().setType(Query.Type.YQL);
+ query.getModel().setQueryString("select * from myDoc where foo contains 'bar' and fuz contains '3'");
+ parser.parse(Parsable.fromQueryModel(query.getModel()));
+ }
+
private static void assertNumericInItem(String field, long[] values, QueryTree query) {
var exp = buildNumericInItem(field, values);
assertEquals(exp, query.getRoot());