aboutsummaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2021-12-21 12:36:58 +0100
committerJon Bratseth <bratseth@gmail.com>2021-12-21 12:36:58 +0100
commit793bc708b0554ba84cf209363bdde9a555c69740 (patch)
treee14eca6017c135663764b322c14e6d32a54f19c4 /container-search
parent811e7036517781a863c5a326a9f24957a2866ceb (diff)
Allow keywords as YQL properties without quoting
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/antlr4/com/yahoo/search/yql/yqlplus.g48
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/MinimalQueryInserterTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/UserInputTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/VespaSerializerTestCase.java12
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java8
6 files changed, 17 insertions, 17 deletions
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 8b0ebcf98fc..6193cabeaa7 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
@@ -270,7 +270,7 @@ sequence_source
;
namespaced_name
- : (ident (DOT ident)* (DOT STAR)?)
+ : (dotted_idents (DOT STAR)?)
;
orderby
@@ -450,12 +450,12 @@ propertyNameAndValue
;
propertyName
- : dottedIdentifiers
+ : dotted_idents
| STRING
;
-dottedIdentifiers
- : IDENTIFIER (DOT IDENTIFIER)*
+dotted_idents
+ : ident (DOT ident)*
;
constantExpression
diff --git a/container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java b/container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java
index 3e7084acc56..cc441eb0c3d 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java
@@ -1485,7 +1485,7 @@ public class VespaSerializer {
private static void serializeOrigin(StringBuilder destination, String image, int offset, int length) {
destination.append(ORIGIN).append(": {").append(ORIGIN_ORIGINAL).append(": \"");
escape(image, destination);
- destination.append("\", '").append(ORIGIN_OFFSET).append("': ")
+ destination.append("\", ").append(ORIGIN_OFFSET).append(": ")
.append(offset).append(", ").append(ORIGIN_LENGTH)
.append(": ").append(length).append("}");
}
diff --git a/container-search/src/test/java/com/yahoo/search/yql/MinimalQueryInserterTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/MinimalQueryInserterTestCase.java
index 36e8830004b..76241dfced3 100644
--- a/container-search/src/test/java/com/yahoo/search/yql/MinimalQueryInserterTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/yql/MinimalQueryInserterTestCase.java
@@ -345,7 +345,7 @@ public class MinimalQueryInserterTestCase {
public void testAndSegmenting() {
Query query = new Query("?yql=select%20%2A%20from%20sources%20%2A%20where%20%5B%7B%22defaultIndex%22%3A%20%22default%22%2C%22grammar%22%3A%20%22web%22%2C%22stem%22%3A%20true%2C%22allowEmpty%22%3A%20true%7D%5DuserInput%28%40animal%29%3B&animal=m%26m%27s&tracelevel=3");
execution.search(query);
- assertEquals("select * from sources * where (default contains \"m\" AND default contains ([{origin: {original: \"m\\'s\", 'offset': 0, length: 3}, andSegmenting: true}]phrase(\"m\", \"s\")));",
+ assertEquals("select * from sources * where (default contains \"m\" AND default contains ([{origin: {original: \"m\\'s\", offset: 0, length: 3}, andSegmenting: true}]phrase(\"m\", \"s\")));",
query.yqlRepresentation());
}
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 b220be83b18..cc1a275af5a 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
@@ -83,7 +83,7 @@ public class UserInputTestCase {
builder.setParameter("yql",
"select * from sources * where [{grammar: \"segment\"}]userInput(\"nal le\")");
Query query = searchAndAssertNoErrors(builder);
- assertEquals("select * from sources * where default contains ([{origin: {original: \"nal le\", 'offset': 0, length: 6}}]phrase(\"nal\", \"le\"));", query.yqlRepresentation());
+ assertEquals("select * from sources * where default contains ([{origin: {original: \"nal le\", offset: 0, length: 6}}]phrase(\"nal\", \"le\"));", query.yqlRepresentation());
}
@Test
diff --git a/container-search/src/test/java/com/yahoo/search/yql/VespaSerializerTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/VespaSerializerTestCase.java
index d1759daae47..7057f996041 100644
--- a/container-search/src/test/java/com/yahoo/search/yql/VespaSerializerTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/yql/VespaSerializerTestCase.java
@@ -242,7 +242,7 @@ public class VespaSerializerTestCase {
phraseSegment.setLabel("labeled");
phraseSegment.lock();
String q = VespaSerializer.serialize(phraseSegment);
- assertEquals("someIndexName contains ([{origin: {original: \"abc\", 'offset': 0, length: 3}, label: \"labeled\"}]phrase(\"a\", \"b\"))", q);
+ assertEquals("someIndexName contains ([{origin: {original: \"abc\", offset: 0, length: 3}, label: \"labeled\"}]phrase(\"a\", \"b\"))", q);
}
@Test
@@ -261,12 +261,12 @@ public class VespaSerializerTestCase {
andSegment.addItem(new WordItem("b", "indexNamePlaceholder"));
andSegment.setLabel("labeled");
String q = VespaSerializer.serialize(andSegment);
- assertEquals("indexNamePlaceholder contains ([{origin: {original: \"abc\", 'offset': 0, length: 3}, andSegmenting: true}]phrase(\"a\", \"b\"))", q);
+ assertEquals("indexNamePlaceholder contains ([{origin: {original: \"abc\", offset: 0, length: 3}, andSegmenting: true}]phrase(\"a\", \"b\"))", q);
andSegment.setIndexName("someIndexName");
andSegment.lock();
q = VespaSerializer.serialize(andSegment);
- assertEquals("someIndexName contains ([{origin: {original: \"abc\", 'offset': 0, length: 3}, andSegmenting: true}]phrase(\"a\", \"b\"))", q);
+ assertEquals("someIndexName contains ([{origin: {original: \"abc\", offset: 0, length: 3}, andSegmenting: true}]phrase(\"a\", \"b\"))", q);
}
@Test
@@ -276,7 +276,7 @@ public class VespaSerializerTestCase {
@Test
public void testPhraseSegmentInPhrase() {
- parseAndConfirm("description contains phrase(\"a\", \"b\", ([{origin: {original: \"c d\", 'offset': 0, length: 3}}]phrase(\"c\", \"d\")))");
+ parseAndConfirm("description contains phrase(\"a\", \"b\", ([{origin: {original: \"c d\", offset: 0, length: 3}}]phrase(\"c\", \"d\")))");
}
@Test
@@ -432,14 +432,14 @@ public class VespaSerializerTestCase {
@Test
public void testWordAlternatives() {
- parseAndConfirm("foo contains" + " ([{origin: {original: \" trees \", 'offset': 1, length: 5}}]"
+ parseAndConfirm("foo contains" + " ([{origin: {original: \" trees \", offset: 1, length: 5}}]"
+ "alternatives({\"trees\": 1.0, \"tree\": 0.7}))");
}
@Test
public void testWordAlternativesInPhrase() {
parseAndConfirm("foo contains phrase(\"forest\","
- + " ([{origin: {original: \" trees \", 'offset': 1, length: 5}}]"
+ + " ([{origin: {original: \" trees \", offset: 1, length: 5}}]"
+ "alternatives({\"trees\": 1.0, \"tree\": 0.7}))"
+ ")");
}
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 ec326f4bdad..c555505327c 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
@@ -314,7 +314,7 @@ public class YqlParserTestCase {
"([ {ranked: false} ]\"colors\")").isRanked());
Substring origin = getRootWord("select foo from bar where baz contains " +
- "([ {origin: {original: \"abc\", 'offset': 1, length: 2}} ]" +
+ "([ {origin: {original: \"abc\", offset: 1, length: 2}} ]" +
"\"colors\")").getOrigin();
assertEquals("abc", origin.string);
assertEquals(1, origin.start);
@@ -350,7 +350,7 @@ public class YqlParserTestCase {
@Test
public void testNestedPhraseSegment() {
assertParse("select foo from bar where baz contains " +
- "phrase(\"a\", \"b\", [ {origin: {original: \"c d\", 'offset': 0, length: 3}} ]" +
+ "phrase(\"a\", \"b\", [ {origin: {original: \"c d\", offset: 0, length: 3}} ]" +
"phrase(\"c\", \"d\"));",
"baz:\"a b 'c d'\"");
}
@@ -969,7 +969,7 @@ public class YqlParserTestCase {
@Test
public void testWordAlternativesWithOrigin() {
QueryTree q = parse("select * from sources * where foo contains" +
- " ([{origin: {original: \" trees \", 'offset': 1, length: 5}}]" +
+ " ([{origin: {original: \" trees \", offset: 1, length: 5}}]" +
"alternatives({trees: 1.0, tree: 0.7}))");
Item root = q.getRoot();
assertSame(WordAlternativesItem.class, root.getClass());
@@ -1071,7 +1071,7 @@ public class YqlParserTestCase {
@Test
public void testAndSegmenting() {
- parse("select * from sources * where (default contains ([{stem: false}]\"m\") AND default contains ([{origin: {original: \"m\'s\", 'offset': 0, length: 3}, andSegmenting: true}]phrase(\"m\", \"s\"))) timeout 472");
+ parse("select * from sources * where (default contains ([{stem: false}]\"m\") AND default contains ([{origin: {original: \"m\'s\", offset: 0, length: 3}, andSegmenting: true}]phrase(\"m\", \"s\"))) timeout 472");
}
private void assertUrlQuery(String field, Query query, boolean startAnchor, boolean endAnchor, boolean endAnchorIsDefault) {