summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahooinc.com>2021-10-21 13:06:18 +0000
committerArne H Juul <arnej@yahooinc.com>2021-10-21 14:21:27 +0000
commitd1fd3f5dd8b4f44c4e8a36390273205e79f8728c (patch)
tree5c47a9488e48a4978aa9654ed27eb76cfa62ce6a /container-search/src/main/java/com/yahoo
parent9abe019606f2367b05e4e13d796de65dddf7c449 (diff)
add TrueItem
Diffstat (limited to 'container-search/src/main/java/com/yahoo')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/TrueItem.java41
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java12
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/YqlParser.java6
3 files changed, 58 insertions, 1 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/TrueItem.java b/container-search/src/main/java/com/yahoo/prelude/query/TrueItem.java
new file mode 100644
index 00000000000..20aebd124e7
--- /dev/null
+++ b/container-search/src/main/java/com/yahoo/prelude/query/TrueItem.java
@@ -0,0 +1,41 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.prelude.query;
+
+import java.nio.ByteBuffer;
+
+/**
+ * A query item which matches everything.
+ *
+ * @author arnej
+ */
+public class TrueItem extends Item {
+
+ @Override
+ public void setIndexName(String index) {
+ throw new IllegalArgumentException("TrueItem should not have an index name");
+ }
+
+ @Override
+ public ItemType getItemType() { return ItemType.TRUE; }
+
+ @Override
+ public String getName() { return "TRUE"; }
+
+ /** Override to only return "TRUE" rather than "TRUE " */
+ @Override
+ protected void appendHeadingString(StringBuilder buffer) {
+ buffer.append(getName());
+ }
+
+ @Override
+ public int encode(ByteBuffer buffer) {
+ super.encodeThis(buffer);
+ return 1;
+ }
+
+ @Override
+ public int getTermCount() { return 0; }
+
+ @Override
+ protected void appendBodyString(StringBuilder buffer) { }
+}
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 012f427a781..897bcde4fc3 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
@@ -97,6 +97,7 @@ import com.yahoo.prelude.query.SuffixItem;
import com.yahoo.prelude.query.TaggableItem;
import com.yahoo.prelude.query.ToolBox;
import com.yahoo.prelude.query.ToolBox.QueryVisitor;
+import com.yahoo.prelude.query.TrueItem;
import com.yahoo.prelude.query.UriItem;
import com.yahoo.prelude.query.WandItem;
import com.yahoo.prelude.query.WeakAndItem;
@@ -484,6 +485,16 @@ public class VespaSerializer {
}
+ private static class TrueSerializer extends Serializer<TrueItem> {
+ @Override
+ void onExit(StringBuilder destination, TrueItem item) { }
+ @Override
+ boolean serialize(StringBuilder destination, TrueItem item) {
+ destination.append("true");
+ return false;
+ }
+ }
+
private static class FalseSerializer extends Serializer<FalseItem> {
@Override
void onExit(StringBuilder destination, FalseItem item) { }
@@ -1205,6 +1216,7 @@ public class VespaSerializer {
dispatchBuilder.put(IntItem.class, new NumberSerializer());
dispatchBuilder.put(GeoLocationItem.class, new GeoLocationSerializer());
dispatchBuilder.put(BoolItem.class, new BoolSerializer());
+ dispatchBuilder.put(TrueItem.class, new TrueSerializer());
dispatchBuilder.put(FalseItem.class, new FalseSerializer());
dispatchBuilder.put(MarkerWordItem.class, new WordSerializer()); // gotcha
dispatchBuilder.put(NearItem.class, new NearSerializer());
diff --git a/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java b/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java
index fa2b9fd14e7..c688f61add0 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java
@@ -62,6 +62,7 @@ import com.yahoo.prelude.query.TaggableItem;
import com.yahoo.prelude.query.TermItem;
import com.yahoo.prelude.query.ToolBox;
import com.yahoo.prelude.query.ToolBox.QueryVisitor;
+import com.yahoo.prelude.query.TrueItem;
import com.yahoo.prelude.query.UriItem;
import com.yahoo.prelude.query.WandItem;
import com.yahoo.prelude.query.WeakAndItem;
@@ -450,10 +451,13 @@ public class YqlParser implements Parser {
private Item buildLiteral(OperatorNode<ExpressionOperator> ast) {
var literal = ast.getArgument(0);
+ if (Boolean.TRUE.equals(literal)) {
+ return new TrueItem();
+ }
if (Boolean.FALSE.equals(literal)) {
return new FalseItem();
}
- throw newUnexpectedArgumentException(literal, Boolean.FALSE);
+ throw newUnexpectedArgumentException(literal, Boolean.FALSE, Boolean.TRUE);
}
private Item buildNearestNeighbor(OperatorNode<ExpressionOperator> ast) {