From 58c74f0c310ca052330aa0510066383b238d1082 Mon Sep 17 00:00:00 2001 From: anton kolhun Date: Thu, 21 Jul 2022 10:21:54 +0300 Subject: skip number ranges with empty rangeStart and non-numeric rangeEnd --- .../java/com/yahoo/prelude/query/parser/StructuredParser.java | 1 + .../src/test/java/com/yahoo/search/yql/UserInputTestCase.java | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/StructuredParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/StructuredParser.java index 54a6e5b6e90..f993c7a9e02 100644 --- a/container-search/src/main/java/com/yahoo/prelude/query/parser/StructuredParser.java +++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/StructuredParser.java @@ -333,6 +333,7 @@ abstract class StructuredParser extends AbstractParser { if (tokens.currentIs(NUMBER)) { rangeEnd = (negative ? "-" : "") + tokens.next().toString() + decimalPart(); } + if (rangeStart.isBlank() && rangeEnd.isBlank()) return null; String range = "[" + rangeStart + ";" + rangeEnd; 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 5e97b59646f..4af29822a26 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 @@ -359,4 +359,13 @@ public class UserInputTestCase { assertQueryFails(builder); } + @Test + public void testUserInputWithEmptyRangeStart() { + URIBuilder builder = searchUri(); + builder.setParameter("wql", "[;boom]"); + builder.setParameter("yql", "select * from sources * where ([{\"defaultIndex\": \"text_field\",\"grammar\": \"any\"}]userInput(@wql))"); + Query query = searchAndAssertNoErrors(builder); + assertEquals("select * from sources * where text_field contains \"boom\"", query.yqlRepresentation()); + } + } -- cgit v1.2.3