From f89ce0648ac17de46ee325398b21767a3e8e3b01 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Mon, 30 Sep 2019 16:54:37 +0200 Subject: Add 'like' to reserved words usable as identifiers --- .../src/main/antlr4/com/yahoo/search/yql/yqlplus.g4 | 2 +- .../java/com/yahoo/prelude/test/QueryTestCase.java | 20 +------------------- .../java/com/yahoo/search/yql/YqlParserTestCase.java | 6 ++++++ 3 files changed, 8 insertions(+), 20 deletions(-) (limited to 'container-search') diff --git a/container-search/src/main/antlr4/com/yahoo/search/yql/yqlplus.g4 b/container-search/src/main/antlr4/com/yahoo/search/yql/yqlplus.g4 index 2e8aac43a65..639ff8255d2 100644 --- a/container-search/src/main/antlr4/com/yahoo/search/yql/yqlplus.g4 +++ b/container-search/src/main/antlr4/com/yahoo/search/yql/yqlplus.g4 @@ -298,7 +298,7 @@ ident keyword_as_ident : SELECT | TABLE | DELETE | INTO | VALUES | LIMIT | OFFSET | WHERE | 'order' | 'by' | DESC | MERGE | LEFT | JOIN | ON | OUTPUT | COUNT | BEGIN | END | APPLY | TYPE_BYTE | TYPE_INT16 | TYPE_INT32 | TYPE_INT64 | TYPE_BOOLEAN | TYPE_TIMESTAMP | TYPE_DOUBLE | TYPE_STRING | TYPE_ARRAY | TYPE_MAP - | VIEW | CREATE | IMPORT | PROGRAM | NEXT | PAGED | SOURCES | SET | MATCHES + | VIEW | CREATE | IMPORT | PROGRAM | NEXT | PAGED | SOURCES | SET | MATCHES | LIKE ; //program : params? (import_statement SEMI)* (ddl SEMI)* (statement SEMI)* EOF diff --git a/container-search/src/test/java/com/yahoo/prelude/test/QueryTestCase.java b/container-search/src/test/java/com/yahoo/prelude/test/QueryTestCase.java index 78868f37718..7b3327c04af 100644 --- a/container-search/src/test/java/com/yahoo/prelude/test/QueryTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/test/QueryTestCase.java @@ -35,9 +35,6 @@ import static org.junit.Assume.assumeTrue; */ public class QueryTestCase { - /** - * Basic test - */ @Test public void testSimpleQueryParsing () { Query q = newQuery("/search?query=foobar&offset=10&hits=20"); @@ -46,9 +43,6 @@ public class QueryTestCase { assertEquals(20,q.getHits()); } - /** - * Not quite so basic - */ @Test public void testAdvancedQueryParsing () { Query q = newQuery("/search?query=fOObar and kanoo&offset=10&hits=20&filter=-foo +bar&type=adv&suggestonly=true"); @@ -58,9 +52,6 @@ public class QueryTestCase { assertEquals(true, q.properties().getBoolean("suggestonly", false)); } - /** - * Not quite so basic - */ @Test public void testAnyQueryParsing () { Query q = newQuery("/search?query=foobar and kanoo&offset=10&hits=10&type=any&suggestonly=true&filter=-fast.type:offensive&encoding=latin1"); @@ -71,9 +62,6 @@ public class QueryTestCase { assertEquals("latin1",q.getModel().getEncoding()); } - /** - * A long string - */ @Test public void testLongQueryParsing() { Query q = newQuery("/p13n?query=news" @@ -108,18 +96,12 @@ public class QueryTestCase { } } - /** - * Test UTF-8 decoding - */ @Test public void testUtf8Decoding() { Query q = new Query("/?query=beyonc%C3%A9"); assertEquals("beyonc\u00e9",((WordItem) q.getModel().getQueryTree().getRoot()).getWord()); } - /** - * Check sortspec "parsing" is correct. - */ @Test public void testSortSpec() { Query q = newQuery("?query=test&sortspec=+a -b c +[rank]"); @@ -321,7 +303,7 @@ public class QueryTestCase { /** Test a vertical specific patch, see Tokenizer */ @Test @Ignore - public void testOtherharactersParsing() { + public void testOtherCharactersParsing() { Query query=newQuery(com.yahoo.search.test.QueryTestCase.httpEncode("?query=\u3007\u2e80\u2eff\u2ed0")); assertEquals(Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION, Character.UnicodeBlock.of(query.getModel().getQueryTree().getRoot().toString().charAt(0))); 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 00a17f963c6..1d25c2301e2 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 @@ -980,6 +980,12 @@ public class YqlParserTestCase { assertUrlQuery("urlfield", yql, false, false, false); } + @Test + public void testReservedWordInSource() { + parse("select * from sources like where text contains \"test\";"); + // success: parsed without exception + } + private void assertUrlQuery(String field, Query query, boolean startAnchor, boolean endAnchor, boolean endAnchorIsDefault) { boolean startAnchorIsDefault = false; // Always -- cgit v1.2.3