aboutsummaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-06-10 16:14:45 +0200
committerJon Bratseth <bratseth@gmail.com>2022-06-10 16:14:45 +0200
commite848cb9806e3266e23dab9279b83db2354caf8f0 (patch)
treee7720e4a4ec3732306288b291482c8316ebd8310 /container-search
parente7cac19f671e32b168357e33710f25062b590f24 (diff)
Simplify YQL output: {}, not [{ }]
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java55
-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.java34
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/VespaSerializerTestCase.java114
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java24
5 files changed, 114 insertions, 115 deletions
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 96f86354ba5..cab989d4466 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
@@ -180,10 +180,10 @@ public class VespaSerializer {
if (includeField) {
destination.append(normalizeIndexName(item.getIndexName())).append(" contains ");
}
- destination.append("([{");
+ destination.append("({");
serializeOrigin(destination, image, offset, length);
destination.append(", ").append(AND_SEGMENTING).append(": true");
- destination.append("}]");
+ destination.append("}");
destination.append(PHRASE).append('(');
serializeWords(destination, item);
destination.append("))");
@@ -233,7 +233,7 @@ public class VespaSerializer {
String annotations = leafAnnotations(item);
destination.append(getIndexName(item.getItem(0))).append(" contains ");
if (annotations.length() > 0) {
- destination.append("([{").append(annotations).append("}]");
+ destination.append("({").append(annotations).append("}");
}
destination.append(EQUIV).append('(');
int initLen = destination.length();
@@ -291,7 +291,7 @@ public class VespaSerializer {
static String nearAnnotations(NearItem n) {
if (n.getDistance() != NearItem.defaultDistance) {
- return "[{" + DISTANCE + ": " + n.getDistance() + "}]";
+ return "{" + DISTANCE + ": " + n.getDistance() + "}";
} else {
return "";
}
@@ -325,7 +325,7 @@ public class VespaSerializer {
return "";
StringBuilder b = new StringBuilder();
- b.append("[{");
+ b.append("{");
if (item.hasStartAnchor() != item.isStartAnchorDefault()) {
b.append(START_ANCHOR + ": " + item.hasStartAnchor());
}
@@ -334,7 +334,7 @@ public class VespaSerializer {
b.append(", ");
b.append(END_ANCHOR + ": " + item.hasEndAnchor());
}
- b.append("}]");
+ b.append("}");
return b.toString();
}
@@ -415,7 +415,7 @@ public class VespaSerializer {
boundsAnnotation = BOUNDS + ": " + "\"" + BOUNDS_RIGHT_OPEN + "\"";
}
if (annotations.length() > 0 || boundsAnnotation.length() > 0) {
- destination.append("([{");
+ destination.append("({");
}
initLen = destination.length();
if (annotations.length() > 0) {
@@ -426,7 +426,7 @@ public class VespaSerializer {
destination.append(boundsAnnotation);
}
if (initLen != annotations.length()) {
- destination.append("}]");
+ destination.append("}");
}
destination.append(RANGE).append('(')
.append(normalizeIndexName(intItem.getIndexName()))
@@ -442,7 +442,7 @@ public class VespaSerializer {
String annotations = leafAnnotations(item);
if (annotations.length() > 0) {
- image.append("([{").append(annotations).append("}]");
+ image.append("({").append(annotations).append("}");
}
if ('-' == rawNumber.charAt(0)) {
image.append('(');
@@ -554,7 +554,7 @@ public class VespaSerializer {
StringBuilder builder = new StringBuilder();
if (anyAnnotationSet) {
- builder.append("[{");
+ builder.append("{");
}
if (isMaxEditDistanceSet) {
builder.append(MAX_EDIT_DISTANCE + ":").append(fuzzyItem.getMaxEditDistance());
@@ -566,7 +566,7 @@ public class VespaSerializer {
builder.append(PREFIX_LENGTH + ":").append(fuzzyItem.getPrefixLength());
}
if (anyAnnotationSet) {
- builder.append("}]");
+ builder.append("}");
}
return builder.toString();
}
@@ -670,7 +670,7 @@ public class VespaSerializer {
length = origin.end - origin.start;
}
- destination.append("([{");
+ destination.append("({");
serializeOrigin(destination, image, offset, length);
String annotations = leafAnnotations(phrase);
if (annotations.length() > 0) {
@@ -679,7 +679,7 @@ public class VespaSerializer {
if (phrase.getSegmentingRule() == SegmentingRule.BOOLEAN_AND) {
destination.append(", ").append('"').append(AND_SEGMENTING).append("\": true");
}
- destination.append("}]");
+ destination.append("}");
destination.append(PHRASE).append('(');
serializeWords(destination, phrase);
destination.append("))");
@@ -703,7 +703,7 @@ public class VespaSerializer {
if (includeField)
destination.append(normalizeIndexName(phrase.getIndexName())).append(" contains ");
if (annotations.length() > 0)
- destination.append("([{").append(annotations).append("}]");
+ destination.append("({").append(annotations).append("}");
destination.append(PHRASE).append('(');
for (int i = 0; i < phrase.getItemCount(); ++i) {
@@ -773,7 +773,7 @@ public class VespaSerializer {
boolean serialize(StringBuilder destination, GeoLocationItem item) {
String annotations = leafAnnotations(item);
if (annotations.length() > 0) {
- destination.append("([{").append(annotations).append("}]");
+ destination.append("({").append(annotations).append("}");
}
destination.append(GEO_LOCATION).append('(');
destination.append(item.getIndexName()).append(", ");
@@ -793,7 +793,7 @@ public class VespaSerializer {
@Override
boolean serialize(StringBuilder destination, NearestNeighborItem item) {
- destination.append("[{");
+ destination.append("{");
int initLen = destination.length();
destination.append(leafAnnotations(item));
comma(destination, initLen);
@@ -816,7 +816,7 @@ public class VespaSerializer {
comma(destination, initLen);
annotationKey(destination, "approximate").append(allow_approx);
}
- destination.append("}]");
+ destination.append("}");
destination.append(NEAREST_NEIGHBOR).append('(');
destination.append(item.getIndexName()).append(", ");
destination.append(item.getQueryTensorName()).append(')');
@@ -889,7 +889,7 @@ public class VespaSerializer {
boolean serialize(StringBuilder destination, RangeItem range) {
String annotations = leafAnnotations(range);
if (annotations.length() > 0) {
- destination.append("[{").append(annotations).append("}]");
+ destination.append("{").append(annotations).append("}");
}
destination.append(RANGE).append('(')
.append(normalizeIndexName(range.getIndexName()))
@@ -952,7 +952,7 @@ public class VespaSerializer {
}
if (needsAnnotations) {
- destination.append("([{");
+ destination.append("({");
int initLen = destination.length();
if (origin != null) {
@@ -970,7 +970,7 @@ public class VespaSerializer {
destination.append(annotations);
}
- destination.append("}]");
+ destination.append("}");
}
destination.append(ALTERNATIVES).append("({");
@@ -1025,7 +1025,6 @@ public class VespaSerializer {
}
- @SuppressWarnings("deprecation")
private static class WeakAndSerializer extends Serializer<WeakAndItem> {
@Override
@@ -1048,13 +1047,13 @@ public class VespaSerializer {
@Override
boolean serialize(StringBuilder destination, WeakAndItem item) {
if (needsAnnotationBlock(item)) {
- destination.append("([{");
+ destination.append("({");
}
if (nonDefaultTargetNumHits(item)) {
destination.append(TARGET_NUM_HITS).append(": ").append(item.getN());
}
if (needsAnnotationBlock(item)) {
- destination.append("}]");
+ destination.append("}");
}
destination.append(WEAK_AND).append('(');
return true;
@@ -1373,14 +1372,14 @@ public class VespaSerializer {
private static void serialize(GroupingRequest request, StringBuilder out) {
Iterator<Continuation> it = request.continuations().iterator();
if (it.hasNext()) {
- out.append("[{ continuations:[");
+ out.append("{ continuations:[");
while (it.hasNext()) {
out.append('\'').append(it.next()).append('\'');
if (it.hasNext()) {
out.append(", ");
}
}
- out.append("] }]");
+ out.append("] }");
}
out.append(request.getRootOperation());
}
@@ -1438,7 +1437,7 @@ public class VespaSerializer {
String annotations = leafAnnotations(weightedSet);
if (optionalAnnotations.length() > 0 || annotations.length() > 0) {
- destination.append("([{");
+ destination.append("({");
}
preAnnotationValueLen = destination.length();
if (annotations.length() > 0) {
@@ -1449,7 +1448,7 @@ public class VespaSerializer {
destination.append(optionalAnnotations);
}
if (destination.length() > incomingLen) {
- destination.append("}]");
+ destination.append("}");
return true;
}
else {
@@ -1547,7 +1546,7 @@ public class VespaSerializer {
private static void annotatedTerm(StringBuilder destination, IndexedItem w, String annotations) {
if (annotations.length() > 0) {
- destination.append("([{").append(annotations).append("}]");
+ destination.append("({").append(annotations).append("}");
}
destination.append('"');
escape(w.getIndexedString(), destination).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 eb07692691b..890f847ebfe 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 9e98372093d..5e97b59646f 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
@@ -137,7 +137,7 @@ public class UserInputTestCase {
public void testCustomDefaultIndexUserInput() {
URIBuilder builder = searchUri();
builder.setParameter("yql",
- "select * from sources * where [{defaultIndex: \"glompf\"}]userInput(\"nalle\")");
+ "select * from sources * where {defaultIndex: \"glompf\"}userInput(\"nalle\")");
Query query = searchAndAssertNoErrors(builder);
assertEquals("select * from sources * where weakAnd(glompf contains \"nalle\")", query.yqlRepresentation());
}
@@ -146,10 +146,10 @@ public class UserInputTestCase {
public void testAnnotatedUserInputStemming() {
URIBuilder builder = searchUri();
builder.setParameter("yql",
- "select * from sources * where [{stem: false}]userInput(\"nalle\")");
+ "select * from sources * where {stem: false}userInput(\"nalle\")");
Query query = searchAndAssertNoErrors(builder);
assertEquals(
- "select * from sources * where weakAnd(default contains ([{stem: false}]\"nalle\"))",
+ "select * from sources * where weakAnd(default contains ({stem: false}\"nalle\"))",
query.yqlRepresentation());
}
@@ -158,7 +158,7 @@ public class UserInputTestCase {
URIBuilder builder = searchUri();
builder.setParameter("myinput", "-5");
builder.setParameter("yql",
- "select * from ecitem where rank(([{defaultIndex:\"myfield\"}](userInput(@myinput))))");
+ "select * from ecitem where rank(({defaultIndex:\"myfield\"}(userInput(@myinput))))");
Query query = searchAndAssertNoErrors(builder);
assertEquals("select * from ecitem where rank(weakAnd(myfield = (-5)))", query.yqlRepresentation());
assertEquals("RANK (WEAKAND(100) myfield:-5)", query.getModel().getQueryTree().getRoot().toString());
@@ -168,10 +168,10 @@ public class UserInputTestCase {
public void testAnnotatedUserInputUnrankedTerms() {
URIBuilder builder = searchUri();
builder.setParameter("yql",
- "select * from sources * where [{ranked: false}]userInput(\"nalle\")");
+ "select * from sources * where {ranked: false}userInput(\"nalle\")");
Query query = searchAndAssertNoErrors(builder);
assertEquals(
- "select * from sources * where weakAnd(default contains ([{ranked: false}]\"nalle\"))",
+ "select * from sources * where weakAnd(default contains ({ranked: false}\"nalle\"))",
query.yqlRepresentation());
}
@@ -179,10 +179,10 @@ public class UserInputTestCase {
public void testAnnotatedUserInputFiltersTerms() {
URIBuilder builder = searchUri();
builder.setParameter("yql",
- "select * from sources * where [{filter: true}]userInput(\"nalle\")");
+ "select * from sources * where {filter: true}userInput(\"nalle\")");
Query query = searchAndAssertNoErrors(builder);
assertEquals(
- "select * from sources * where weakAnd(default contains ([{filter: true}]\"nalle\"))",
+ "select * from sources * where weakAnd(default contains ({filter: true}\"nalle\"))",
query.yqlRepresentation());
}
@@ -191,10 +191,10 @@ public class UserInputTestCase {
URIBuilder builder = searchUri();
builder.setParameter(
"yql",
- "select * from sources * where [{normalizeCase: false}]userInput(\"nalle\")");
+ "select * from sources * where {normalizeCase: false}userInput(\"nalle\")");
Query query = searchAndAssertNoErrors(builder);
assertEquals(
- "select * from sources * where weakAnd(default contains ([{normalizeCase: false}]\"nalle\"))",
+ "select * from sources * where weakAnd(default contains ({normalizeCase: false}\"nalle\"))",
query.yqlRepresentation());
}
@@ -202,10 +202,10 @@ public class UserInputTestCase {
public void testAnnotatedUserInputAccentRemoval() {
URIBuilder builder = searchUri();
builder.setParameter("yql",
- "select * from sources * where [{accentDrop: false}]userInput(\"nalle\")");
+ "select * from sources * where {accentDrop: false}userInput(\"nalle\")");
Query query = searchAndAssertNoErrors(builder);
assertEquals(
- "select * from sources * where weakAnd(default contains ([{accentDrop: false}]\"nalle\"))",
+ "select * from sources * where weakAnd(default contains ({accentDrop: false}\"nalle\"))",
query.yqlRepresentation());
}
@@ -213,10 +213,10 @@ public class UserInputTestCase {
public void testAnnotatedUserInputPositionData() {
URIBuilder builder = searchUri();
builder.setParameter("yql",
- "select * from sources * where [{usePositionData: false}]userInput(\"nalle\")");
+ "select * from sources * where {usePositionData: false}userInput(\"nalle\")");
Query query = searchAndAssertNoErrors(builder);
assertEquals(
- "select * from sources * where weakAnd(default contains ([{usePositionData: false}]\"nalle\"))",
+ "select * from sources * where weakAnd(default contains ({usePositionData: false}\"nalle\"))",
query.yqlRepresentation());
}
@@ -246,9 +246,9 @@ public class UserInputTestCase {
builder.setParameter("continuation", "BCBCBCBEBG");
builder.setParameter("yql",
"select * from sources * where myfield contains 'token'" +
- "| [{'continuations':[@continuation, 'BCBKCBACBKCCK'] }] all(group(f) each(output(count())))");
+ "| {'continuations':[@continuation, 'BCBKCBACBKCCK'] }all(group(f) each(output(count())))");
Query query = searchAndAssertNoErrors(builder);
- assertEquals("select * from sources * where myfield contains \"token\" | [{ continuations:['BCBCBCBEBG', 'BCBKCBACBKCCK'] }]all(group(f) each(output(count())))", query.yqlRepresentation());
+ assertEquals("select * from sources * where myfield contains \"token\" | { continuations:['BCBCBCBEBG', 'BCBKCBACBKCCK'] }all(group(f) each(output(count())))", 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 5c37f590619..553c3a3e583 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
@@ -48,18 +48,18 @@ public class VespaSerializerTestCase {
public void requireThatGroupingRequestsAreSerialized() {
Query query = new Query();
query.getModel().getQueryTree().setRoot(new WordItem("foo"));
- assertEquals("default contains ([{implicitTransforms: false}]\"foo\")",
+ assertEquals("default contains ({implicitTransforms: false}\"foo\")",
VespaSerializer.serialize(query));
newGroupingRequest(query, new AllOperation().setGroupBy(new AttributeFunction("a"))
.addChild(new EachOperation().addOutput(new CountAggregator())));
- assertEquals("default contains ([{implicitTransforms: false}]\"foo\") " +
+ assertEquals("default contains ({implicitTransforms: false}\"foo\") " +
"| all(group(attribute(a)) each(output(count())))",
VespaSerializer.serialize(query));
newGroupingRequest(query, new AllOperation().setGroupBy(new AttributeFunction("b"))
.addChild(new EachOperation().addOutput(new CountAggregator())));
- assertEquals("default contains ([{implicitTransforms: false}]\"foo\") " +
+ assertEquals("default contains ({implicitTransforms: false}\"foo\") " +
"| all(group(attribute(a)) each(output(count()))) " +
"| all(group(attribute(b)) each(output(count())))",
VespaSerializer.serialize(query));
@@ -69,15 +69,15 @@ public class VespaSerializerTestCase {
public void requireThatGroupingContinuationsAreSerialized() {
Query query = new Query();
query.getModel().getQueryTree().setRoot(new WordItem("foo"));
- assertEquals("default contains ([{implicitTransforms: false}]\"foo\")",
+ assertEquals("default contains ({implicitTransforms: false}\"foo\")",
VespaSerializer.serialize(query));
newGroupingRequest(query, new AllOperation().setGroupBy(new AttributeFunction("a"))
.addChild(new EachOperation().addOutput(new CountAggregator())),
Continuation.fromString("BCBCBCBEBG"),
Continuation.fromString("BCBKCBACBKCCK"));
- assertEquals("default contains ([{implicitTransforms: false}]\"foo\") " +
- "| [{ continuations:['BCBCBCBEBG', 'BCBKCBACBKCCK'] }]" +
+ assertEquals("default contains ({implicitTransforms: false}\"foo\") " +
+ "| { continuations:['BCBCBCBEBG', 'BCBKCBACBKCCK'] }" +
"all(group(attribute(a)) each(output(count())))",
VespaSerializer.serialize(query));
@@ -85,10 +85,10 @@ public class VespaSerializerTestCase {
.addChild(new EachOperation().addOutput(new CountAggregator())),
Continuation.fromString("BCBBBBBDBF"),
Continuation.fromString("BCBJBPCBJCCJ"));
- assertEquals("default contains ([{implicitTransforms: false}]\"foo\") " +
- "| [{ continuations:['BCBCBCBEBG', 'BCBKCBACBKCCK'] }]" +
+ assertEquals("default contains ({implicitTransforms: false}\"foo\") " +
+ "| { continuations:['BCBCBCBEBG', 'BCBKCBACBKCCK'] }" +
"all(group(attribute(a)) each(output(count()))) " +
- "| [{ continuations:['BCBBBBBDBF', 'BCBJBPCBJCCJ'] }]" +
+ "| { continuations:['BCBBBBBDBF', 'BCBJBPCBJCCJ'] }" +
"all(group(attribute(b)) each(output(count())))",
VespaSerializer.serialize(query));
}
@@ -129,17 +129,17 @@ public class VespaSerializerTestCase {
@Test
public void testNear() {
parseAndConfirm("title contains near(\"a\", \"b\")");
- parseAndConfirm("title contains ([{distance: 50}]near(\"a\", \"b\"))");
+ parseAndConfirm("title contains ({distance: 50}near(\"a\", \"b\"))");
}
@Test
public void testNearestNeighbor() {
- parseAndConfirm("[{label: \"foo\", targetNumHits: 1000}]nearestNeighbor(semantic_embedding, my_property)");
- parseAndConfirm("[{targetNumHits: 42}]nearestNeighbor(semantic_embedding, my_property)");
- parseAndConfirm("[{targetNumHits: 1, hnsw.exploreAdditionalHits: 76}]nearestNeighbor(semantic_embedding, my_property)");
- parseAndConfirm("[{targetNumHits: 2, approximate: false}]nearestNeighbor(semantic_embedding, my_property)");
- parseAndConfirm("[{targetNumHits: 3, hnsw.exploreAdditionalHits: 67, approximate: false}]nearestNeighbor(semantic_embedding, my_property)");
- parseAndConfirm("[{targetNumHits: 4, distanceThreshold: 100100.25}]nearestNeighbor(semantic_embedding, my_property)");
+ parseAndConfirm("{label: \"foo\", targetNumHits: 1000}nearestNeighbor(semantic_embedding, my_property)");
+ parseAndConfirm("{targetNumHits: 42}nearestNeighbor(semantic_embedding, my_property)");
+ parseAndConfirm("{targetNumHits: 1, hnsw.exploreAdditionalHits: 76}nearestNeighbor(semantic_embedding, my_property)");
+ parseAndConfirm("{targetNumHits: 2, approximate: false}nearestNeighbor(semantic_embedding, my_property)");
+ parseAndConfirm("{targetNumHits: 3, hnsw.exploreAdditionalHits: 67, approximate: false}nearestNeighbor(semantic_embedding, my_property)");
+ parseAndConfirm("{targetNumHits: 4, distanceThreshold: 100100.25}nearestNeighbor(semantic_embedding, my_property)");
}
@Test
@@ -163,11 +163,11 @@ public class VespaSerializerTestCase {
@Test
public void testAnnotatedNumbers() {
- parseAndConfirm("title = ([{filter: true}]500)");
- parseAndConfirm("title > ([{filter: true}]500)");
- parseAndConfirm("title < ([{filter: true}](-500))");
- parseAndConfirm("title <= ([{filter: true}](-500))", "([{filter: true}](-500)) >= title");
- parseAndConfirm("title <= ([{filter: true}](-500))");
+ parseAndConfirm("title = ({filter: true}500)");
+ parseAndConfirm("title > ({filter: true}500)");
+ parseAndConfirm("title < ({filter: true}(-500))");
+ parseAndConfirm("title <= ({filter: true}(-500))", "([{filter: true}](-500)) >= title");
+ parseAndConfirm("title <= ({filter: true}(-500))");
}
@Test
@@ -177,7 +177,7 @@ public class VespaSerializerTestCase {
@Test
public void testAnnotatedRange() {
- parseAndConfirm("[{filter: true}]range(title, 1, 500)");
+ parseAndConfirm("{filter: true}range(title, 1, 500)");
}
@Test
@@ -215,22 +215,22 @@ public class VespaSerializerTestCase {
@Test
public void testAnnotatedPhrase() {
- parseAndConfirm("description contains ([{id: 1}]phrase(\"a\", \"b\"))");
+ parseAndConfirm("description contains ({id: 1}phrase(\"a\", \"b\"))");
}
@Test
public void testAnnotatedNear() {
- parseAndConfirm("description contains ([{distance: 37}]near(\"a\", \"b\"))");
+ parseAndConfirm("description contains ({distance: 37}near(\"a\", \"b\"))");
}
@Test
public void testAnnotatedOnear() {
- parseAndConfirm("description contains ([{distance: 37}]onear(\"a\", \"b\"))");
+ parseAndConfirm("description contains ({distance: 37}onear(\"a\", \"b\"))");
}
@Test
public void testAnnotatedEquiv() {
- parseAndConfirm("description contains ([{id: 1}]equiv(\"a\", \"b\"))");
+ parseAndConfirm("description contains ({id: 1}equiv(\"a\", \"b\"))");
}
@Test
@@ -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
@@ -251,7 +251,7 @@ public class VespaSerializerTestCase {
sameElement.addItem(new WordItem("a", "f1"));
sameElement.addItem(new WordItem("b", "f2"));
assertEquals("ss:{f1:a f2:b}", sameElement.toString());
- assertEquals("ss contains sameElement(f1 contains ([{implicitTransforms: false}]\"a\"), f2 contains ([{implicitTransforms: false}]\"b\"))", VespaSerializer.serialize(sameElement));
+ assertEquals("ss contains sameElement(f1 contains ({implicitTransforms: false}\"a\"), f2 contains ({implicitTransforms: false}\"b\"))", VespaSerializer.serialize(sameElement));
}
@Test
@@ -261,22 +261,22 @@ 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
public void testPhraseWithAnnotations() {
- parseAndConfirm("description contains phrase(([{id: 15}]\"a\"), \"b\")");
+ parseAndConfirm("description contains phrase(({id: 15}\"a\"), \"b\")");
}
@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
@@ -296,7 +296,7 @@ public class VespaSerializerTestCase {
@Test
public void testAnnotatedWeakAnd() {
- parseAndConfirm("([{" + YqlParser.TARGET_NUM_HITS + ": 10}]weakAnd(a contains \"A\", b contains \"B\"))");
+ parseAndConfirm("({" + YqlParser.TARGET_NUM_HITS + ": 10}weakAnd(a contains \"A\", b contains \"B\"))");
}
@Test
@@ -306,36 +306,36 @@ public class VespaSerializerTestCase {
@Test
public void testAnnotatedWord() {
- parseAndConfirm("description contains ([{andSegmenting: true}]\"a\")");
- parseAndConfirm("description contains ([{weight: 37}]\"a\")");
- parseAndConfirm("description contains ([{id: 37}]\"a\")");
- parseAndConfirm("description contains ([{filter: true}]\"a\")");
- parseAndConfirm("description contains ([{ranked: false}]\"a\")");
- parseAndConfirm("description contains ([{significance: 37.0}]\"a\")");
- parseAndConfirm("description contains ([{implicitTransforms: false}]\"a\")");
- parseAndConfirm("(description contains ([{connectivity: {id: 2, weight: 0.42}, id: 1}]\"a\") AND description contains ([{id: 2}]\"b\"))");
+ parseAndConfirm("description contains ({andSegmenting: true}\"a\")");
+ parseAndConfirm("description contains ({weight: 37}\"a\")");
+ parseAndConfirm("description contains ({id: 37}\"a\")");
+ parseAndConfirm("description contains ({filter: true}\"a\")");
+ parseAndConfirm("description contains ({ranked: false}\"a\")");
+ parseAndConfirm("description contains ({significance: 37.0}\"a\")");
+ parseAndConfirm("description contains ({implicitTransforms: false}\"a\")");
+ parseAndConfirm("(description contains ({connectivity: {id: 2, weight: 0.42}, id: 1}\"a\") AND description contains ({id: 2}\"b\"))");
}
@Test
public void testPrefix() {
- parseAndConfirm("description contains ([{prefix: true}]\"a\")");
+ parseAndConfirm("description contains ({prefix: true}\"a\")");
}
@Test
public void testSuffix() {
- parseAndConfirm("description contains ([{suffix: true}]\"a\")");
+ parseAndConfirm("description contains ({suffix: true}\"a\")");
}
@Test
public void testSubstring() {
- parseAndConfirm("description contains ([{substring: true}]\"a\")");
+ parseAndConfirm("description contains ({substring: true}\"a\")");
}
@Test
public void testExoticItemTypes() {
Item item = MarkerWordItem.createEndOfHost();
String q = VespaSerializer.serialize(item);
- assertEquals("default contains ([{implicitTransforms: false}]\"$\")", q);
+ assertEquals("default contains ({implicitTransforms: false}\"$\")", q);
}
@Test
@@ -354,7 +354,7 @@ public class VespaSerializerTestCase {
item.addItem(new WordItem("c"));
item.addItem(new WordItem("d"));
String q = VespaSerializer.serialize(item);
- assertEquals("(default contains ([{implicitTransforms: false}]\"a\")) AND !(default contains ([{implicitTransforms: false}]\"b\") OR default contains ([{implicitTransforms: false}]\"c\") OR default contains ([{implicitTransforms: false}]\"d\"))", q);
+ assertEquals("(default contains ({implicitTransforms: false}\"a\")) AND !(default contains ({implicitTransforms: false}\"b\") OR default contains ({implicitTransforms: false}\"c\") OR default contains ({implicitTransforms: false}\"d\"))", q);
}
@Test
@@ -403,23 +403,23 @@ public class VespaSerializerTestCase {
@Test
public void testAnnotatedLong() {
- parseAndConfirm("title >= ([{id: 2014}](-549755813888L))");
+ parseAndConfirm("title >= ({id: 2014}(-549755813888L))");
}
@Test
public void testHitLimit() {
- parseAndConfirm("title <= ([{hitLimit: 89}](-500))");
- parseAndConfirm("title <= ([{hitLimit: 89}](-500))");
- parseAndConfirm("[{hitLimit: 89}]range(title, 1, 500)");
+ parseAndConfirm("title <= ({hitLimit: 89}(-500))");
+ parseAndConfirm("title <= ({hitLimit: 89}(-500))");
+ parseAndConfirm("{hitLimit: 89}range(title, 1, 500)");
}
@Test
public void testOpenIntervals() {
parseAndConfirm("range(title, 0.0, 500.0)");
- parseAndConfirm("([{bounds: \"open\"}]range(title, 0.0, 500.0))");
- parseAndConfirm("([{bounds: \"leftOpen\"}]range(title, 0.0, 500.0))");
- parseAndConfirm("([{bounds: \"rightOpen\"}]range(title, 0.0, 500.0))");
- parseAndConfirm("([{id: 500, bounds: \"rightOpen\"}]range(title, 0.0, 500.0))");
+ parseAndConfirm("({bounds: \"open\"}range(title, 0.0, 500.0))");
+ parseAndConfirm("({bounds: \"leftOpen\"}range(title, 0.0, 500.0))");
+ parseAndConfirm("({bounds: \"rightOpen\"}range(title, 0.0, 500.0))");
+ parseAndConfirm("({id: 500, bounds: \"rightOpen\"}range(title, 0.0, 500.0))");
}
@Test
@@ -429,14 +429,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}))"
+ ")");
}
@@ -448,7 +448,7 @@ public class VespaSerializerTestCase {
@Test
public void testFuzzyAnnotations() {
- parseAndConfirm("foo contains ([{maxEditDistance:3,prefixLength:5}]fuzzy(\"a\"))");
+ parseAndConfirm("foo contains ({maxEditDistance:3,prefixLength:5}fuzzy(\"a\"))");
}
}
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 ee71a0efa64..03472408783 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
@@ -146,13 +146,13 @@ public class YqlParserTestCase {
@Test
public void testComplexExpression() {
- String queryTreeYql = "rank((((filter contains ({origin: {original: \"filter:VideoAdsCappingTestCPM\", \"offset\": 7, length: 22}, normalizeCase: false, id: 1}\"videoadscappingtestcpm\") AND hasRankRestriction contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 2}]\"0\") AND ((objective contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 3}]\"install_app\") AND availableExtendedFields contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 4}]\"cpiparams\")) OR (availableExtendedFields contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 5}]\"appinstallinfo\") AND availableExtendedFields contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 6}]\"appmetroplexinfo\")) OR (dummyField contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 7}]\"default\")) AND !(objective contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 8}]\"install_app\"))) AND advt_age = ([{\"id\": 9}]2147483647) AND advt_gender contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 10}]\"all\") AND advt_all_segments = ([{\"id\": 11}]2147483647) AND advt_keywords contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 12}]\"all\") AND advMobilePlatform = ([{\"id\": 13}]2147483647) AND advMobileDeviceType = ([{\"id\": 14}]2147483647) AND advMobileCon = ([{\"id\": 15}]2147483647) AND advMobileOSVersions = ([{\"id\": 16}]2147483647) AND advCarrier = ([{\"id\": 17}]2147483647) AND ([{\"id\": 18}]weightedSet(advt_supply, {\"all\": 1, \"pub223\": 1, \"sec223\": 1, \"site223\": 1})) AND (advt_day_parting contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 19, \"weight\": 1}]\"adv_tuesday\") OR advt_day_parting contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 20, \"weight\": 1}]\"adv_tuesday_17\") OR advt_day_parting contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 21, \"weight\": 1}]\"adv_tuesday_17_forty_five\") OR advt_day_parting contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 22}]\"all\")) AND isAppReengagementAd = ([{\"id\": 23}]0) AND dummyField contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 24}]\"default\") AND serveWithPromotionOnly = ([{\"id\": 26}]0) AND budgetAdvertiserThrottleRateFilter = ([{\"id\": 27}]0) AND budgetResellerThrottleRateFilter = ([{\"id\": 28}]0) AND (isMystiqueRequired = ([{\"id\": 29}]0) OR (isMystiqueRequired = ([{\"id\": 30}]1) AND useBcFactorFilter = ([{\"id\": 31}]1))) AND (((budgetCampaignThrottleRateBits = ([{\"id\": 32}]55) AND dummyField contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 33}]\"default\"))) AND !(useBcFactorFilter = ([{\"id\": 34}]1)) OR ((useBcFactorFilter = ([{\"id\": 35}]1) AND dummyField contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 36}]\"default\") AND (bcFactorTiers = ([{\"id\": 38}]127) OR bcFactorTiers = ([{\"id\": 39}]0)) AND ((firstPriceEnforced = ([{\"id\": 40}]0) AND (secondPriceEnforced = ([{\"id\": 41}]1) OR isPrivateDeal = ([{\"id\": 42}]0) OR (dummyField contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 43}]\"default\")) AND !(bcActiveTier = ([{\"id\": 44}]0)))) OR mystiqueCampaignThrottleRateBits = ([{\"id\": 45}]18)))) AND !(isOutOfDailyBudget = ([{\"id\": 37}]1))) AND testCreative = ([{\"id\": 46}]0) AND advt_geo = ([{\"id\": 47}]2147483647) AND ((adType contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 48}]\"strm_video\") AND isPortraitVideo = ([{\"id\": 49}]0)) OR adType contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 50}]\"stream_ad\")) AND ((isCPM = ([{\"id\": 51}]0) AND isOCPC = ([{\"id\": 52}]0) AND isECPC = ([{\"id\": 53}]0) AND ((priceType contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 54}]\"cpcv\") AND bid >= ([{\"id\": 55}]0.005)) OR (priceType contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 56}]\"cpv\") AND bid >= ([{\"id\": 57}]0.01)) OR (priceType contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 58}]\"cpc\") AND bid >= ([{\"id\": 59}]0.05)) OR (objective contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 60}]\"promote_content\") AND bid >= ([{\"id\": 61}]0.01)) OR hasFloorPriceUsd = ([{\"id\": 62}]1))) OR isECPC = ([{\"id\": 63}]1) OR (isCPM = ([{\"id\": 64}]1) AND isOCPM = ([{\"id\": 65}]0) AND (([{\"id\": 66}]range(bid, 0.25, Infinity)) OR hasFloorPriceUsd = ([{\"id\": 67}]1)))) AND start_date <= ([{\"id\": 68}]1572976776299L) AND end_date >= ([{\"id\": 69}]1572976776299L))) AND !(isHoldoutAd = ([{\"id\": 25}]1))) AND !((disclaimerExtensionsTypes contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 70}]\"pharma\") OR ([{\"id\": 71}]weightedSet(exclusion_advt_supply, {\"extsite223\": 1, \"pub223\": 1, \"sec223\": 1, \"site223\": 1})) OR isPersonalized = ([{\"id\": 72}]1) OR blocked_section_ids contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 73}]\"223\") OR blocked_publisher_ids contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 74}]\"223\") OR blocked_site_ids contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 75}]\"223\"))), [{\"id\": 76, \"label\": \"ad_ocpc_max_cpc\"}]dotProduct(ocpc_max_cpc, {\"0\": 1}), [{\"id\": 77, \"label\": \"ad_ocpc_min_cpc\"}]dotProduct(ocpc_min_cpc, {\"0\": 1}), [{\"id\": 78, \"label\": \"ad_ocpc_max_alpha\"}]dotProduct(ocpc_max_alpha, {\"0\": 1}), [{\"id\": 79, \"label\": \"ad_ocpc_min_alpha\"}]dotProduct(ocpc_min_alpha, {\"0\": 1}), [{\"id\": 80, \"label\": \"ad_ocpc_alpha_0\"}]dotProduct(ocpc_alpha_0, {\"0\": 1}), [{\"id\": 81, \"label\": \"ad_ocpc_alpha_1\"}]dotProduct(ocpc_alpha_1, {\"0\": 1}), (bidAdjustmentDayParting contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 82, \"weight\": 1}]\"adv_tuesday\") OR bidAdjustmentDayParting contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 83, \"weight\": 1}]\"adv_tuesday_17\") OR bidAdjustmentDayParting contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 84, \"weight\": 1}]\"adv_tuesday_17_forty_five\") OR bidAdjustmentDayPartingForCostCap contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 85, \"weight\": 1}]\"adv_tuesday\") OR bidAdjustmentDayPartingForCostCap contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 86, \"weight\": 1}]\"adv_tuesday_17\") OR bidAdjustmentDayPartingForCostCap contains ([{\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 87, \"weight\": 1}]\"adv_tuesday_17_forty_five\")), bidAdjustmentForCpi = ([{\"id\": 88, \"weight\": 1}]223), [{\"id\": 89, \"label\": \"boostingForBackfill\"}]dotProduct(boostingForBackfill, {\"priority\": 1000})) limit 0 timeout 3980 | all(group(adTypeForGrouping) each(group(advertiser_id) max(11) output(count() as(groupingCounter)) each(max(1) each(output(summary())))))";
+ String queryTreeYql = "rank((((filter contains ({origin: {original: \"filter:VideoAdsCappingTestCPM\", \"offset\": 7, length: 22}, normalizeCase: false, id: 1}\"videoadscappingtestcpm\") AND hasRankRestriction contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 2}\"0\") AND ((objective contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 3}\"install_app\") AND availableExtendedFields contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 4}\"cpiparams\")) OR (availableExtendedFields contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 5}\"appinstallinfo\") AND availableExtendedFields contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 6}\"appmetroplexinfo\")) OR (dummyField contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 7}\"default\")) AND !(objective contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 8}\"install_app\"))) AND advt_age = ({\"id\": 9}2147483647) AND advt_gender contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 10}\"all\") AND advt_all_segments = ({\"id\": 11}2147483647) AND advt_keywords contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 12}\"all\") AND advMobilePlatform = ({\"id\": 13}2147483647) AND advMobileDeviceType = ({\"id\": 14}2147483647) AND advMobileCon = ({\"id\": 15}2147483647) AND advMobileOSVersions = ({\"id\": 16}2147483647) AND advCarrier = ({\"id\": 17}2147483647) AND ({\"id\": 18}weightedSet(advt_supply, {\"all\": 1, \"pub223\": 1, \"sec223\": 1, \"site223\": 1})) AND (advt_day_parting contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 19, \"weight\": 1}\"adv_tuesday\") OR advt_day_parting contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 20, \"weight\": 1}\"adv_tuesday_17\") OR advt_day_parting contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 21, \"weight\": 1}\"adv_tuesday_17_forty_five\") OR advt_day_parting contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 22}\"all\")) AND isAppReengagementAd = ({\"id\": 23}0) AND dummyField contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 24}\"default\") AND serveWithPromotionOnly = ({\"id\": 26}0) AND budgetAdvertiserThrottleRateFilter = ({\"id\": 27}0) AND budgetResellerThrottleRateFilter = ({\"id\": 28}0) AND (isMystiqueRequired = ({\"id\": 29}0) OR (isMystiqueRequired = ({\"id\": 30}1) AND useBcFactorFilter = ({\"id\": 31}1))) AND (((budgetCampaignThrottleRateBits = ({\"id\": 32}55) AND dummyField contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 33}\"default\"))) AND !(useBcFactorFilter = ({\"id\": 34}1)) OR ((useBcFactorFilter = ({\"id\": 35}1) AND dummyField contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 36}\"default\") AND (bcFactorTiers = ({\"id\": 38}127) OR bcFactorTiers = ({\"id\": 39}0)) AND ((firstPriceEnforced = ({\"id\": 40}0) AND (secondPriceEnforced = ({\"id\": 41}1) OR isPrivateDeal = ({\"id\": 42}0) OR (dummyField contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 43}\"default\")) AND !(bcActiveTier = ({\"id\": 44}0)))) OR mystiqueCampaignThrottleRateBits = ({\"id\": 45}18)))) AND !(isOutOfDailyBudget = ({\"id\": 37}1))) AND testCreative = ({\"id\": 46}0) AND advt_geo = ({\"id\": 47}2147483647) AND ((adType contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 48}\"strm_video\") AND isPortraitVideo = ({\"id\": 49}0)) OR adType contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 50}\"stream_ad\")) AND ((isCPM = ({\"id\": 51}0) AND isOCPC = ({\"id\": 52}0) AND isECPC = ({\"id\": 53}0) AND ((priceType contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 54}\"cpcv\") AND bid >= ({\"id\": 55}0.005)) OR (priceType contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 56}\"cpv\") AND bid >= ({\"id\": 57}0.01)) OR (priceType contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 58}\"cpc\") AND bid >= ({\"id\": 59}0.05)) OR (objective contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 60}\"promote_content\") AND bid >= ({\"id\": 61}0.01)) OR hasFloorPriceUsd = ({\"id\": 62}1))) OR isECPC = ({\"id\": 63}1) OR (isCPM = ({\"id\": 64}1) AND isOCPM = ({\"id\": 65}0) AND (({\"id\": 66}range(bid, 0.25, Infinity)) OR hasFloorPriceUsd = ({\"id\": 67}1)))) AND start_date <= ({\"id\": 68}1572976776299L) AND end_date >= ({\"id\": 69}1572976776299L))) AND !(isHoldoutAd = ({\"id\": 25}1))) AND !((disclaimerExtensionsTypes contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 70}\"pharma\") OR ({\"id\": 71}weightedSet(exclusion_advt_supply, {\"extsite223\": 1, \"pub223\": 1, \"sec223\": 1, \"site223\": 1})) OR isPersonalized = ({\"id\": 72}1) OR blocked_section_ids contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 73}\"223\") OR blocked_publisher_ids contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 74}\"223\") OR blocked_site_ids contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 75}\"223\"))), {\"id\": 76, \"label\": \"ad_ocpc_max_cpc\"}dotProduct(ocpc_max_cpc, {\"0\": 1}), {\"id\": 77, \"label\": \"ad_ocpc_min_cpc\"}dotProduct(ocpc_min_cpc, {\"0\": 1}), {\"id\": 78, \"label\": \"ad_ocpc_max_alpha\"}dotProduct(ocpc_max_alpha, {\"0\": 1}), {\"id\": 79, \"label\": \"ad_ocpc_min_alpha\"}dotProduct(ocpc_min_alpha, {\"0\": 1}), {\"id\": 80, \"label\": \"ad_ocpc_alpha_0\"}dotProduct(ocpc_alpha_0, {\"0\": 1}), {\"id\": 81, \"label\": \"ad_ocpc_alpha_1\"}dotProduct(ocpc_alpha_1, {\"0\": 1}), (bidAdjustmentDayParting contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 82, \"weight\": 1}\"adv_tuesday\") OR bidAdjustmentDayParting contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 83, \"weight\": 1}\"adv_tuesday_17\") OR bidAdjustmentDayParting contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 84, \"weight\": 1}\"adv_tuesday_17_forty_five\") OR bidAdjustmentDayPartingForCostCap contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 85, \"weight\": 1}\"adv_tuesday\") OR bidAdjustmentDayPartingForCostCap contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 86, \"weight\": 1}\"adv_tuesday_17\") OR bidAdjustmentDayPartingForCostCap contains ({\"normalizeCase\": false, \"implicitTransforms\": false, \"id\": 87, \"weight\": 1}\"adv_tuesday_17_forty_five\")), bidAdjustmentForCpi = ({\"id\": 88, \"weight\": 1}223), {\"id\": 89, \"label\": \"boostingForBackfill\"}dotProduct(boostingForBackfill, {\"priority\": 1000})) limit 0 timeout 3980 | all(group(adTypeForGrouping) each(group(advertiser_id) max(11) output(count() as(groupingCounter)) each(max(1) each(output(summary())))))";
QueryTree parsed = assertParse("select * from sources * where " + queryTreeYql + ";",
"RANK (+(+(AND filter:VideoAdsCappingTestCPM hasRankRestriction:0 (OR (AND objective:install_app availableExtendedFields:cpiparams) (AND availableExtendedFields:appinstallinfo availableExtendedFields:appmetroplexinfo) (+dummyField:default -objective:install_app)) advt_age:2147483647 advt_gender:all advt_all_segments:2147483647 advt_keywords:all advMobilePlatform:2147483647 advMobileDeviceType:2147483647 advMobileCon:2147483647 advMobileOSVersions:2147483647 advCarrier:2147483647 WEIGHTEDSET advt_supply{[1]:\"site223\",[1]:\"pub223\",[1]:\"all\",[1]:\"sec223\"} (OR advt_day_parting:adv_tuesday!1 advt_day_parting:adv_tuesday_17!1 advt_day_parting:adv_tuesday_17_forty_five!1 advt_day_parting:all) isAppReengagementAd:0 dummyField:default serveWithPromotionOnly:0 budgetAdvertiserThrottleRateFilter:0 budgetResellerThrottleRateFilter:0 (OR isMystiqueRequired:0 (AND isMystiqueRequired:1 useBcFactorFilter:1)) (OR (+(AND budgetCampaignThrottleRateBits:55 dummyField:default) -useBcFactorFilter:1) (+(AND useBcFactorFilter:1 dummyField:default (OR bcFactorTiers:127 bcFactorTiers:0) (OR (AND firstPriceEnforced:0 (OR secondPriceEnforced:1 isPrivateDeal:0 (+dummyField:default -bcActiveTier:0))) mystiqueCampaignThrottleRateBits:18)) -isOutOfDailyBudget:1)) testCreative:0 advt_geo:2147483647 (OR (AND adType:strm_video isPortraitVideo:0) adType:stream_ad) (OR (AND isCPM:0 isOCPC:0 isECPC:0 (OR (AND priceType:cpcv bid:[0.005;]) (AND priceType:cpv bid:[0.01;]) (AND priceType:cpc bid:[0.05;]) (AND objective:promote_content bid:[0.01;]) hasFloorPriceUsd:1)) isECPC:1 (AND isCPM:1 isOCPM:0 (OR bid:[0.25;] hasFloorPriceUsd:1))) start_date:[;1572976776299] end_date:[1572976776299;]) -isHoldoutAd:1) -(OR disclaimerExtensionsTypes:pharma WEIGHTEDSET exclusion_advt_supply{[1]:\"extsite223\",[1]:\"site223\",[1]:\"pub223\",[1]:\"sec223\"} isPersonalized:1 blocked_section_ids:223 blocked_publisher_ids:223 blocked_site_ids:223)) DOTPRODUCT ocpc_max_cpc{[1]:\"0\"} DOTPRODUCT ocpc_min_cpc{[1]:\"0\"} DOTPRODUCT ocpc_max_alpha{[1]:\"0\"} DOTPRODUCT ocpc_min_alpha{[1]:\"0\"} DOTPRODUCT ocpc_alpha_0{[1]:\"0\"} DOTPRODUCT ocpc_alpha_1{[1]:\"0\"} (OR bidAdjustmentDayParting:adv_tuesday!1 bidAdjustmentDayParting:adv_tuesday_17!1 bidAdjustmentDayParting:adv_tuesday_17_forty_five!1 bidAdjustmentDayPartingForCostCap:adv_tuesday!1 bidAdjustmentDayPartingForCostCap:adv_tuesday_17!1 bidAdjustmentDayPartingForCostCap:adv_tuesday_17_forty_five!1) bidAdjustmentForCpi:223!1 DOTPRODUCT boostingForBackfill{[1000]:\"priority\"}");
String serializedQueryTreeYql = VespaSerializer.serialize(parsed);
// Note: All the details here are not verified
- assertEquals("rank((((filter contains ([{normalizeCase: false, id: 1}]\"VideoAdsCappingTestCPM\") AND hasRankRestriction contains ([{normalizeCase: false, implicitTransforms: false, id: 2}]\"0\") AND ((objective contains ([{normalizeCase: false, implicitTransforms: false, id: 3}]\"install_app\") AND availableExtendedFields contains ([{normalizeCase: false, implicitTransforms: false, id: 4}]\"cpiparams\")) OR (availableExtendedFields contains ([{normalizeCase: false, implicitTransforms: false, id: 5}]\"appinstallinfo\") AND availableExtendedFields contains ([{normalizeCase: false, implicitTransforms: false, id: 6}]\"appmetroplexinfo\")) OR (dummyField contains ([{normalizeCase: false, implicitTransforms: false, id: 7}]\"default\")) AND !(objective contains ([{normalizeCase: false, implicitTransforms: false, id: 8}]\"install_app\"))) AND advt_age = ([{id: 9}]2147483647) AND advt_gender contains ([{normalizeCase: false, implicitTransforms: false, id: 10}]\"all\") AND advt_all_segments = ([{id: 11}]2147483647) AND advt_keywords contains ([{normalizeCase: false, implicitTransforms: false, id: 12}]\"all\") AND advMobilePlatform = ([{id: 13}]2147483647) AND advMobileDeviceType = ([{id: 14}]2147483647) AND advMobileCon = ([{id: 15}]2147483647) AND advMobileOSVersions = ([{id: 16}]2147483647) AND advCarrier = ([{id: 17}]2147483647) AND ([{id: 18}]weightedSet(advt_supply, {\"all\": 1, \"pub223\": 1, \"sec223\": 1, \"site223\": 1})) AND (advt_day_parting contains ([{normalizeCase: false, implicitTransforms: false, id: 19, weight: 1}]\"adv_tuesday\") OR advt_day_parting contains ([{normalizeCase: false, implicitTransforms: false, id: 20, weight: 1}]\"adv_tuesday_17\") OR advt_day_parting contains ([{normalizeCase: false, implicitTransforms: false, id: 21, weight: 1}]\"adv_tuesday_17_forty_five\") OR advt_day_parting contains ([{normalizeCase: false, implicitTransforms: false, id: 22}]\"all\")) AND isAppReengagementAd = ([{id: 23}]0) AND dummyField contains ([{normalizeCase: false, implicitTransforms: false, id: 24}]\"default\") AND serveWithPromotionOnly = ([{id: 26}]0) AND budgetAdvertiserThrottleRateFilter = ([{id: 27}]0) AND budgetResellerThrottleRateFilter = ([{id: 28}]0) AND (isMystiqueRequired = ([{id: 29}]0) OR (isMystiqueRequired = ([{id: 30}]1) AND useBcFactorFilter = ([{id: 31}]1))) AND (((budgetCampaignThrottleRateBits = ([{id: 32}]55) AND dummyField contains ([{normalizeCase: false, implicitTransforms: false, id: 33}]\"default\"))) AND !(useBcFactorFilter = ([{id: 34}]1)) OR ((useBcFactorFilter = ([{id: 35}]1) AND dummyField contains ([{normalizeCase: false, implicitTransforms: false, id: 36}]\"default\") AND (bcFactorTiers = ([{id: 38}]127) OR bcFactorTiers = ([{id: 39}]0)) AND ((firstPriceEnforced = ([{id: 40}]0) AND (secondPriceEnforced = ([{id: 41}]1) OR isPrivateDeal = ([{id: 42}]0) OR (dummyField contains ([{normalizeCase: false, implicitTransforms: false, id: 43}]\"default\")) AND !(bcActiveTier = ([{id: 44}]0)))) OR mystiqueCampaignThrottleRateBits = ([{id: 45}]18)))) AND !(isOutOfDailyBudget = ([{id: 37}]1))) AND testCreative = ([{id: 46}]0) AND advt_geo = ([{id: 47}]2147483647) AND ((adType contains ([{normalizeCase: false, implicitTransforms: false, id: 48}]\"strm_video\") AND isPortraitVideo = ([{id: 49}]0)) OR adType contains ([{normalizeCase: false, implicitTransforms: false, id: 50}]\"stream_ad\")) AND ((isCPM = ([{id: 51}]0) AND isOCPC = ([{id: 52}]0) AND isECPC = ([{id: 53}]0) AND ((priceType contains ([{normalizeCase: false, implicitTransforms: false, id: 54}]\"cpcv\") AND bid >= ([{id: 55}]0.005)) OR (priceType contains ([{normalizeCase: false, implicitTransforms: false, id: 56}]\"cpv\") AND bid >= ([{id: 57}]0.01)) OR (priceType contains ([{normalizeCase: false, implicitTransforms: false, id: 58}]\"cpc\") AND bid >= ([{id: 59}]0.05)) OR (objective contains ([{normalizeCase: false, implicitTransforms: false, id: 60}]\"promote_content\") AND bid >= ([{id: 61}]0.01)) OR hasFloorPriceUsd = ([{id: 62}]1))) OR isECPC = ([{id: 63}]1) OR (isCPM = ([{id: 64}]1) AND isOCPM = ([{id: 65}]0) AND ([{id: 66}]range(bid, 0.25, Infinity) OR hasFloorPriceUsd = ([{id: 67}]1)))) AND start_date <= ([{id: 68}]1572976776299L) AND end_date >= ([{id: 69}]1572976776299L))) AND !(isHoldoutAd = ([{id: 25}]1))) AND !((disclaimerExtensionsTypes contains ([{normalizeCase: false, implicitTransforms: false, id: 70}]\"pharma\") OR ([{id: 71}]weightedSet(exclusion_advt_supply, {\"extsite223\": 1, \"pub223\": 1, \"sec223\": 1, \"site223\": 1})) OR isPersonalized = ([{id: 72}]1) OR blocked_section_ids contains ([{normalizeCase: false, implicitTransforms: false, id: 73}]\"223\") OR blocked_publisher_ids contains ([{normalizeCase: false, implicitTransforms: false, id: 74}]\"223\") OR blocked_site_ids contains ([{normalizeCase: false, implicitTransforms: false, id: 75}]\"223\"))), ([{id: 76, label: \"ad_ocpc_max_cpc\"}]dotProduct(ocpc_max_cpc, {\"0\": 1})), ([{id: 77, label: \"ad_ocpc_min_cpc\"}]dotProduct(ocpc_min_cpc, {\"0\": 1})), ([{id: 78, label: \"ad_ocpc_max_alpha\"}]dotProduct(ocpc_max_alpha, {\"0\": 1})), ([{id: 79, label: \"ad_ocpc_min_alpha\"}]dotProduct(ocpc_min_alpha, {\"0\": 1})), ([{id: 80, label: \"ad_ocpc_alpha_0\"}]dotProduct(ocpc_alpha_0, {\"0\": 1})), ([{id: 81, label: \"ad_ocpc_alpha_1\"}]dotProduct(ocpc_alpha_1, {\"0\": 1})), (bidAdjustmentDayParting contains ([{normalizeCase: false, implicitTransforms: false, id: 82, weight: 1}]\"adv_tuesday\") OR bidAdjustmentDayParting contains ([{normalizeCase: false, implicitTransforms: false, id: 83, weight: 1}]\"adv_tuesday_17\") OR bidAdjustmentDayParting contains ([{normalizeCase: false, implicitTransforms: false, id: 84, weight: 1}]\"adv_tuesday_17_forty_five\") OR bidAdjustmentDayPartingForCostCap contains ([{normalizeCase: false, implicitTransforms: false, id: 85, weight: 1}]\"adv_tuesday\") OR bidAdjustmentDayPartingForCostCap contains ([{normalizeCase: false, implicitTransforms: false, id: 86, weight: 1}]\"adv_tuesday_17\") OR bidAdjustmentDayPartingForCostCap contains ([{normalizeCase: false, implicitTransforms: false, id: 87, weight: 1}]\"adv_tuesday_17_forty_five\")), bidAdjustmentForCpi = ([{id: 88, weight: 1}]223), ([{id: 89, label: \"boostingForBackfill\"}]dotProduct(boostingForBackfill, {\"priority\": 1000})))",
+ assertEquals("rank((((filter contains ({normalizeCase: false, id: 1}\"VideoAdsCappingTestCPM\") AND hasRankRestriction contains ({normalizeCase: false, implicitTransforms: false, id: 2}\"0\") AND ((objective contains ({normalizeCase: false, implicitTransforms: false, id: 3}\"install_app\") AND availableExtendedFields contains ({normalizeCase: false, implicitTransforms: false, id: 4}\"cpiparams\")) OR (availableExtendedFields contains ({normalizeCase: false, implicitTransforms: false, id: 5}\"appinstallinfo\") AND availableExtendedFields contains ({normalizeCase: false, implicitTransforms: false, id: 6}\"appmetroplexinfo\")) OR (dummyField contains ({normalizeCase: false, implicitTransforms: false, id: 7}\"default\")) AND !(objective contains ({normalizeCase: false, implicitTransforms: false, id: 8}\"install_app\"))) AND advt_age = ({id: 9}2147483647) AND advt_gender contains ({normalizeCase: false, implicitTransforms: false, id: 10}\"all\") AND advt_all_segments = ({id: 11}2147483647) AND advt_keywords contains ({normalizeCase: false, implicitTransforms: false, id: 12}\"all\") AND advMobilePlatform = ({id: 13}2147483647) AND advMobileDeviceType = ({id: 14}2147483647) AND advMobileCon = ({id: 15}2147483647) AND advMobileOSVersions = ({id: 16}2147483647) AND advCarrier = ({id: 17}2147483647) AND ({id: 18}weightedSet(advt_supply, {\"all\": 1, \"pub223\": 1, \"sec223\": 1, \"site223\": 1})) AND (advt_day_parting contains ({normalizeCase: false, implicitTransforms: false, id: 19, weight: 1}\"adv_tuesday\") OR advt_day_parting contains ({normalizeCase: false, implicitTransforms: false, id: 20, weight: 1}\"adv_tuesday_17\") OR advt_day_parting contains ({normalizeCase: false, implicitTransforms: false, id: 21, weight: 1}\"adv_tuesday_17_forty_five\") OR advt_day_parting contains ({normalizeCase: false, implicitTransforms: false, id: 22}\"all\")) AND isAppReengagementAd = ({id: 23}0) AND dummyField contains ({normalizeCase: false, implicitTransforms: false, id: 24}\"default\") AND serveWithPromotionOnly = ({id: 26}0) AND budgetAdvertiserThrottleRateFilter = ({id: 27}0) AND budgetResellerThrottleRateFilter = ({id: 28}0) AND (isMystiqueRequired = ({id: 29}0) OR (isMystiqueRequired = ({id: 30}1) AND useBcFactorFilter = ({id: 31}1))) AND (((budgetCampaignThrottleRateBits = ({id: 32}55) AND dummyField contains ({normalizeCase: false, implicitTransforms: false, id: 33}\"default\"))) AND !(useBcFactorFilter = ({id: 34}1)) OR ((useBcFactorFilter = ({id: 35}1) AND dummyField contains ({normalizeCase: false, implicitTransforms: false, id: 36}\"default\") AND (bcFactorTiers = ({id: 38}127) OR bcFactorTiers = ({id: 39}0)) AND ((firstPriceEnforced = ({id: 40}0) AND (secondPriceEnforced = ({id: 41}1) OR isPrivateDeal = ({id: 42}0) OR (dummyField contains ({normalizeCase: false, implicitTransforms: false, id: 43}\"default\")) AND !(bcActiveTier = ({id: 44}0)))) OR mystiqueCampaignThrottleRateBits = ({id: 45}18)))) AND !(isOutOfDailyBudget = ({id: 37}1))) AND testCreative = ({id: 46}0) AND advt_geo = ({id: 47}2147483647) AND ((adType contains ({normalizeCase: false, implicitTransforms: false, id: 48}\"strm_video\") AND isPortraitVideo = ({id: 49}0)) OR adType contains ({normalizeCase: false, implicitTransforms: false, id: 50}\"stream_ad\")) AND ((isCPM = ({id: 51}0) AND isOCPC = ({id: 52}0) AND isECPC = ({id: 53}0) AND ((priceType contains ({normalizeCase: false, implicitTransforms: false, id: 54}\"cpcv\") AND bid >= ({id: 55}0.005)) OR (priceType contains ({normalizeCase: false, implicitTransforms: false, id: 56}\"cpv\") AND bid >= ({id: 57}0.01)) OR (priceType contains ({normalizeCase: false, implicitTransforms: false, id: 58}\"cpc\") AND bid >= ({id: 59}0.05)) OR (objective contains ({normalizeCase: false, implicitTransforms: false, id: 60}\"promote_content\") AND bid >= ({id: 61}0.01)) OR hasFloorPriceUsd = ({id: 62}1))) OR isECPC = ({id: 63}1) OR (isCPM = ({id: 64}1) AND isOCPM = ({id: 65}0) AND ({id: 66}range(bid, 0.25, Infinity) OR hasFloorPriceUsd = ({id: 67}1)))) AND start_date <= ({id: 68}1572976776299L) AND end_date >= ({id: 69}1572976776299L))) AND !(isHoldoutAd = ({id: 25}1))) AND !((disclaimerExtensionsTypes contains ({normalizeCase: false, implicitTransforms: false, id: 70}\"pharma\") OR ({id: 71}weightedSet(exclusion_advt_supply, {\"extsite223\": 1, \"pub223\": 1, \"sec223\": 1, \"site223\": 1})) OR isPersonalized = ({id: 72}1) OR blocked_section_ids contains ({normalizeCase: false, implicitTransforms: false, id: 73}\"223\") OR blocked_publisher_ids contains ({normalizeCase: false, implicitTransforms: false, id: 74}\"223\") OR blocked_site_ids contains ({normalizeCase: false, implicitTransforms: false, id: 75}\"223\"))), ({id: 76, label: \"ad_ocpc_max_cpc\"}dotProduct(ocpc_max_cpc, {\"0\": 1})), ({id: 77, label: \"ad_ocpc_min_cpc\"}dotProduct(ocpc_min_cpc, {\"0\": 1})), ({id: 78, label: \"ad_ocpc_max_alpha\"}dotProduct(ocpc_max_alpha, {\"0\": 1})), ({id: 79, label: \"ad_ocpc_min_alpha\"}dotProduct(ocpc_min_alpha, {\"0\": 1})), ({id: 80, label: \"ad_ocpc_alpha_0\"}dotProduct(ocpc_alpha_0, {\"0\": 1})), ({id: 81, label: \"ad_ocpc_alpha_1\"}dotProduct(ocpc_alpha_1, {\"0\": 1})), (bidAdjustmentDayParting contains ({normalizeCase: false, implicitTransforms: false, id: 82, weight: 1}\"adv_tuesday\") OR bidAdjustmentDayParting contains ({normalizeCase: false, implicitTransforms: false, id: 83, weight: 1}\"adv_tuesday_17\") OR bidAdjustmentDayParting contains ({normalizeCase: false, implicitTransforms: false, id: 84, weight: 1}\"adv_tuesday_17_forty_five\") OR bidAdjustmentDayPartingForCostCap contains ({normalizeCase: false, implicitTransforms: false, id: 85, weight: 1}\"adv_tuesday\") OR bidAdjustmentDayPartingForCostCap contains ({normalizeCase: false, implicitTransforms: false, id: 86, weight: 1}\"adv_tuesday_17\") OR bidAdjustmentDayPartingForCostCap contains ({normalizeCase: false, implicitTransforms: false, id: 87, weight: 1}\"adv_tuesday_17_forty_five\")), bidAdjustmentForCpi = ({id: 88, weight: 1}223), ({id: 89, label: \"boostingForBackfill\"}dotProduct(boostingForBackfill, {\"priority\": 1000})))",
serializedQueryTreeYql);
}
@@ -283,13 +283,13 @@ public class YqlParserTestCase {
@Test
public void testAnnotatedGreaterThanOrEqual() {
- assertParse("select foo from bar where price >= ([{filter: true}]500)", "|price:[500;]");
+ assertParse("select foo from bar where price >= ({filter: true}500)", "|price:[500;]");
assertParse("select foo from bar where ({filter: true}(-500)) >= price", "|price:[;-500]");
}
@Test
public void testAnnotatedEquality() {
- assertParse("select foo from bar where price = ([{filter: true}](-500))", "|price:-500");
+ assertParse("select foo from bar where price = ({filter: true}(-500))", "|price:-500");
assertParse("select foo from bar where ({filter: true}500) = price", "|price:500");
}
@@ -846,7 +846,7 @@ public class YqlParserTestCase {
public void testAnnotatedOrdering() {
assertParse(
"select foo from bar where title contains \"madonna\""
- + " order by [{function: \"uca\", locale: \"en_US\", strength: \"IDENTICAL\"}]other desc"
+ + " order by {function: \"uca\", locale: \"en_US\", strength: \"IDENTICAL\"}other desc"
+ " limit 600" + " timeout 3", "title:madonna");
FieldOrder fieldOrder = parser.getSorting().fieldOrders().get(0);
assertEquals("other", fieldOrder.getFieldName());
@@ -862,8 +862,8 @@ public class YqlParserTestCase {
public void testMultipleAnnotatedOrdering() {
assertParse(
"select foo from bar where title contains \"madonna\""
- + " order by [{\"function\": \"uca\", \"locale\": \"en_US\", \"strength\": \"IDENTICAL\"}]other desc,"
- + " [{\"function\": \"lowercase\"}]something asc"
+ + " order by {\"function\": \"uca\", \"locale\": \"en_US\", \"strength\": \"IDENTICAL\"}other desc,"
+ + " {\"function\": \"lowercase\"}something asc"
+ " limit 600" + " timeout 3", "title:madonna");
{
FieldOrder fieldOrder = parser.getSorting().fieldOrders().get(0);
@@ -955,7 +955,7 @@ public class YqlParserTestCase {
@Test
public void testMoreInheritedAnnotations() {
String yqlQuery = "select * from sources * where " +
- "([{ranked: false}](foo contains \"a\" " +
+ "({ranked: false}(foo contains \"a\" " +
"and ({ranked: true}(bar contains \"b\" " +
"or ({ranked: false}(foo contains \"c\" " +
"and foo contains ({ranked: true}\"d\")))))))";
@@ -1079,7 +1079,7 @@ public class YqlParserTestCase {
// YQL query
Query yql = new Query();
- yql.properties().set("yql", "select * from sources * where urlfield.hostname contains ([{endAnchor: false }]uri(\"google.com\"))");
+ yql.properties().set("yql", "select * from sources * where urlfield.hostname contains ({endAnchor: false }uri(\"google.com\"))");
assertUrlQuery("urlfield.hostname", yql, false, false, true);
}
@@ -1090,7 +1090,7 @@ public class YqlParserTestCase {
// YQL query
Query yql = new Query();
- yql.properties().set("yql", "select * from sources * where urlfield.hostname contains ([{startAnchor: true }] uri(\"google.com\"))");
+ yql.properties().set("yql", "select * from sources * where urlfield.hostname contains ({startAnchor: true } uri(\"google.com\"))");
assertUrlQuery("urlfield.hostname", yql, true, true, true);
}
@@ -1148,7 +1148,7 @@ public class YqlParserTestCase {
StringBuilder expectedYql = new StringBuilder("select * from sources * where ");
expectedYql.append(field).append(" contains ");
if (hasAnnotations)
- expectedYql.append("([{");
+ expectedYql.append("({");
if (startAnchor != startAnchorIsDefault)
expectedYql.append("startAnchor: " + startAnchor);
if (endAnchor != endAnchorIsDefault) {
@@ -1157,7 +1157,7 @@ public class YqlParserTestCase {
expectedYql.append("endAnchor: " + endAnchor);
}
if (hasAnnotations)
- expectedYql.append("}]");
+ expectedYql.append("}");
expectedYql.append("uri(");
if (query.properties().get("yql") != null)
expectedYql.append("\"google.com\")"); // source string is preserved when parsing YQL