summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsStreamingSearcher.java6
-rw-r--r--container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsVisitor.java20
-rw-r--r--document/abi-spec.json1
-rw-r--r--document/src/main/java/com/yahoo/document/idstring/IdIdString.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/DocumentSelector.java10
-rw-r--r--document/src/main/java/com/yahoo/document/select/OrderingSpecification.java49
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/ArithmeticNode.java8
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/AttributeNode.java6
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/ComparisonNode.java47
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/DocumentNode.java5
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/EmbracedNode.java5
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/ExpressionNode.java9
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/IdNode.java15
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/LiteralNode.java5
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/LogicNode.java79
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/NegationNode.java5
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/NowNode.java5
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/VariableNode.java5
-rwxr-xr-xdocument/src/main/javacc/SelectParser.jj7
-rw-r--r--document/src/test/java/com/yahoo/document/BucketIdFactoryTestCase.java67
-rw-r--r--document/src/test/java/com/yahoo/document/DocumentIdTestCase.java119
-rw-r--r--document/src/test/java/com/yahoo/document/GlobalIdTestCase.java8
-rw-r--r--document/src/test/java/com/yahoo/document/select/BucketSelectorTestCase.java16
-rw-r--r--document/src/test/java/com/yahoo/document/select/DocumentSelectorTestCase.java88
-rw-r--r--document/src/test/java/com/yahoo/document/select/LogicalNodeTestCase.java5
-rw-r--r--document/src/test/java/com/yahoo/document/select/OrderingSpecificationTestCase.java50
-rw-r--r--document/src/tests/CMakeLists.txt1
-rw-r--r--document/src/tests/base/documentid_test.cpp75
-rw-r--r--document/src/tests/bucketselectortest.cpp12
-rw-r--r--document/src/tests/buckettest.cpp44
-rw-r--r--document/src/tests/cpp-globalidbucketids.txt6
-rw-r--r--document/src/tests/documentidtest.cpp13
-rw-r--r--document/src/tests/documentselectparsertest.cpp74
-rw-r--r--document/src/tests/documenttestcase.cpp2
-rw-r--r--document/src/tests/globalidtest.cpp18
-rw-r--r--document/src/tests/orderingselectortest.cpp87
-rw-r--r--document/src/vespa/document/base/idstring.cpp23
-rw-r--r--document/src/vespa/document/base/idstring.h1
-rw-r--r--document/src/vespa/document/select/CMakeLists.txt1
-rw-r--r--document/src/vespa/document/select/gid_filter.cpp3
-rw-r--r--document/src/vespa/document/select/grammar/lexer.ll1
-rw-r--r--document/src/vespa/document/select/grammar/parser.yy6
-rw-r--r--document/src/vespa/document/select/orderingselector.cpp159
-rw-r--r--document/src/vespa/document/select/orderingselector.h28
-rw-r--r--document/src/vespa/document/select/valuenodes.cpp35
-rw-r--r--document/src/vespa/document/select/valuenodes.h2
-rw-r--r--documentapi/abi-spec.json6
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/ProgressToken.java3
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/VisitorParameters.java6
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusVisitorSession.java1
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/CreateVisitorMessage.java24
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RemoveLocationMessage.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories60.java5
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp4
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/visitor.h4
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp4
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/document.h9
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/userdocumentsbuilder.cpp4
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/visitoroperation.cpp165
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/visitoroperation.h6
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/visitororder.h6
-rw-r--r--storage/src/vespa/storage/storageserver/documentapiconverter.cpp2
-rw-r--r--storage/src/vespa/storage/visiting/visitor.cpp61
-rw-r--r--storage/src/vespa/storage/visiting/visitor.h5
-rw-r--r--storage/src/vespa/storage/visiting/visitorthread.cpp8
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp8
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp5
-rw-r--r--storageapi/src/vespa/storageapi/message/visitor.cpp3
-rw-r--r--storageapi/src/vespa/storageapi/message/visitor.h3
-rw-r--r--streamingvisitors/src/tests/searchvisitor/searchvisitor.cpp3
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp3
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/VisitorOrdering.java40
-rw-r--r--vdslib/src/vespa/vdslib/container/CMakeLists.txt1
-rw-r--r--vdslib/src/vespa/vdslib/container/visitorordering.cpp15
-rw-r--r--vdslib/src/vespa/vdslib/container/visitorordering.h37
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java11
78 files changed, 226 insertions, 1465 deletions
diff --git a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsStreamingSearcher.java b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsStreamingSearcher.java
index 0fd3d5b5aa1..827fcb885df 100644
--- a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsStreamingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsStreamingSearcher.java
@@ -273,8 +273,7 @@ public class VdsStreamingSearcher extends VespaBackEndSearcher {
if (docId.getScheme().hasNumber()) {
userId = docId.getScheme().getNumber();
} else {
- log.log(logLevel, "Got result with wrong scheme (expected " + IdString.Scheme.userdoc +
- " or " + IdString.Scheme.orderdoc + ") in document ID (" + id + ") for " + query);
+ log.log(logLevel, "Got result with wrong scheme in document ID (" + id + ") for " + query);
return false;
}
if (new BigInteger(expUserId).longValue() != userId) {
@@ -288,8 +287,7 @@ public class VdsStreamingSearcher extends VespaBackEndSearcher {
if (docId.getScheme().hasGroup()) {
groupName = docId.getScheme().getGroup();
} else {
- log.log(logLevel, "Got result with wrong scheme (expected " + IdString.Scheme.groupdoc +
- " or " + IdString.Scheme.orderdoc + ") in document ID (" + id + ") for " + query);
+ log.log(logLevel, "Got result with wrong scheme in document ID (" + id + ") for " + query);
return false;
}
if (!expGroupName.equals(groupName)) {
diff --git a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsVisitor.java b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsVisitor.java
index 32b48f0f8ae..628c24fffd1 100644
--- a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsVisitor.java
+++ b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsVisitor.java
@@ -1,7 +1,6 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.streamingvisitors;
-import com.yahoo.document.select.OrderingSpecification;
import com.yahoo.document.select.parser.ParseException;
import com.yahoo.documentapi.AckToken;
import com.yahoo.documentapi.DocumentAccess;
@@ -62,7 +61,6 @@ class VdsVisitor extends VisitorDataHandler implements Visitor {
private static final CompoundName streamingTotimestamp=new CompoundName("streaming.totimestamp");
private static final CompoundName streamingLoadtype=new CompoundName("streaming.loadtype");
private static final CompoundName streamingPriority=new CompoundName("streaming.priority");
- private static final CompoundName streamingOrdering=new CompoundName("streaming.ordering");
private static final CompoundName streamingMaxbucketspervisitor=new CompoundName("streaming.maxbucketspervisitor");
private static final Logger log = Logger.getLogger(VdsVisitor.class.getName());
@@ -75,16 +73,6 @@ class VdsVisitor extends VisitorDataHandler implements Visitor {
private Query query = null;
private VisitorSessionFactory visitorSessionFactory;
- static int getOrdering(String ordering) {
- if (ordering.equals("+")) {
- return OrderingSpecification.ASCENDING;
- } else if (ordering.equals("-")) {
- return OrderingSpecification.DESCENDING;
- } else {
- throw new RuntimeException("Ordering must be on the format {+/-}");
- }
- }
-
public interface VisitorSessionFactory {
VisitorSession createVisitorSession(VisitorParameters params) throws ParseException;
LoadTypeSet getLoadTypeSet();
@@ -210,14 +198,6 @@ class VdsVisitor extends VisitorDataHandler implements Visitor {
params.setTraceLevel(inferSessionTraceLevel(query));
- String ordering = query.properties().getString(streamingOrdering);
- if (ordering != null) {
- params.setVisitorOrdering(getOrdering(ordering));
- params.setMaxFirstPassHits(query.getOffset() + query.getHits());
- params.setMaxBucketsPerVisitor(1);
- params.setDynamicallyIncreaseMaxBucketsPerVisitor(true);
- }
-
String maxbuckets = query.properties().getString(streamingMaxbucketspervisitor);
if (maxbuckets != null) {
params.setMaxBucketsPerVisitor(Integer.parseInt(maxbuckets));
diff --git a/document/abi-spec.json b/document/abi-spec.json
index 134200d96ec..9500a837a16 100644
--- a/document/abi-spec.json
+++ b/document/abi-spec.json
@@ -3484,6 +3484,7 @@
],
"methods": [
"public static java.lang.String replaceType(java.lang.String, java.lang.String)",
+ "public static long makeLocation(java.lang.String)",
"public void <init>(java.lang.String, java.lang.String, java.lang.String, java.lang.String)",
"public long getLocation()",
"public java.lang.String getSchemeSpecific()",
diff --git a/document/src/main/java/com/yahoo/document/idstring/IdIdString.java b/document/src/main/java/com/yahoo/document/idstring/IdIdString.java
index 44ff08c73f0..4c7f71dd712 100644
--- a/document/src/main/java/com/yahoo/document/idstring/IdIdString.java
+++ b/document/src/main/java/com/yahoo/document/idstring/IdIdString.java
@@ -24,7 +24,7 @@ public class IdIdString extends IdString {
}
- private static long makeLocation(String s) {
+ public static long makeLocation(String s) {
long result = 0;
byte[] md5sum = MD5.md5.get().digest(Utf8.toBytes(s));
for (int i=0; i<8; ++i) {
diff --git a/document/src/main/java/com/yahoo/document/select/DocumentSelector.java b/document/src/main/java/com/yahoo/document/select/DocumentSelector.java
index 1ee6ff45c99..8b5178d21a8 100644
--- a/document/src/main/java/com/yahoo/document/select/DocumentSelector.java
+++ b/document/src/main/java/com/yahoo/document/select/DocumentSelector.java
@@ -98,16 +98,6 @@ public class DocumentSelector {
}
/**
- * Returns the ordering specification, if any, implied by this document
- * selection expression.
- *
- * @param order The order of the
- */
- public OrderingSpecification getOrdering(int order) {
- return expression.getOrdering(order);
- }
-
- /**
* Visits the expression tree.
*
* @param visitor The visitor to use.
diff --git a/document/src/main/java/com/yahoo/document/select/OrderingSpecification.java b/document/src/main/java/com/yahoo/document/select/OrderingSpecification.java
deleted file mode 100644
index 97908d3190f..00000000000
--- a/document/src/main/java/com/yahoo/document/select/OrderingSpecification.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.document.select;
-
-public class OrderingSpecification {
- public static int ASCENDING = 0;
- public static int DESCENDING = 1;
-
- public final int order;
- public final long orderingStart;
- public final short widthBits;
- public final short divisionBits;
-
- public OrderingSpecification() {
- this(ASCENDING, (long)0, (short)0, (short)0);
- }
-
- public OrderingSpecification(int order) {
- this(order, (long)0, (short)0, (short)0);
- }
-
- public OrderingSpecification(int order, long orderingStart, short widthBits, short divisionBits) {
- this.order = order;
- this.orderingStart = orderingStart;
- this.widthBits = widthBits;
- this.divisionBits = divisionBits;
- }
-
- public int getOrder() { return order; }
- public long getOrderingStart() { return orderingStart; }
- public short getWidthBits() { return widthBits; }
- public short getDivisionBits() { return divisionBits; }
-
- @Override
- public boolean equals(Object other) {
- OrderingSpecification o = (OrderingSpecification)other;
- if (o == null) return false;
-
- return (order == o.order && orderingStart == o.orderingStart && widthBits == o.widthBits && divisionBits == o.divisionBits);
- }
-
- @Override
- public int hashCode() {
- return java.util.Objects.hash(order, orderingStart, widthBits, divisionBits);
- }
-
- public String toString() {
- return "O: " + order + " S:" + orderingStart + " W:" + widthBits + " D:" + divisionBits;
- }
-}
diff --git a/document/src/main/java/com/yahoo/document/select/rule/ArithmeticNode.java b/document/src/main/java/com/yahoo/document/select/rule/ArithmeticNode.java
index c39bd7e668d..921f412096e 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/ArithmeticNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/ArithmeticNode.java
@@ -5,7 +5,6 @@ import com.yahoo.document.BucketIdFactory;
import com.yahoo.document.datatypes.NumericFieldValue;
import com.yahoo.document.select.BucketSet;
import com.yahoo.document.select.Context;
-import com.yahoo.document.select.OrderingSpecification;
import com.yahoo.document.select.Visitor;
import java.util.List;
@@ -175,16 +174,11 @@ public class ArithmeticNode implements ExpressionNode {
}
@Override
- public OrderingSpecification getOrdering(int order) {
- return null;
- }
-
- @Override
public void accept(Visitor visitor) {
visitor.visit(this);
}
- private class ValueItem {
+ private static class ValueItem {
public int operator;
public Number value;
diff --git a/document/src/main/java/com/yahoo/document/select/rule/AttributeNode.java b/document/src/main/java/com/yahoo/document/select/rule/AttributeNode.java
index 3e03709d0f1..0cedda7c4f0 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/AttributeNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/AttributeNode.java
@@ -13,7 +13,6 @@ import com.yahoo.document.datatypes.FieldPathIteratorHandler;
import com.yahoo.document.datatypes.FieldValue;
import com.yahoo.document.select.BucketSet;
import com.yahoo.document.select.Context;
-import com.yahoo.document.select.OrderingSpecification;
import com.yahoo.document.select.Result;
import com.yahoo.document.select.ResultList;
import com.yahoo.document.select.Visitor;
@@ -183,11 +182,6 @@ public class AttributeNode implements ExpressionNode {
return ret.toString();
}
- @Override
- public OrderingSpecification getOrdering(int order) {
- return null;
- }
-
public static class Item {
public static final int ATTRIBUTE = 0;
public static final int FUNCTION = 1;
diff --git a/document/src/main/java/com/yahoo/document/select/rule/ComparisonNode.java b/document/src/main/java/com/yahoo/document/select/rule/ComparisonNode.java
index c8fd8da0b98..47599e53ece 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/ComparisonNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/ComparisonNode.java
@@ -6,10 +6,9 @@ import com.yahoo.document.BucketIdFactory;
import com.yahoo.document.DocumentId;
import com.yahoo.document.datatypes.FieldPathIteratorHandler;
import com.yahoo.document.datatypes.NumericFieldValue;
-import com.yahoo.document.idstring.GroupDocIdString;
+import com.yahoo.document.idstring.IdIdString;
import com.yahoo.document.select.BucketSet;
import com.yahoo.document.select.Context;
-import com.yahoo.document.select.OrderingSpecification;
import com.yahoo.document.select.Result;
import com.yahoo.document.select.ResultList;
import com.yahoo.document.select.Visitor;
@@ -78,47 +77,6 @@ public class ComparisonNode implements ExpressionNode {
return rhs;
}
- public OrderingSpecification getOrdering(IdNode lhs, LiteralNode rhs, String operator, int order) {
- if (lhs.getWidthBits() == -1 || lhs.getDivisionBits() == -1 || !(rhs.getValue() instanceof Long)) {
- return null;
- }
-
- if (operator.equals("==") || operator.equals("=")) {
- return new OrderingSpecification(order, (Long)rhs.getValue(), lhs.getWidthBits(), lhs.getDivisionBits());
- }
-
- if (order == OrderingSpecification.ASCENDING) {
- if ((operator.equals("<") || operator.equals("<="))) {
- return new OrderingSpecification(order, 0, lhs.getWidthBits(), lhs.getDivisionBits());
- }
- if (operator.equals(">")) {
- return new OrderingSpecification(order, (Long)rhs.getValue() + 1, lhs.getWidthBits(), lhs.getDivisionBits());
- }
- if (operator.equals(">=")) {
- return new OrderingSpecification(order, (Long)rhs.getValue(), lhs.getWidthBits(), lhs.getDivisionBits());
- }
- } else {
- if (operator.equals("<")) {
- return new OrderingSpecification(order, (Long)rhs.getValue() - 1, lhs.getWidthBits(), lhs.getDivisionBits());
- }
- if (operator.equals("<=")) {
- return new OrderingSpecification(order, (Long)rhs.getValue(), lhs.getWidthBits(), lhs.getDivisionBits());
- }
- }
- return null;
- }
-
- @Override
- public OrderingSpecification getOrdering(int order) {
- if (lhs instanceof IdNode && rhs instanceof LiteralNode) {
- return getOrdering((IdNode)lhs, (LiteralNode)rhs, operator, order);
- } else if (rhs instanceof IdNode && lhs instanceof LiteralNode) {
- return getOrdering((IdNode)rhs, (LiteralNode)lhs, operator, order);
- }
-
- return null;
- }
-
@Override
public BucketSet getBucketSet(BucketIdFactory factory) {
if (operator.equals("==") || operator.equals("=")) {
@@ -131,6 +89,7 @@ public class ComparisonNode implements ExpressionNode {
return null;
}
+ @SuppressWarnings("deprecation")
private BucketSet compare(BucketIdFactory factory, IdNode id, LiteralNode literal, String operator) {
String field = id.getField();
Object value = literal.getValue();
@@ -156,7 +115,7 @@ public class ComparisonNode implements ExpressionNode {
{
return null; // no idea
}
- return new BucketSet(new BucketId(factory.getLocationBitCount(), new GroupDocIdString("", name, "").getLocation()));
+ return new BucketSet(new BucketId(factory.getLocationBitCount(), IdIdString.makeLocation(name)));
}
} else if (field.equalsIgnoreCase("bucket")) {
if (value instanceof Long) {
diff --git a/document/src/main/java/com/yahoo/document/select/rule/DocumentNode.java b/document/src/main/java/com/yahoo/document/select/rule/DocumentNode.java
index 9b766a56eb3..6e43969b623 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/DocumentNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/DocumentNode.java
@@ -10,7 +10,6 @@ import com.yahoo.document.DocumentType;
import com.yahoo.document.DocumentUpdate;
import com.yahoo.document.select.BucketSet;
import com.yahoo.document.select.Context;
-import com.yahoo.document.select.OrderingSpecification;
import com.yahoo.document.select.Visitor;
/**
@@ -70,8 +69,4 @@ public class DocumentNode implements ExpressionNode {
return type;
}
- @Override
- public OrderingSpecification getOrdering(int order) {
- return null;
- }
}
diff --git a/document/src/main/java/com/yahoo/document/select/rule/EmbracedNode.java b/document/src/main/java/com/yahoo/document/select/rule/EmbracedNode.java
index 7bf3413bafb..7e7b748dce1 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/EmbracedNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/EmbracedNode.java
@@ -4,7 +4,6 @@ package com.yahoo.document.select.rule;
import com.yahoo.document.BucketIdFactory;
import com.yahoo.document.select.BucketSet;
import com.yahoo.document.select.Context;
-import com.yahoo.document.select.OrderingSpecification;
import com.yahoo.document.select.Visitor;
/**
@@ -47,8 +46,4 @@ public class EmbracedNode implements ExpressionNode {
visitor.visit(this);
}
- @Override
- public OrderingSpecification getOrdering(int order) {
- return null;
- }
}
diff --git a/document/src/main/java/com/yahoo/document/select/rule/ExpressionNode.java b/document/src/main/java/com/yahoo/document/select/rule/ExpressionNode.java
index 9350b8ac1c5..232262eb466 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/ExpressionNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/ExpressionNode.java
@@ -4,7 +4,6 @@ package com.yahoo.document.select.rule;
import com.yahoo.document.BucketIdFactory;
import com.yahoo.document.select.BucketSet;
import com.yahoo.document.select.Context;
-import com.yahoo.document.select.OrderingSpecification;
import com.yahoo.document.select.Visitor;
/**
@@ -31,14 +30,6 @@ public interface ExpressionNode {
BucketSet getBucketSet(BucketIdFactory factory);
/**
- * If this document selection implies a specific ordering (using the orderdoc scheme),
- * return that specification.
- *
- * @param order The order in which we are looking to traverse the ordering (ASCENDING or DESCENDING)
- */
- OrderingSpecification getOrdering(int order);
-
- /**
* Perform visitation of this node.
*
* @param visitor The visitor that wishes to visit the node.
diff --git a/document/src/main/java/com/yahoo/document/select/rule/IdNode.java b/document/src/main/java/com/yahoo/document/select/rule/IdNode.java
index 3ca53c1d07d..f0f8815d467 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/IdNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/IdNode.java
@@ -3,10 +3,8 @@ package com.yahoo.document.select.rule;
import com.yahoo.document.DocumentId;
import com.yahoo.document.BucketIdFactory;
-import com.yahoo.document.idstring.OrderDocIdString;
import com.yahoo.document.select.BucketSet;
import com.yahoo.document.select.Context;
-import com.yahoo.document.select.OrderingSpecification;
import com.yahoo.document.select.Visitor;
/**
@@ -54,10 +52,6 @@ public class IdNode implements ExpressionNode {
return null;
}
- public OrderingSpecification getOrdering(int ordering) {
- return null;
- }
-
@Override
public Object evaluate(Context context) {
DocumentId id = context.getDocumentOperation().getId();
@@ -88,13 +82,8 @@ public class IdNode implements ExpressionNode {
}
throw new IllegalStateException("Document id doesn't have doc type.");
} else if (field.equalsIgnoreCase("order")) {
- if (id.getScheme() instanceof OrderDocIdString) {
- OrderDocIdString ods = (OrderDocIdString)id.getScheme();
- if (ods.getWidthBits() == widthBits && ods.getDivisionBits() == divisionBits) {
- return ods.getOrdering();
- }
- }
- } else{
+ // TODO Remove from grammar on VESPA 8
+ } else {
throw new IllegalStateException("Identifier field '" + field + "' is not supported.");
}
return null;
diff --git a/document/src/main/java/com/yahoo/document/select/rule/LiteralNode.java b/document/src/main/java/com/yahoo/document/select/rule/LiteralNode.java
index 2104a9c0608..9bf75289a26 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/LiteralNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/LiteralNode.java
@@ -4,7 +4,6 @@ package com.yahoo.document.select.rule;
import com.yahoo.document.BucketIdFactory;
import com.yahoo.document.select.BucketSet;
import com.yahoo.document.select.Context;
-import com.yahoo.document.select.OrderingSpecification;
import com.yahoo.document.select.Visitor;
import com.yahoo.document.select.parser.SelectParserUtils;
@@ -54,8 +53,4 @@ public class LiteralNode implements ExpressionNode {
}
}
- @Override
- public OrderingSpecification getOrdering(int order) {
- return null;
- }
}
diff --git a/document/src/main/java/com/yahoo/document/select/rule/LogicNode.java b/document/src/main/java/com/yahoo/document/select/rule/LogicNode.java
index 1ae397398b3..bc34e5040c5 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/LogicNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/LogicNode.java
@@ -4,7 +4,6 @@ package com.yahoo.document.select.rule;
import com.yahoo.document.BucketIdFactory;
import com.yahoo.document.select.BucketSet;
import com.yahoo.document.select.Context;
-import com.yahoo.document.select.OrderingSpecification;
import com.yahoo.document.select.ResultList;
import com.yahoo.document.select.Visitor;
@@ -72,61 +71,6 @@ public class LogicNode implements ExpressionNode {
return buf.pop().buckets;
}
- @Override
- public OrderingSpecification getOrdering(int order) {
- Stack<OrderingItem> buf = new Stack<>();
- for (NodeItem item : items) {
- if (!buf.isEmpty()) {
- while (buf.peek().operator > item.operator) {
- pickOrdering(buf);
- }
- }
- buf.push(new OrderingItem(item.operator, item.node.getOrdering(order)));
- }
- while (buf.size() > 1) {
- pickOrdering(buf);
- }
- return buf.pop().ordering;
- }
-
- private OrderingSpecification pickOrdering(OrderingSpecification a, OrderingSpecification b, boolean isAnd) {
- if (a.getWidthBits() == b.getWidthBits() && a.getDivisionBits() == b.getDivisionBits() && a.getOrder() == b.getOrder()) {
- if ((a.getOrder() == OrderingSpecification.ASCENDING && isAnd) ||
- (a.getOrder() == OrderingSpecification.DESCENDING && !isAnd)) {
- return new OrderingSpecification(a.getOrder(), Math.max(a.getOrderingStart(), b.getOrderingStart()), b.getWidthBits(), a.getDivisionBits());
- } else {
- return new OrderingSpecification(a.getOrder(), Math.min(a.getOrderingStart(), b.getOrderingStart()), b.getWidthBits(), a.getDivisionBits());
- }
- }
- return null;
- }
-
- private void pickOrdering(Stack<OrderingItem> buf) {
- OrderingItem rhs = buf.pop();
- OrderingItem lhs = buf.pop();
- switch (rhs.operator) {
- case AND:
- if (lhs.ordering == null) {
- lhs.ordering = rhs.ordering;
- } else if (rhs.ordering == null) {
- // empty
- } else {
- lhs.ordering = pickOrdering(lhs.ordering, rhs.ordering, true);
- }
- break;
- case OR:
- if (lhs.ordering != null && rhs.ordering != null) {
- lhs.ordering = pickOrdering(lhs.ordering, rhs.ordering, false);
- } else {
- lhs.ordering = null;
- }
- break;
- default:
- lhs.ordering = null;
- }
- buf.push(lhs);
- }
-
/**
* Combines the top two items of the given stack using the operator of the second.
*
@@ -246,7 +190,7 @@ public class LogicNode implements ExpressionNode {
/**
* Private class to store results in a stack.
*/
- private abstract class ValueItem implements ResultList.LazyResultList {
+ private static abstract class ValueItem implements ResultList.LazyResultList {
private final int operator;
ValueItem(int operator) {
this.operator = operator;
@@ -254,7 +198,7 @@ public class LogicNode implements ExpressionNode {
int getOperator() { return operator; }
}
- private final class LazyValueItem extends ValueItem {
+ private static final class LazyValueItem extends ValueItem {
private final NodeItem item;
private final Context context;
private ResultList lazyResult = null;
@@ -273,7 +217,7 @@ public class LogicNode implements ExpressionNode {
}
}
- private final class LazyCombinedItem extends ValueItem {
+ private static final class LazyCombinedItem extends ValueItem {
private final ValueItem lhs;
private final ValueItem rhs;
private ResultList lazyResult = null;
@@ -304,7 +248,7 @@ public class LogicNode implements ExpressionNode {
/**
* Private class to store bucket sets in a stack.
*/
- private final class BucketItem {
+ private static final class BucketItem {
private int operator;
private BucketSet buckets;
@@ -315,22 +259,9 @@ public class LogicNode implements ExpressionNode {
}
/**
- * Private class to store ordering expressions in a stack.
- */
- private final class OrderingItem {
- private int operator;
- private OrderingSpecification ordering;
-
- OrderingItem(int operator, OrderingSpecification orderSpec) {
- this.operator = operator;
- this.ordering = orderSpec;
- }
- }
-
- /**
* Private class to store expression nodes in a stack.
*/
- public final class NodeItem {
+ public static final class NodeItem {
private int operator;
private ExpressionNode node;
diff --git a/document/src/main/java/com/yahoo/document/select/rule/NegationNode.java b/document/src/main/java/com/yahoo/document/select/rule/NegationNode.java
index ba75b13747d..b2f13f6d822 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/NegationNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/NegationNode.java
@@ -4,7 +4,6 @@ package com.yahoo.document.select.rule;
import com.yahoo.document.BucketIdFactory;
import com.yahoo.document.select.BucketSet;
import com.yahoo.document.select.Context;
-import com.yahoo.document.select.OrderingSpecification;
import com.yahoo.document.select.Result;
import com.yahoo.document.select.Visitor;
@@ -48,8 +47,4 @@ public class NegationNode implements ExpressionNode {
return "not " + node;
}
- @Override
- public OrderingSpecification getOrdering(int order) {
- return null;
- }
}
diff --git a/document/src/main/java/com/yahoo/document/select/rule/NowNode.java b/document/src/main/java/com/yahoo/document/select/rule/NowNode.java
index 567d9ddcb1f..5bb88d2f84a 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/NowNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/NowNode.java
@@ -4,7 +4,6 @@ package com.yahoo.document.select.rule;
import com.yahoo.document.BucketIdFactory;
import com.yahoo.document.select.BucketSet;
import com.yahoo.document.select.Context;
-import com.yahoo.document.select.OrderingSpecification;
import com.yahoo.document.select.Visitor;
/**
@@ -28,10 +27,6 @@ public class NowNode implements ExpressionNode {
}
@Override
- public OrderingSpecification getOrdering(int order) {
- return null;
- }
- @Override
public void accept(Visitor visitor) {
visitor.visit(this);
}
diff --git a/document/src/main/java/com/yahoo/document/select/rule/VariableNode.java b/document/src/main/java/com/yahoo/document/select/rule/VariableNode.java
index 77abb52938f..aae659de129 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/VariableNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/VariableNode.java
@@ -4,7 +4,6 @@ package com.yahoo.document.select.rule;
import com.yahoo.document.BucketIdFactory;
import com.yahoo.document.select.BucketSet;
import com.yahoo.document.select.Context;
-import com.yahoo.document.select.OrderingSpecification;
import com.yahoo.document.select.Visitor;
/**
@@ -51,8 +50,4 @@ public class VariableNode implements ExpressionNode {
return "$" + value;
}
- @Override
- public OrderingSpecification getOrdering(int order) {
- return null;
- }
}
diff --git a/document/src/main/javacc/SelectParser.jj b/document/src/main/javacc/SelectParser.jj
index 0e79306ee36..6e1b01b27fb 100755
--- a/document/src/main/javacc/SelectParser.jj
+++ b/document/src/main/javacc/SelectParser.jj
@@ -74,7 +74,6 @@ TOKEN :
<ID_SPECIFIC: "specific"> |
<ID_USER: "user"> |
<ID_GROUP: "group"> |
- <ID_ORDER: "order"> |
<ID_BUCKET: "bucket"> |
<NULL: "null"> |
<NOW: "now"> |
@@ -205,7 +204,6 @@ void identifier() : { }
<ID_SPECIFIC> |
<ID_USER> |
<ID_GROUP> |
- <ID_ORDER> |
<ID_BUCKET> |
<NULL> |
<NOW> |
@@ -229,10 +227,7 @@ IdNode id() :
<ID_SPECIFIC> { ret.setField(token.image); } |
<ID_USER> { ret.setField(token.image); } |
<ID_GROUP> { ret.setField(token.image); } |
- <ID_BUCKET> { ret.setField(token.image); } |
- ( <ID_ORDER> { ret.setField(token.image); } <LBRACE>
- <INTEGER> { ret.setWidthBits(Short.parseShort(token.image)); } <COMMA>
- <INTEGER> { ret.setDivisionBits(Short.parseShort(token.image)); } <RBRACE> ) )
+ <ID_BUCKET> { ret.setField(token.image); } )
] )
{ return ret; }
}
diff --git a/document/src/test/java/com/yahoo/document/BucketIdFactoryTestCase.java b/document/src/test/java/com/yahoo/document/BucketIdFactoryTestCase.java
index d10d4242f6f..c2e1dbd611c 100644
--- a/document/src/test/java/com/yahoo/document/BucketIdFactoryTestCase.java
+++ b/document/src/test/java/com/yahoo/document/BucketIdFactoryTestCase.java
@@ -1,10 +1,8 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
-import com.yahoo.document.BucketIdFactory;
-import com.yahoo.document.BucketId;
-import com.yahoo.document.DocumentId;
-import com.yahoo.document.idstring.*;
+import com.yahoo.document.idstring.DocIdString;
+import com.yahoo.document.idstring.IdIdString;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
@@ -44,23 +42,20 @@ public class BucketIdFactoryTestCase {
}
@Test
+ @SuppressWarnings("deprecation")
public void testBucketGeneration() {
+ // TODO Rewrite in time for VESPA 8 to use IdIdString
BucketIdFactory factory = new BucketIdFactory(32, 26, 6);
DocumentId doc1 = new DocumentId(new DocIdString("ns", "spec"));
DocumentId doc2 = new DocumentId(new DocIdString("ns2", "spec"));
DocumentId doc3 = new DocumentId(new DocIdString("ns", "spec2"));
- DocumentId userDoc1 = new DocumentId(new UserDocIdString("ns", 0x12, "spec"));
- DocumentId userDoc2 = new DocumentId(new UserDocIdString("ns2", 0x12, "spec2"));
- DocumentId userDoc3 = new DocumentId(new UserDocIdString("ns", 0x13, "spec"));
- DocumentId groupDoc1 = new DocumentId(new GroupDocIdString("ns", "yahoo.com", "spec"));
- DocumentId groupDoc2 = new DocumentId(new GroupDocIdString("ns2", "yahoo.com", "spec2"));
- DocumentId groupDoc3 = new DocumentId(new GroupDocIdString("ns", "yahoo", "spec"));
- DocumentId orderDoc1 = new DocumentId(new OrderDocIdString("ns", "13", 31, 19, 1268182861, "foo"));
- DocumentId orderDoc2 = new DocumentId(new OrderDocIdString("ns", "13", 31, 19, 1205110861, "foo"));
- DocumentId orderDoc3 = new DocumentId(new OrderDocIdString("ns", "13", 31, 19, 1205715661, "foo"));
- DocumentId orderDoc4 = new DocumentId(new OrderDocIdString("ns", "13", 4, 0, 2, "foo"));
- DocumentId orderDoc5 = new DocumentId(new OrderDocIdString("ns", "13", 4, 0, 4, "foo"));
- DocumentId orderDoc6 = new DocumentId(new OrderDocIdString("ns", "13", 4, 0, 11, "foo"));
+ DocumentId userDoc1 = new DocumentId(new IdIdString("ns", "mytype","n=18", "spec"));
+ DocumentId userDoc2 = new DocumentId(new IdIdString("ns", "mytype","n=18", "spec2"));
+ DocumentId userDoc3 = new DocumentId(new IdIdString("ns", "mytype","n=19", "spec"));
+ DocumentId groupDoc1 = new DocumentId(new IdIdString("ns", "mytype", "g=yahoo.com", "spec"));
+ DocumentId groupDoc2 = new DocumentId(new IdIdString("ns2", "mytype", "g=yahoo.com", "spec2"));
+ DocumentId groupDoc3 = new DocumentId(new IdIdString("ns", "mytype", "g=yahoo", "spec"));
+
BucketId docBucket1 = factory.getBucketId(doc1);
BucketId docBucket2 = factory.getBucketId(doc2);
@@ -71,32 +66,18 @@ public class BucketIdFactoryTestCase {
BucketId groupDocBucket1 = factory.getBucketId(groupDoc1);
BucketId groupDocBucket2 = factory.getBucketId(groupDoc2);
BucketId groupDocBucket3 = factory.getBucketId(groupDoc3);
- BucketId orderDocBucket1 = factory.getBucketId(orderDoc1);
- BucketId orderDocBucket2 = factory.getBucketId(orderDoc2);
- BucketId orderDocBucket3 = factory.getBucketId(orderDoc3);
- BucketId orderDocBucket4 = factory.getBucketId(orderDoc4);
- BucketId orderDocBucket5 = factory.getBucketId(orderDoc5);
- BucketId orderDocBucket6 = factory.getBucketId(orderDoc6);
-
- assertEquals(new Hex(0xe99703f200000012l), new Hex(userDocBucket1.getRawId()));
- assertEquals(new Hex(0xebfa518a00000012l), new Hex(userDocBucket2.getRawId()));
- assertEquals(new Hex(0xeac1850800000013l), new Hex(userDocBucket3.getRawId()));
-
- assertEquals(new Hex(0xe90ce4b09a1acd50l), new Hex(groupDocBucket1.getRawId()));
- assertEquals(new Hex(0xe9cedaa49a1acd50l), new Hex(groupDocBucket2.getRawId()));
- assertEquals(new Hex(0xe8cdb18bafe81f24l), new Hex(groupDocBucket3.getRawId()));
-
- assertEquals(new Hex(0xe980c9abd5fd8d11l), new Hex(docBucket1.getRawId()));
- assertEquals(new Hex(0xeafe870c5f9c37b9l), new Hex(docBucket2.getRawId()));
- assertEquals(new Hex(0xeaebe9473ecbcd69l), new Hex(docBucket3.getRawId()));
-
- assertEquals(new Hex(0xeae764e90000000dl), new Hex(orderDocBucket1.getRawId()));
- assertEquals(new Hex(0xeacb85f10000000dl), new Hex(orderDocBucket2.getRawId()));
- assertEquals(new Hex(0xea68ddf10000000dl), new Hex(orderDocBucket3.getRawId()));
-
- assertEquals(new Hex(0xe87526540000000dl), new Hex(orderDocBucket4.getRawId()));
- assertEquals(new Hex(0xea59f8f20000000dl), new Hex(orderDocBucket5.getRawId()));
- assertEquals(new Hex(0xe9eb703d0000000dl), new Hex(orderDocBucket6.getRawId()));
+
+ assertEquals(new Hex(0xeb3089a300000012L), new Hex(userDocBucket1.getRawId()));
+ assertEquals(new Hex(0xea780a8700000012L), new Hex(userDocBucket2.getRawId()));
+ assertEquals(new Hex(0xe80d16fc00000013L), new Hex(userDocBucket3.getRawId()));
+
+ assertEquals(new Hex(0xeb82f2be9a1acd50L), new Hex(groupDocBucket1.getRawId()));
+ assertEquals(new Hex(0xebff6e379a1acd50L), new Hex(groupDocBucket2.getRawId()));
+ assertEquals(new Hex(0xe91b9600afe81f24L), new Hex(groupDocBucket3.getRawId()));
+
+ assertEquals(new Hex(0xe980c9abd5fd8d11L), new Hex(docBucket1.getRawId()));
+ assertEquals(new Hex(0xeafe870c5f9c37b9L), new Hex(docBucket2.getRawId()));
+ assertEquals(new Hex(0xeaebe9473ecbcd69L), new Hex(docBucket3.getRawId()));
}
//Actually a BucketId testcase ...
@@ -113,7 +94,7 @@ public class BucketIdFactoryTestCase {
@Test
public void testBidContainsDocId() {
- DocumentId docId = new DocumentId("userdoc:recovery:18:99999");
+ DocumentId docId = new DocumentId("id:ns:recovery:n=18:99999");
BucketIdFactory factory = new BucketIdFactory(32, 26, 6);
BucketId bid = new BucketId(16, 0x12L);
assert(bid.contains(docId, factory));
diff --git a/document/src/test/java/com/yahoo/document/DocumentIdTestCase.java b/document/src/test/java/com/yahoo/document/DocumentIdTestCase.java
index bd769889363..b8f60b5d9bc 100644
--- a/document/src/test/java/com/yahoo/document/DocumentIdTestCase.java
+++ b/document/src/test/java/com/yahoo/document/DocumentIdTestCase.java
@@ -1,16 +1,18 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
-import com.yahoo.document.idstring.*;
+import com.yahoo.document.idstring.IdIdString;
import com.yahoo.vespa.objects.BufferSerializer;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
-import java.math.BigInteger;
-import java.io.*;
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
import java.util.regex.Pattern;
import java.util.Arrays;
@@ -70,10 +72,6 @@ public class DocumentIdTestCase {
//valid URIs
new DocumentId("doc:blabla:something");
new DocumentId("doc:doc:doc");
- new DocumentId("userdoc:bla:2387:");
- new DocumentId("userdoc:bar:0:");
- new DocumentId("userdoc:bar:18446744073709551615:");
- new DocumentId("userdoc:foo:15:bar");
new DocumentId("id:namespace:type:n=42:whatever");
new DocumentId("id:namespace:type::whatever");
} catch (IllegalArgumentException iae) {
@@ -87,13 +85,6 @@ public class DocumentIdTestCase {
checkInvalidUri("doc:::");
checkInvalidUri("doc::/");
checkInvalidUri("doc");
- checkInvalidUri("userdoc:");
- checkInvalidUri("userdoc::");
- checkInvalidUri("userdoc:::");
- checkInvalidUri("userdoc:::/");
- checkInvalidUri("userdoc");
- checkInvalidUri("userdoc:-87987//");
- checkInvalidUri("userdoc:18446744073709551620/bar/");
checkInvalidUri("id:namespace:type");
checkInvalidUri("id:namespace:type:key-values");
checkInvalidUri("id:namespace:type:n=0,n=1:foo");
@@ -118,7 +109,7 @@ public class DocumentIdTestCase {
//Compares globalId with C++ implementation located in
// ~document-HEAD/document/src/tests/cpp-globalidbucketids.txt
@Test
- public void testCalculateGlobalId() throws IOException{
+ public void testCalculateGlobalId() throws IOException {
String file = "src/tests/cpp-globalidbucketids.txt";
BufferedReader fr = new BufferedReader(new FileReader(file));
@@ -178,91 +169,8 @@ public class DocumentIdTestCase {
}
@Test
- public void testGroupdoc() {
- try {
- //valid
- new DocumentId("groupdoc:blabla:something:jkl");
- new DocumentId("groupdoc:doc:doc:asd");
- new DocumentId("groupdoc:bar:0:a");
- new DocumentId("groupdoc:bar:18446744073709551615:");
- new DocumentId("groupdoc:foo:15:bar");
- } catch (IllegalArgumentException iae) {
- fail(iae.getMessage());
- }
- }
-
- @Test
- public void testInvalidGroupdoc() {
- checkInvalidUri("grouppdoc:blabla:something");
- checkInvalidUri("groupdoc:blablasomething");
- }
-
- @Test
- public void testUriNamespace() {
- DocumentId docId = new DocumentId("doc:bar:foo");
- assertEquals("doc:bar:foo", docId.toString());
- assertEquals("doc", docId.getScheme().getType().toString());
- assertEquals("bar", docId.getScheme().getNamespace());
- assertEquals("foo", docId.getScheme().getNamespaceSpecific());
-
- docId = new DocumentId("userdoc:ns:90:boo");
- assertEquals("userdoc:ns:90:boo", docId.toString());
- assertEquals("userdoc", docId.getScheme().getType().toString());
- assertEquals("ns", docId.getScheme().getNamespace());
- assertEquals("boo", docId.getScheme().getNamespaceSpecific());
- assertEquals(90l, ((UserDocIdString) docId.getScheme()).getUserId());
-
- docId = new DocumentId("userdoc:ns:18446744073709551615:boo");
- assertEquals("userdoc:ns:18446744073709551615:boo", docId.toString());
- assertEquals("userdoc", docId.getScheme().getType().toString());
- assertEquals("ns", docId.getScheme().getNamespace());
- assertEquals("boo", docId.getScheme().getNamespaceSpecific());
- assertEquals(new BigInteger("18446744073709551615").longValue(), ((UserDocIdString) docId.getScheme()).getUserId());
-
- docId = new DocumentId("userdoc:ns:9223372036854775808:boo");
- assertEquals("userdoc:ns:9223372036854775808:boo", docId.toString());
- assertEquals("userdoc", docId.getScheme().getType().toString());
- assertEquals("ns", docId.getScheme().getNamespace());
- assertEquals("boo", docId.getScheme().getNamespaceSpecific());
- assertEquals(new BigInteger("9223372036854775808").longValue(), ((UserDocIdString) docId.getScheme()).getUserId());
-
- BigInteger negativeUserId = new BigInteger("F00DCAFEDEADBABE", 16);
- assertEquals(0xF00DCAFEDEADBABEl, negativeUserId.longValue());
- docId = new DocumentId("userdoc:ns:"+negativeUserId+":bar");
- assertEquals("userdoc:ns:17297704939806374590:bar", docId.toString());
- assertEquals(negativeUserId.longValue(), ((UserDocIdString) docId.getScheme()).getUserId());
-
- docId = new DocumentId("orderdoc(31,19):ns2:1234:1268182861:foo");
- assertEquals("orderdoc(31,19):ns2:1234:1268182861:foo", docId.toString());
- assertEquals("orderdoc", docId.getScheme().getType().toString());
- assertEquals("ns2", docId.getScheme().getNamespace());
- assertEquals("foo", docId.getScheme().getNamespaceSpecific());
- assertEquals(31, ((OrderDocIdString)docId.getScheme()).getWidthBits());
- assertEquals(19, ((OrderDocIdString)docId.getScheme()).getDivisionBits());
- assertEquals("1234", ((OrderDocIdString)docId.getScheme()).getGroup());
- assertEquals(1234, ((OrderDocIdString)docId.getScheme()).getUserId());
- assertEquals(1268182861, ((OrderDocIdString)docId.getScheme()).getOrdering());
- }
-
- @Test
public void testIdStrings() {
- DocumentId docId;
- docId = new DocumentId(new DocIdString("test", "baaaa"));
- assertEquals("doc:test:baaaa", docId.toString());
- assertFalse(docId.hasDocType());
-
- docId = new DocumentId(new UserDocIdString("test", 54, "something"));
- assertEquals("userdoc:test:54:something", docId.toString());
- assertFalse(docId.hasDocType());
-
- docId = new DocumentId(new UserDocIdString("test", 0xFFFFFFFFFFFFFFFFl, "something"));
- assertEquals("userdoc:test:18446744073709551615:something", docId.toString());
-
- //sign flipped
- docId = new DocumentId(new UserDocIdString("test", -8193, "something"));
- assertEquals("userdoc:test:18446744073709543423:something", docId.toString());
-
- docId = new DocumentId(new IdIdString("namespace", "type", "g=group", "foobar"));
+ DocumentId docId = new DocumentId(new IdIdString("namespace", "type", "g=group", "foobar"));
assertEquals("id:namespace:type:g=group:foobar", docId.toString());
assertTrue(docId.hasDocType());
assertEquals("type", docId.getDocType());
@@ -283,26 +191,15 @@ public class DocumentIdTestCase {
assertTrue(user.getScheme().hasNumber());
assertEquals(42, user.getScheme().getNumber());
- user = new DocumentId("userdoc:ns:42:foo");
- assertFalse(user.getScheme().hasGroup());
- assertTrue(user.getScheme().hasNumber());
- assertEquals(42, user.getScheme().getNumber());
-
DocumentId group = new DocumentId("id:ns:type:g=mygroup:foo");
assertTrue(group.getScheme().hasGroup());
assertFalse(group.getScheme().hasNumber());
assertEquals("mygroup", group.getScheme().getGroup());
- group = new DocumentId("groupdoc:ns:mygroup:foo");
+ group = new DocumentId("id:ns:type:g=mygroup:foo");
assertTrue(group.getScheme().hasGroup());
assertFalse(group.getScheme().hasNumber());
assertEquals("mygroup", group.getScheme().getGroup());
-
- DocumentId order = new DocumentId("orderdoc(5,2):ns:42:007:foo");
- assertTrue(order.getScheme().hasGroup());
- assertTrue(order.getScheme().hasNumber());
- assertEquals("42", order.getScheme().getGroup());
- assertEquals(42, order.getScheme().getNumber());
}
@Test
diff --git a/document/src/test/java/com/yahoo/document/GlobalIdTestCase.java b/document/src/test/java/com/yahoo/document/GlobalIdTestCase.java
index c134f8e7770..cb818f12d3f 100644
--- a/document/src/test/java/com/yahoo/document/GlobalIdTestCase.java
+++ b/document/src/test/java/com/yahoo/document/GlobalIdTestCase.java
@@ -86,10 +86,10 @@ public class GlobalIdTestCase {
@Test
public void testToBucketId() {
- verifyGidToBucketIdMapping("userdoc:ns:1:abc");
- verifyGidToBucketIdMapping("userdoc:ns:1000:abc");
- verifyGidToBucketIdMapping("userdoc:hsgf:18446744073700000000:dfdfsdfg");
- verifyGidToBucketIdMapping("groupdoc:ns:somegroup:hmm");
+ verifyGidToBucketIdMapping("id:ns:mytype:n=1:abc");
+ verifyGidToBucketIdMapping("id:ns:mytype:n=1000:abc");
+ verifyGidToBucketIdMapping("id:hsgf:mytype:n=9146744073700000000:dfdfsdfg");
+ verifyGidToBucketIdMapping("id:ns:mytype:g=somegroup:hmm");
verifyGidToBucketIdMapping("doc:foo:test");
verifyGidToBucketIdMapping("doc:myns:http://foo.bar");
verifyGidToBucketIdMapping("doc:jsrthsdf:a234aleingzldkifvasdfgadf");
diff --git a/document/src/test/java/com/yahoo/document/select/BucketSelectorTestCase.java b/document/src/test/java/com/yahoo/document/select/BucketSelectorTestCase.java
index a1ad09c2329..aea5ea7fda8 100644
--- a/document/src/test/java/com/yahoo/document/select/BucketSelectorTestCase.java
+++ b/document/src/test/java/com/yahoo/document/select/BucketSelectorTestCase.java
@@ -17,11 +17,11 @@ public class BucketSelectorTestCase {
@Test
public void testExpressions() throws Exception {
- assertBucketCount("id = \"userdoc:ns:123:foobar\"", 1);
- assertBucketCount("id = \"userdoc:ns:123:foo*\"", 0);
- assertBucketCount("id == \"userdoc:ns:123:f?oo*\"", 1);
- assertBucketCount("id =~ \"userdoc:ns:123:foo*\"", 0);
- assertBucketCount("id =~ \"userdoc:ns:123:foo?\"", 0);
+ assertBucketCount("id = \"id:ns:mytype:n=123:foobar\"", 1);
+ assertBucketCount("id = \"id:ns:mytype:n=123:foo*\"", 0);
+ assertBucketCount("id == \"id:ns:mytype:n=123:f?oo*\"", 1);
+ assertBucketCount("id =~ \"id:ns:mytype:n=123:foo*\"", 0);
+ assertBucketCount("id =~ \"id:ns:mytype:n=123:foo?\"", 0);
assertBucketCount("id.user = 123", 1);
assertBucketCount("id.user == 123", 1);
assertBucketCount("id.group = \"yahoo.com\"", 1);
@@ -39,7 +39,7 @@ public class BucketSelectorTestCase {
assertBucket("id.bucket = 0x4000000000003018", new BucketId(16, 12312));
assertBucket("id.bucket == 0x4000000000000258", new BucketId(16, 600));
- assertBucket("id = \"userdoc:ns:123:foobar\"", new BucketId(0xeafff5320000007bL));
+ assertBucket("id = \"id:ns:mytype:n=123:foobar\"", new BucketId(0xe8bd6e280000007bL));
assertBucket("id.user = 123", new BucketId(32, 123));
assertBucket("id.group = \"yahoo.com\"", new BucketId(32, 0x035837189a1acd50L));
@@ -52,8 +52,8 @@ public class BucketSelectorTestCase {
@Test
public void parenthesis_enclosed_expressions_inherit_bucket_selectors_from_children() throws Exception {
- assertBucketCount("(id == \"userdoc:ns:123:foobar\")", 1);
- assertBucket("(id = \"userdoc:ns:123:foobar\")", new BucketId(0xeafff5320000007bL));
+ assertBucketCount("(id == \"id:ns:mytype:n=123:foobar\")", 1);
+ assertBucket("(id = \"id:ns:mytype:n=123:foobar\")", new BucketId(0xe8bd6e280000007bL));
assertBucketCount("(id.group = \"yahoo.com\" and (testdoctype1.hstringval == \"Doe\"))", 1);
assertBucket("(id.group = \"yahoo.com\" and (testdoctype1 and (id.namespace == 'foo')))", new BucketId(32, 0x035837189a1acd50L));
}
diff --git a/document/src/test/java/com/yahoo/document/select/DocumentSelectorTestCase.java b/document/src/test/java/com/yahoo/document/select/DocumentSelectorTestCase.java
index 846f85e925a..6457a3deb82 100644
--- a/document/src/test/java/com/yahoo/document/select/DocumentSelectorTestCase.java
+++ b/document/src/test/java/com/yahoo/document/select/DocumentSelectorTestCase.java
@@ -74,7 +74,6 @@ public class DocumentSelectorTestCase {
assertParse("id.namespace = \"*\"");
assertParse("id.hash() > 0");
assertParse("id.namespace.hash() > 0");
- assertParse("id.order(5,2) > 100");
assertParse("music.artist = \"*\"");
assertParse("music.artist.lowercase() = \"*\"");
assertParse("music_.artist = \"*\"");
@@ -187,9 +186,9 @@ public class DocumentSelectorTestCase {
assertParse("mytype");
// Test document id.
- assertParse("id == \"userdoc:ns:mytest\"");
+ assertParse("id == \"id:ns:mytype::mytest\"");
assertParse("id.namespace == \"myspace\"");
- assertParse("id.scheme == \"userdoc\"");
+ assertParse("id.scheme == \"id\"");
assertParse("id.type == \"mytype\"");
assertParse("id.user == 1234");
assertParse("id.bucket == 8388608", "id.bucket == 0x800000");
@@ -260,7 +259,7 @@ public class DocumentSelectorTestCase {
public void testDocumentRemove() throws ParseException {
assertEquals(Result.TRUE, evaluate("test", createRemove("id:ns:test::1")));
assertEquals(Result.FALSE, evaluate("test", createRemove("id:ns:null::1")));
- assertEquals(Result.FALSE, evaluate("test", createRemove("userdoc:test:1234:1")));
+ assertEquals(Result.TRUE, evaluate("test", createRemove("id:ns:test:n=1234:1")));
assertEquals(Result.INVALID, evaluate("test.hint", createRemove("id:ns:test::1")));
assertEquals(Result.FALSE, evaluate("test.hint", createRemove("id:ns:null::1")));
assertEquals(Result.INVALID, evaluate("test.hint == 0", createRemove("id:ns:test::1")));
@@ -276,7 +275,7 @@ public class DocumentSelectorTestCase {
public void testDocumentGet() throws ParseException {
assertEquals(Result.TRUE, evaluate("test", createGet("id:ns:test::1")));
assertEquals(Result.FALSE, evaluate("test", createGet("id:ns:null::1")));
- assertEquals(Result.FALSE, evaluate("test", createGet("userdoc:test:1234:1")));
+ assertEquals(Result.TRUE, evaluate("test", createGet("id:ns:test:n=1234:1")));
assertEquals(Result.INVALID, evaluate("test.hint", createGet("id:ns:test::1")));
assertEquals(Result.FALSE, evaluate("test.hint", createGet("id:ns:null::1")));
assertEquals(Result.INVALID, evaluate("test.hint == 0", createGet("id:ns:test::1")));
@@ -328,9 +327,8 @@ public class DocumentSelectorTestCase {
List<DocumentPut> documents = new ArrayList<>();
documents.add(createDocument("doc:myspace:anything", 24, 2.0f, "foo", "bar"));
documents.add(createDocument("doc:anotherspace:foo", 13, 4.1f, "bar", "foo"));
- documents.add(createDocument("userdoc:myspace:1234:mail1", 15, 1.0f, "some", "some"));
- documents.add(createDocument("userdoc:myspace:5678:bar", 14, 2.4f, "Yet", "More"));
- documents.add(createDocument("orderdoc(31,19):ns2:1234:5678:foo", 14, 2.4f, "Yet", "More"));
+ documents.add(createDocument("id:myspace:test:n=1234:mail1", 15, 1.0f, "some", "some"));
+ documents.add(createDocument("id:myspace:test:n=5678:bar", 14, 2.4f, "Yet", "More"));
documents.add(createDocument("id:myspace:test:n=2345:mail2", 15, 1.0f, "bar", "baz"));
documents.add(createDocument("id:myspace:test:g=mygroup:qux", 15, 1.0f, "quux", "corge"));
documents.add(createDocument("doc:myspace:missingint", null, 2.0f, null, "bar"));
@@ -354,16 +352,14 @@ public class DocumentSelectorTestCase {
documents.get(1).getDocument().setFieldValue("structarray", aval);
MapFieldValue<IntegerFieldValue, StringFieldValue> mval =
- new MapFieldValue<>((MapDataType)documents.get(1).getDocument().getField("mymap")
- .getDataType());
+ new MapFieldValue<>((MapDataType)documents.get(1).getDocument().getField("mymap").getDataType());
mval.put(new IntegerFieldValue(3), new StringFieldValue("a"));
mval.put(new IntegerFieldValue(5), new StringFieldValue("b"));
mval.put(new IntegerFieldValue(7), new StringFieldValue("c"));
documents.get(1).getDocument().setFieldValue("mymap", mval);
MapFieldValue<StringFieldValue, Array> amval =
- new MapFieldValue<>((MapDataType)documents.get(1).getDocument().getField("structarrmap")
- .getDataType());
+ new MapFieldValue<>((MapDataType)documents.get(1).getDocument().getField("structarrmap").getDataType());
amval.put(new StringFieldValue("foo"), aval);
Array<Struct> abval = new Array<>(documents.get(1).getDocument().getField("structarray").getDataType());
@@ -381,8 +377,7 @@ public class DocumentSelectorTestCase {
amval.put(new StringFieldValue("bar"), abval);
documents.get(1).getDocument().setFieldValue("structarrmap", amval);
- WeightedSet<StringFieldValue> wsval = new WeightedSet<>(documents.get(1).getDocument().getField("stringweightedset")
- .getDataType());
+ WeightedSet<StringFieldValue> wsval = new WeightedSet<>(documents.get(1).getDocument().getField("stringweightedset").getDataType());
wsval.add(new StringFieldValue("foo"));
wsval.add(new StringFieldValue("val1"));
wsval.add(new StringFieldValue("val2"));
@@ -396,16 +391,14 @@ public class DocumentSelectorTestCase {
Array aval2 = new Array(documents.get(2).getDocument().getField("structarray").getDataType());
documents.get(2).getDocument().setFieldValue("structarray", aval2);
- Array<IntegerFieldValue> intvals1 = new Array<>(documents.get(0).getDocument().getField("intarray")
- .getDataType());
+ Array<IntegerFieldValue> intvals1 = new Array<>(documents.get(0).getDocument().getField("intarray").getDataType());
intvals1.add(new IntegerFieldValue(12));
intvals1.add(new IntegerFieldValue(40));
intvals1.add(new IntegerFieldValue(60));
intvals1.add(new IntegerFieldValue(84));
documents.get(0).getDocument().setFieldValue("intarray", intvals1);
- Array<IntegerFieldValue> intvals2 = new Array<>(documents.get(1).getDocument().getField("intarray")
- .getDataType());
+ Array<IntegerFieldValue> intvals2 = new Array<>(documents.get(1).getDocument().getField("intarray").getDataType());
intvals2.add(new IntegerFieldValue(3));
intvals2.add(new IntegerFieldValue(56));
intvals2.add(new IntegerFieldValue(23));
@@ -485,18 +478,19 @@ public class DocumentSelectorTestCase {
assertEquals(Result.TRUE, evaluate("test.hint + 1 > 13", documents.get(1)));
// Case where field is not present (i.e. null) is defined for (in)equality comparisons, but
// not for other relations.
- assertEquals(Result.TRUE, evaluate("test.hint != 1234", documents.get(7)));
- assertEquals(Result.FALSE, evaluate("test.hint == 1234", documents.get(7)));
- assertEquals(Result.INVALID, evaluate("test.hint < 1234", documents.get(7)));
+ DocumentPut doc1234 = documents.get(6);
+ assertEquals(Result.TRUE, evaluate("test.hint != 1234", doc1234));
+ assertEquals(Result.FALSE, evaluate("test.hint == 1234", doc1234));
+ assertEquals(Result.INVALID, evaluate("test.hint < 1234", doc1234));
// Propagation of Invalid through logical operators should match C++ implementation
- assertEquals(Result.FALSE, evaluate("test.hint < 1234 and false", documents.get(7)));
- assertEquals(Result.INVALID, evaluate("test.hint < 1234 and true", documents.get(7)));
- assertEquals(Result.TRUE, evaluate("test.hint < 1234 or true", documents.get(7)));
- assertEquals(Result.INVALID, evaluate("test.hint < 1234 or false", documents.get(7)));
+ assertEquals(Result.FALSE, evaluate("test.hint < 1234 and false", doc1234));
+ assertEquals(Result.INVALID, evaluate("test.hint < 1234 and true", doc1234));
+ assertEquals(Result.TRUE, evaluate("test.hint < 1234 or true", doc1234));
+ assertEquals(Result.INVALID, evaluate("test.hint < 1234 or false", doc1234));
// Must be possible to predicate a sub-expression on the presence of a field without
// propagating up an Invalid value from the comparison.
- assertEquals(Result.FALSE, evaluate("test.hint and test.hint < 1234", documents.get(7)));
- assertEquals(Result.FALSE, evaluate("test.hint != null and test.hint < 1234", documents.get(7)));
+ assertEquals(Result.FALSE, evaluate("test.hint and test.hint < 1234", doc1234));
+ assertEquals(Result.FALSE, evaluate("test.hint != null and test.hint < 1234", doc1234));
// Document types.
assertEquals(Result.TRUE, evaluate("test", documents.get(0)));
@@ -508,46 +502,38 @@ public class DocumentSelectorTestCase {
// Field existence
assertEquals(Result.TRUE, evaluate("test.hint", documents.get(0)));
assertEquals(Result.TRUE, evaluate("test.hstring", documents.get(0)));
- assertEquals(Result.FALSE, evaluate("test.hint", documents.get(7)));
- assertEquals(Result.FALSE, evaluate("test.hstring", documents.get(7)));
- assertEquals(Result.TRUE, evaluate("not test.hint", documents.get(7)));
- assertEquals(Result.TRUE, evaluate("not test.hstring", documents.get(7)));
+ assertEquals(Result.FALSE, evaluate("test.hint", doc1234));
+ assertEquals(Result.FALSE, evaluate("test.hstring", doc1234));
+ assertEquals(Result.TRUE, evaluate("not test.hint", doc1234));
+ assertEquals(Result.TRUE, evaluate("not test.hstring", doc1234));
assertEquals(Result.TRUE, evaluate("test.hint != null", documents.get(0)));
assertEquals(Result.TRUE, evaluate("null != test.hint", documents.get(0)));
assertEquals(Result.FALSE, evaluate("test.hint == null", documents.get(0)));
assertEquals(Result.FALSE, evaluate("null == test.hint", documents.get(0)));
- assertEquals(Result.TRUE, evaluate("null == test.hint", documents.get(7)));
- assertEquals(Result.TRUE, evaluate("test.hint == null", documents.get(7)));
- assertEquals(Result.FALSE, evaluate("test.hint != null", documents.get(7)));
- assertEquals(Result.FALSE, evaluate("null != test.hint", documents.get(7)));
+ assertEquals(Result.TRUE, evaluate("null == test.hint", doc1234));
+ assertEquals(Result.TRUE, evaluate("test.hint == null", doc1234));
+ assertEquals(Result.FALSE, evaluate("test.hint != null", doc1234));
+ assertEquals(Result.FALSE, evaluate("null != test.hint", doc1234));
- assertEquals(Result.TRUE, evaluate("test.hint or true", documents.get(7)));
- assertEquals(Result.TRUE, evaluate("not test.hint and true", documents.get(7)));
- assertEquals(Result.FALSE, evaluate("not test.hint and false", documents.get(7)));
+ assertEquals(Result.TRUE, evaluate("test.hint or true", doc1234));
+ assertEquals(Result.TRUE, evaluate("not test.hint and true", doc1234));
+ assertEquals(Result.FALSE, evaluate("not test.hint and false", doc1234));
// Id values.
assertEquals(Result.TRUE, evaluate("id == \"doc:myspace:anything\"", documents.get(0)));
assertEquals(Result.TRUE, evaluate(" iD== \"doc:myspace:anything\" ", documents.get(0)));
assertEquals(Result.FALSE, evaluate("id == \"doc:myspa:nything\"", documents.get(0)));
assertEquals(Result.TRUE, evaluate("Id.scHeme == \"doc\"", documents.get(0)));
- assertEquals(Result.FALSE, evaluate("id.scheme == \"userdoc\"", documents.get(0)));
- assertEquals(Result.TRUE, evaluate("id.type == \"test\"", documents.get(5)));
- assertEquals(Result.FALSE, evaluate("id.type == \"wrong\"", documents.get(5)));
+ assertEquals(Result.FALSE, evaluate("id.scheme == \"id\"", documents.get(0)));
+ assertEquals(Result.TRUE, evaluate("id.type == \"test\"", documents.get(4)));
+ assertEquals(Result.FALSE, evaluate("id.type == \"wrong\"", documents.get(4)));
assertEquals(Result.TRUE, evaluate("Id.namespaCe == \"myspace\"", documents.get(0)));
assertEquals(Result.FALSE, evaluate("id.NaMespace == \"pace\"", documents.get(0)));
assertEquals(Result.TRUE, evaluate("id.specific == \"anything\"", documents.get(0)));
assertEquals(Result.TRUE, evaluate("id.user=1234", documents.get(2)));
- assertEquals(Result.TRUE, evaluate("id.user=1234", documents.get(4)));
- assertEquals(Result.TRUE, evaluate("id.group=\"1234\"", documents.get(4)));
- assertEquals(Result.TRUE, evaluate("id.user=2345", documents.get(5)));
- assertEquals(Result.TRUE, evaluate("id.group=\"mygroup\"", documents.get(6)));
-
- assertEquals(Result.TRUE, evaluate("id.order(31,19)=5678", documents.get(4)));
- assertEquals(Result.TRUE, evaluate("id.order(31,19)<=5678", documents.get(4)));
- assertEquals(Result.FALSE, evaluate("id.order(31,19)>5678", documents.get(4)));
- assertEquals(Result.FALSE, evaluate("id.order(25,23)==5678", documents.get(4)));
- assertEquals(Result.FALSE, evaluate("id.order(31,19)=5678", documents.get(3)));
+ assertEquals(Result.TRUE, evaluate("id.user=2345", documents.get(4)));
+ assertEquals(Result.TRUE, evaluate("id.group=\"mygroup\"", documents.get(5)));
assertError("id.user == 1234", documents.get(0), "User identifier is null.");
assertError("id.group == 1234", documents.get(3), "Group identifier is null.");
diff --git a/document/src/test/java/com/yahoo/document/select/LogicalNodeTestCase.java b/document/src/test/java/com/yahoo/document/select/LogicalNodeTestCase.java
index 25aca22b108..5e06085b8c9 100644
--- a/document/src/test/java/com/yahoo/document/select/LogicalNodeTestCase.java
+++ b/document/src/test/java/com/yahoo/document/select/LogicalNodeTestCase.java
@@ -35,11 +35,6 @@ public class LogicalNodeTestCase {
}
@Override
- public OrderingSpecification getOrdering(int order) {
- return node.getOrdering(order);
- }
-
- @Override
public void accept(Visitor visitor) {
node.accept(visitor);
}
diff --git a/document/src/test/java/com/yahoo/document/select/OrderingSpecificationTestCase.java b/document/src/test/java/com/yahoo/document/select/OrderingSpecificationTestCase.java
deleted file mode 100644
index 8c0f7402704..00000000000
--- a/document/src/test/java/com/yahoo/document/select/OrderingSpecificationTestCase.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.document.select;
-
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-
-/**
- * @author HÃ¥kon Humberset
- */
-public class OrderingSpecificationTestCase {
-
- @Test
- public void testExpressions() throws Exception {
- assertSelection("id.order(10,10) < 100", OrderingSpecification.DESCENDING,
- new OrderingSpecification(OrderingSpecification.DESCENDING, (long)99, (short)10, (short)10));
- assertSelection("id.order(10,10) <= 100", OrderingSpecification.DESCENDING,
- new OrderingSpecification(OrderingSpecification.DESCENDING, (long)100, (short)10, (short)10));
- assertSelection("id.order(10,10) > 100", OrderingSpecification.DESCENDING, null);
- assertSelection("id.order(10,10) > 100", OrderingSpecification.ASCENDING,
- new OrderingSpecification(OrderingSpecification.ASCENDING, (long)101, (short)10, (short)10));
- assertSelection("id.user==1234 AND id.order(10,10) > 100", OrderingSpecification.ASCENDING,
- new OrderingSpecification(OrderingSpecification.ASCENDING, (long)101, (short)10, (short)10));
- assertSelection("id.order(10,10) >= 100", OrderingSpecification.ASCENDING,
- new OrderingSpecification(OrderingSpecification.ASCENDING, (long)100, (short)10, (short)10));
- assertSelection("id.order(10,10) == 100", OrderingSpecification.ASCENDING,
- new OrderingSpecification(OrderingSpecification.ASCENDING, (long)100, (short)10, (short)10));
- assertSelection("id.order(10,10) = 100", OrderingSpecification.DESCENDING,
- new OrderingSpecification(OrderingSpecification.DESCENDING, (long)100, (short)10, (short)10));
- assertSelection("id.order(10,10) > 30 AND id.order(10,10) < 100", OrderingSpecification.ASCENDING,
- new OrderingSpecification(OrderingSpecification.ASCENDING, (long)31, (short)10, (short)10));
- assertSelection("id.order(10,10) > 30 AND id.order(10,10) < 100", OrderingSpecification.DESCENDING,
- new OrderingSpecification(OrderingSpecification.DESCENDING, (long)99, (short)10, (short)10));
- assertSelection("id.order(10,10) > 30 OR id.order(10,10) > 70", OrderingSpecification.ASCENDING,
- new OrderingSpecification(OrderingSpecification.ASCENDING, (long)31, (short)10, (short)10));
- assertSelection("id.order(10,10) < 30 OR id.order(10,10) < 70", OrderingSpecification.DESCENDING,
- new OrderingSpecification(OrderingSpecification.DESCENDING, (long)69, (short)10, (short)10));
- }
-
- public void assertSelection(String selection, int ordering, OrderingSpecification wanted) throws Exception {
- DocumentSelector selector = new DocumentSelector(selection);
- if (wanted != null) {
- assertEquals(wanted, selector.getOrdering(ordering));
- } else {
- assertNull(selector.getOrdering(ordering));
- }
- }
-
-}
diff --git a/document/src/tests/CMakeLists.txt b/document/src/tests/CMakeLists.txt
index 1421297b284..6458adccfd8 100644
--- a/document/src/tests/CMakeLists.txt
+++ b/document/src/tests/CMakeLists.txt
@@ -20,7 +20,6 @@ vespa_add_executable(document_gtest_runner_app TEST
gid_filter_test.cpp
globalidtest.cpp
gtest_runner.cpp
- orderingselectortest.cpp
positiontypetest.cpp
primitivefieldvaluetest.cpp
stringtokenizertest.cpp
diff --git a/document/src/tests/base/documentid_test.cpp b/document/src/tests/base/documentid_test.cpp
index adb999d7430..9994fa5b60b 100644
--- a/document/src/tests/base/documentid_test.cpp
+++ b/document/src/tests/base/documentid_test.cpp
@@ -31,19 +31,9 @@ const IdType &getAs(const DocumentId &doc_id) {
}
template <typename IdType>
-void checkUser(const string &id, int64_t user_id) {
+void checkUser(const string &id, uint64_t user_id) {
DocumentId doc_id(id);
- EXPECT_EQUAL(user_id, getAs<IdType>(doc_id).getUserId());
-}
-
-void checkOrdering(const string &id, uint64_t ordering) {
- DocumentId doc_id(id);
- EXPECT_EQUAL(ordering, getAs<OrderDocIdString>(doc_id).getOrdering());
-}
-
-void checkGroup(const string &id, const string &group) {
- DocumentId doc_id(id);
- EXPECT_EQUAL(group, getAs<GroupDocIdString>(doc_id).getGroup());
+ EXPECT_EQUAL(user_id, getAs<IdType>(doc_id).getNumber());
}
void checkType(const string &id, const string &doc_type) {
@@ -57,26 +47,6 @@ TEST("require that doc id can be parsed") {
checkId(id, IdString::DOC, ns, ns_id);
}
-TEST("require that userdoc id can be parsed") {
- const string id = "userdoc:" + ns + ":1234:" + ns_id;
- checkId(id, IdString::USERDOC, ns, ns_id);
- checkUser<UserDocIdString>(id, 1234);
-}
-
-TEST("require that orderdoc id can be parsed") {
- const string id = "orderdoc(31,19):" + ns + ":1234:1268182861:" + ns_id;
- checkId(id, IdString::ORDERDOC, ns, ns_id);
- checkUser<OrderDocIdString>(id, 1234);
- checkOrdering(id, 1268182861);
-}
-
-TEST("require that groupdoc id can be parsed") {
- const string group = "mygroup";
- const string id = "groupdoc:" + ns + ":" + group + ":" + ns_id;
- checkId(id, IdString::GROUPDOC, ns, ns_id);
- checkGroup(id, group);
-}
-
TEST("require that id id can be parsed") {
const string id = "id:" + ns + ":" + type + "::" + ns_id;
checkId(id, IdString::ID, ns, ns_id);
@@ -92,16 +62,6 @@ TEST("require that we allow ':' in namespace specific part") {
id="doc:" + ns + ":" + nss;
checkId(id, IdString::DOC, ns, nss);
- id="userdoc:" + ns + ":123:" + nss;
- checkId(id, IdString::USERDOC, ns, nss);
- checkUser<UserDocIdString>(id, 123);
-
- id="groupdoc:" + ns + ":123:" + nss;
- checkId(id, IdString::GROUPDOC, ns, nss);
- checkGroup(id, "123");
-
- id="orderdoc(5,2):" + ns + ":42:007:" + nss;
- checkId(id, IdString::ORDERDOC, ns, nss);
}
TEST("require that id id can specify location") {
@@ -137,16 +97,16 @@ TEST("require that id id location is specified by local id only by default") {
}
TEST("require that local id can be empty") {
- const string id = "userdoc:" + ns + ":1234:";
- checkId(id, IdString::USERDOC, ns, "");
- checkUser<UserDocIdString>(id, 1234);
+ const string id = "id:" + ns + ":type:n=1234:";
+ checkId(id, IdString::ID, ns, "");
+ checkUser<IdIdString>(id, 1234);
}
TEST("require that document ids can be assigned") {
- DocumentId id1("userdoc:" + ns + ":1234:");
+ DocumentId id1("id:" + ns + ":type:n=1234:");
DocumentId id2 = id1;
- checkId(id2.toString(), IdString::USERDOC, ns, "");
- checkUser<UserDocIdString>(id2.toString(), 1234);
+ checkId(id2.toString(), IdString::ID, ns, "");
+ checkUser<IdIdString>(id2.toString(), 1234);
}
TEST("require that illegal ids fail") {
@@ -208,30 +168,11 @@ TEST("require that id strings reports features (hasNumber, hasGroup)") {
EXPECT_EQUAL(42u, user.getScheme().getNumber());
EXPECT_EQUAL("foo", user.getScheme().getNamespaceSpecific());
- user = DocumentId("userdoc:ns:42:foo");
- EXPECT_TRUE(user.getScheme().hasNumber());
- EXPECT_FALSE(user.getScheme().hasGroup());
- EXPECT_EQUAL(42u, user.getScheme().getNumber());
- EXPECT_EQUAL("foo", user.getScheme().getNamespaceSpecific());
-
DocumentId group("id:ns:type:g=mygroup:foo");
EXPECT_FALSE(group.getScheme().hasNumber());
EXPECT_TRUE(group.getScheme().hasGroup());
EXPECT_EQUAL("mygroup", group.getScheme().getGroup());
EXPECT_EQUAL("foo", group.getScheme().getNamespaceSpecific());
-
- group = DocumentId("groupdoc:ns:mygroup:foo");
- EXPECT_FALSE(group.getScheme().hasNumber());
- EXPECT_TRUE(group.getScheme().hasGroup());
- EXPECT_EQUAL("mygroup", group.getScheme().getGroup());
- EXPECT_EQUAL("foo", group.getScheme().getNamespaceSpecific());
-
- DocumentId order("orderdoc(5,2):ns:42:007:foo");
- EXPECT_TRUE(order.getScheme().hasNumber());
- EXPECT_TRUE(order.getScheme().hasGroup());
- EXPECT_EQUAL(42u, order.getScheme().getNumber());
- EXPECT_EQUAL("42", order.getScheme().getGroup());
- EXPECT_EQUAL("foo", order.getScheme().getNamespaceSpecific());
}
} // namespace
diff --git a/document/src/tests/bucketselectortest.cpp b/document/src/tests/bucketselectortest.cpp
index fcd254a9fc6..d8950314a3a 100644
--- a/document/src/tests/bucketselectortest.cpp
+++ b/document/src/tests/bucketselectortest.cpp
@@ -57,11 +57,11 @@ namespace document {
TEST(BucketSelectorTest, testSimple)
{
- ASSERT_BUCKET_COUNT("id = \"userdoc:ns:123:foobar\"", 1u);
- ASSERT_BUCKET_COUNT("id = \"userdoc:ns:123:foo*\"", 0u);
- ASSERT_BUCKET_COUNT("id == \"userdoc:ns:123:f?oo*\"", 1u);
- ASSERT_BUCKET_COUNT("id =~ \"userdoc:ns:123:foo*\"", 0u);
- ASSERT_BUCKET_COUNT("id =~ \"userdoc:ns:123:foo?\"", 0u);
+ ASSERT_BUCKET_COUNT("id = \"id:ns:testdoc:n=123:foobar\"", 1u);
+ ASSERT_BUCKET_COUNT("id = \"id:ns:testdoc:n=123:foo*\"", 0u);
+ ASSERT_BUCKET_COUNT("id == \"id:ns:testdoc:n=123:f?oo*\"", 1u);
+ ASSERT_BUCKET_COUNT("id =~ \"id:ns:testdoc:n=123:foo*\"", 0u);
+ ASSERT_BUCKET_COUNT("id =~ \"id:ns:testdoc:n=123:foo?\"", 0u);
ASSERT_BUCKET_COUNT("id.user = 123", 1u);
ASSERT_BUCKET_COUNT("id.user == 123", 1u);
ASSERT_BUCKET_COUNT("id.group = \"yahoo.com\"", 1u);
@@ -78,7 +78,7 @@ TEST(BucketSelectorTest, testSimple)
ASSERT_BUCKET_COUNT("(testdoctype1 and id.bucket=0)", 1u);
// Check that the correct buckets is found
- ASSERT_BUCKET("id = \"userdoc:ns:123:foobar\"",
+ ASSERT_BUCKET("id = \"id:ns:testdoc:n=123:foobar\"",
document::BucketId(58, 123));
ASSERT_BUCKET("id.bucket == 0x4000000000000258", document::BucketId(16, 600));
diff --git a/document/src/tests/buckettest.cpp b/document/src/tests/buckettest.cpp
index 3de6d02b4b3..72e0a38c749 100644
--- a/document/src/tests/buckettest.cpp
+++ b/document/src/tests/buckettest.cpp
@@ -82,18 +82,12 @@ TEST(BucketTest, testBucketGeneration)
DocumentId doc1("doc:ns:spec");
DocumentId doc2("doc:ns2:spec");
DocumentId doc3("doc:ns:spec2");
- DocumentId userDoc1("userdoc:ns:18:spec");
- DocumentId userDoc2("userdoc:ns2:18:spec2");
- DocumentId userDoc3("userdoc:ns:19:spec");
- DocumentId groupDoc1("groupdoc:ns:yahoo.com:spec");
- DocumentId groupDoc2("groupdoc:ns2:yahoo.com:spec2");
- DocumentId groupDoc3("groupdoc:ns:yahoo:spec");
- DocumentId orderDoc1("orderdoc(31,19):ns:13:1268182861:foo");
- DocumentId orderDoc2("orderdoc(31,19):ns:13:1205110861:foo");
- DocumentId orderDoc3("orderdoc(31,19):ns:13:1205715661:foo");
- DocumentId orderDoc4("orderdoc(4,0):ns:13:2:foo");
- DocumentId orderDoc5("orderdoc(4,0):ns:13:4:foo");
- DocumentId orderDoc6("orderdoc(4,0):ns:13:11:foo");
+ DocumentId userDoc1("id:ns:mytype:n=18:spec");
+ DocumentId userDoc2("id:ns2:mytype:n=18:spec2");
+ DocumentId userDoc3("id:ns:mytype:n=19:spec");
+ DocumentId groupDoc1("id:ns:mytype:g=yahoo.com:spec");
+ DocumentId groupDoc2("id:ns2:mytype:g=yahoo.com:spec2");
+ DocumentId groupDoc3("id:ns:mytype:g=yahoo:spec");
BucketId docBucket1(factory.getBucketId(doc1));
BucketId docBucket2(factory.getBucketId(doc2));
@@ -104,24 +98,10 @@ TEST(BucketTest, testBucketGeneration)
BucketId groupDocBucket1(factory.getBucketId(groupDoc1));
BucketId groupDocBucket2(factory.getBucketId(groupDoc2));
BucketId groupDocBucket3(factory.getBucketId(groupDoc3));
- BucketId orderDocBucket1(factory.getBucketId(orderDoc1));
- BucketId orderDocBucket2(factory.getBucketId(orderDoc2));
- BucketId orderDocBucket3(factory.getBucketId(orderDoc3));
- BucketId orderDocBucket4(factory.getBucketId(orderDoc4));
- BucketId orderDocBucket5(factory.getBucketId(orderDoc5));
- BucketId orderDocBucket6(factory.getBucketId(orderDoc6));
- EXPECT_EQ(Hex(0xe99703f200000012ull), Hex(userDocBucket1.getRawId()));
- EXPECT_EQ(Hex(0xebfa518a00000012ull), Hex(userDocBucket2.getRawId()));
- EXPECT_EQ(Hex(0xeac1850800000013ull), Hex(userDocBucket3.getRawId()));
-
- EXPECT_EQ(Hex(0xeae764e90000000dull), Hex(orderDocBucket1.getRawId()));
- EXPECT_EQ(Hex(0xeacb85f10000000dull), Hex(orderDocBucket2.getRawId()));
- EXPECT_EQ(Hex(0xea68ddf10000000dull), Hex(orderDocBucket3.getRawId()));
-
- EXPECT_EQ(Hex(0xe87526540000000dull), Hex(orderDocBucket4.getRawId()));
- EXPECT_EQ(Hex(0xea59f8f20000000dull), Hex(orderDocBucket5.getRawId()));
- EXPECT_EQ(Hex(0xe9eb703d0000000dull), Hex(orderDocBucket6.getRawId()));
+ EXPECT_EQ(Hex(0xeb3089a300000012ull), Hex(userDocBucket1.getRawId()));
+ EXPECT_EQ(Hex(0xe87e777b00000012ull), Hex(userDocBucket2.getRawId()));
+ EXPECT_EQ(Hex(0xe80d16fc00000013ull), Hex(userDocBucket3.getRawId()));
userDocBucket1.setUsedBits(16);
EXPECT_EQ(Hex(0x4000000000000012ull), Hex(userDocBucket1.getId()));
@@ -130,9 +110,9 @@ TEST(BucketTest, testBucketGeneration)
userDocBucket3.setUsedBits(16);
EXPECT_EQ(Hex(0x4000000000000013ull), Hex(userDocBucket3.getId()));
- EXPECT_EQ(Hex(0xe90ce4b09a1acd50ull), Hex(groupDocBucket1.getRawId()));
- EXPECT_EQ(Hex(0xe9cedaa49a1acd50ull), Hex(groupDocBucket2.getRawId()));
- EXPECT_EQ(Hex(0xe8cdb18bafe81f24ull), Hex(groupDocBucket3.getRawId()));
+ EXPECT_EQ(Hex(0xeb82f2be9a1acd50ull), Hex(groupDocBucket1.getRawId()));
+ EXPECT_EQ(Hex(0xebff6e379a1acd50ull), Hex(groupDocBucket2.getRawId()));
+ EXPECT_EQ(Hex(0xe91b9600afe81f24ull), Hex(groupDocBucket3.getRawId()));
groupDocBucket1.setUsedBits(16);
EXPECT_EQ(Hex(0x400000000000cd50ull), Hex(groupDocBucket1.getId()));
diff --git a/document/src/tests/cpp-globalidbucketids.txt b/document/src/tests/cpp-globalidbucketids.txt
index 33dca454d3b..40bb505ad16 100644
--- a/document/src/tests/cpp-globalidbucketids.txt
+++ b/document/src/tests/cpp-globalidbucketids.txt
@@ -1,12 +1,6 @@
doc:ns:specific - gid(0x2c01a21163cb7d0ce85fddd6) - BucketId(0xeadd5fe811a2012c)
doc:another:specific - gid(0xcd2ba528d1135e40605ce372) - BucketId(0xeae35c6028a52bcd)
doc:ns:another - gid(0x1d5324270601e76a7a1f58b7) - BucketId(0xeb581f7a2724531d)
-userdoc:ns:100:specific - gid(0x64000000e7bd2a0d13c71935) - BucketId(0xe919c71300000064)
-userdoc:np:100:another - gid(0x64000000102745c9ceec3238) - BucketId(0xe832ecce00000064)
-userdoc:ns:101:specific - gid(0x6500000026238735e9cd9bb8) - BucketId(0xe89bcde900000065)
-groupdoc:ns:agroup:specific - gid(0x3272feb9fb729a50be795117) - BucketId(0xeb5179beb9fe7232)
-groupdoc:np:agroup:another - gid(0x3272feb93ff5e65f3cf4aba9) - BucketId(0xe9abf43cb9fe7232)
-groupdoc:ns:another:specific - gid(0xb32d73e51ae730d4fa104396) - BucketId(0xea4310fae5732db3)
doc:ns:0 - gid(0x87817cf2f6d05976505e74be) - BucketId(0xea745e50f27c8187)
doc:ns:1 - gid(0x911a03b253cb5b1c283b2024) - BucketId(0xe8203b28b2031a91)
doc:ns:2 - gid(0x1d82e56be428cda364ed6875) - BucketId(0xe968ed646be5821d)
diff --git a/document/src/tests/documentidtest.cpp b/document/src/tests/documentidtest.cpp
index 198a8ce5e15..9befac431f6 100644
--- a/document/src/tests/documentidtest.cpp
+++ b/document/src/tests/documentidtest.cpp
@@ -26,12 +26,6 @@ TEST(DocumentIdTest, generateJavaComplianceFile)
writeGlobalIdBucketId(ost, "doc:ns:specific");
writeGlobalIdBucketId(ost, "doc:another:specific");
writeGlobalIdBucketId(ost, "doc:ns:another");
- writeGlobalIdBucketId(ost, "userdoc:ns:100:specific");
- writeGlobalIdBucketId(ost, "userdoc:np:100:another");
- writeGlobalIdBucketId(ost, "userdoc:ns:101:specific");
- writeGlobalIdBucketId(ost, "groupdoc:ns:agroup:specific");
- writeGlobalIdBucketId(ost, "groupdoc:np:agroup:another");
- writeGlobalIdBucketId(ost, "groupdoc:ns:another:specific");
for (uint32_t i=0; i<20; ++i) {
std::ostringstream ost2;
ost2 << i;
@@ -120,8 +114,7 @@ TEST(DocumentIdTest, testDocGlobalId)
DocumentId did(id);
unsigned char key[16];
- fastc_md5sum(reinterpret_cast<const unsigned char*>(id.c_str()),
- id.size(), key);
+ fastc_md5sum(reinterpret_cast<const unsigned char*>(id.c_str()), id.size(), key);
EXPECT_EQ(GlobalId(key), did.getGlobalId());
}
@@ -130,10 +123,10 @@ TEST(DocumentIdTest, freestandingLocationFromGroupNameFuncMatchesIdLocation)
{
EXPECT_EQ(
DocumentId("id::foo:g=zoid:bar").getScheme().getLocation(),
- GroupDocIdString::locationFromGroupName("zoid"));
+ IdString::makeLocation("zoid"));
EXPECT_EQ(
DocumentId("id::bar:g=doink:baz").getScheme().getLocation(),
- GroupDocIdString::locationFromGroupName("doink"));
+ IdString::makeLocation("doink"));
}
} // document
diff --git a/document/src/tests/documentselectparsertest.cpp b/document/src/tests/documentselectparsertest.cpp
index 9ba38f5ca6b..97921109c60 100644
--- a/document/src/tests/documentselectparsertest.cpp
+++ b/document/src/tests/documentselectparsertest.cpp
@@ -199,7 +199,7 @@ DocumentSelectParserTest::createDocs()
}
_doc.push_back(createDoc(
- "testdoctype1", "userdoc:myspace:1234:footype1", 15, 1.0, "some", "some", 0)); // DOC 2
+ "testdoctype1", "id:myspace:testdoctype1:n=1234:footype1", 15, 1.0, "some", "some", 0)); // DOC 2
// Add empty struct and array
{
StructFieldValue sval(_doc.back()->getField("mystruct").getDataType());
@@ -209,32 +209,26 @@ DocumentSelectParserTest::createDocs()
_doc.back()->setValue("structarray", aval);
}
_doc.push_back(createDoc(
- "testdoctype1", "groupdoc:myspace:yahoo:bar", 14, 2.4, "Yet", "\xE4\xB8\xBA\xE4\xBB\x80", 0)); // DOC 3
+ "testdoctype1", "id:myspace:testdoctype1:g=yahoo:bar", 14, 2.4, "Yet", "\xE4\xB8\xBA\xE4\xBB\x80", 0)); // DOC 3
_doc.push_back(createDoc(
"testdoctype2", "doc:myspace:inheriteddoc", 10, 1.4, "inherited", "")); // DOC 4
_doc.push_back(createDoc(
- "testdoctype1", "userdoc:footype:123456789:aardvark",
+ "testdoctype1", "id:footype:testdoctype1:n=123456789:aardvark",
10, 1.4, "inherited", "", 0)); // DOC 5
_doc.push_back(createDoc(
- "testdoctype1", "userdoc:footype:1234:highlong",
+ "testdoctype1", "id:footype:testdoctype1:n=1234:highlong",
10, 1.4, "inherited", "", 2651257743)); // DOC 6
_doc.push_back(createDoc(
- "testdoctype1", "userdoc:footype:1234:highlong",
+ "testdoctype1", "id:footype:testdoctype1:n=1234:highlong",
10, 1.4, "inherited", "", -2651257743)); // DOC 7
- _doc.push_back(createDoc( // DOC 8
- "testdoctype1", "orderdoc(4,4):footype:1234:12:highlong",
- 10, 1.4, "inherited", "", -2651257743));
- _doc.push_back(createDoc( // DOC 9
- "testdoctype1", "orderdoc(4,4):footype:mygroup:12:highlong",
- 10, 1.4, "inherited", "", -2651257743));
- _doc.push_back(createDoc( // DOC 10. As DOC 0 but with version 2.
+ _doc.push_back(createDoc( // DOC 8. As DOC 0 but with version 2.
"testdoctype1", "doc:myspace:anything", 24, 2.0, "foo", "bar", 0));
_doc.push_back(createDoc(
"testdoctype1", "id:footype:testdoctype1:n=12345:foo",
- 10, 1.4, "inherited", "", 42)); // DOC 11
+ 10, 1.4, "inherited", "", 42)); // DOC 9
_doc.push_back(createDoc(
"testdoctype1", "id:myspace:testdoctype1:g=xyzzy:foo",
- 10, 1.4, "inherited", "", 42)); // DOC 12
+ 10, 1.4, "inherited", "", 42)); // DOC 10
_update.clear();
_update.push_back(createUpdate(
@@ -242,9 +236,9 @@ DocumentSelectParserTest::createDocs()
_update.push_back(createUpdate(
"testdoctype1", "doc:anotherspace:foo", 10, "foo"));
_update.push_back(createUpdate(
- "testdoctype1", "userdoc:myspace:1234:footype1", 0, "foo"));
+ "testdoctype1", "id:myspace:testdoctype1:n=1234:footype1", 0, "foo"));
_update.push_back(createUpdate(
- "testdoctype1", "groupdoc:myspace:yahoo:bar", 3, "\xE4\xBA\xB8\xE4\xBB\x80"));
+ "testdoctype1", "id:myspace:testdoctype1:g=yahoo:bar", 3, "\xE4\xBA\xB8\xE4\xBB\x80"));
_update.push_back(createUpdate(
"testdoctype2", "doc:myspace:inheriteddoc", 10, "bar"));
}
@@ -398,23 +392,22 @@ TEST_F(DocumentSelectParserTest, testParseTerminals)
verifyParse("_test_doctype3_._only_in_child_ == 0");
// Test document id with simple parser.
- verifySimpleParse("id == \"userdoc:ns:mytest\"");
+ verifySimpleParse("id == \"id:ns:mytest\"");
verifySimpleParse("id.namespace == \"myspace\"");
- verifySimpleParse("id.scheme == \"userdoc\"");
+ verifySimpleParse("id.scheme == \"id\"");
verifySimpleParse("id.type == \"testdoctype1\"");
verifySimpleParse("id.group == \"yahoo.com\"");
verifySimpleParse("id.user == 1234");
verifySimpleParse("id.user == 0x12456ab", "id.user == 19158699");
// Test document id
- verifyParse("id == \"userdoc:ns:mytest\"");
+ verifyParse("id == \"id:ns:mytest\"");
verifyParse("id.namespace == \"myspace\"");
- verifyParse("id.scheme == \"userdoc\"");
+ verifyParse("id.scheme == \"id\"");
verifyParse("id.type == \"testdoctype1\"");
verifyParse("id.user == 1234");
verifyParse("id.user == 0x12456ab", "id.user == 19158699");
verifyParse("id.group == \"yahoo.com\"");
- verifyParse("id.order(10,5) < 100");
verifyParse("id.specific == \"mypart\"");
verifyParse("id.bucket == 1234");
@@ -633,9 +626,9 @@ void DocumentSelectParserTest::testOperators2()
PARSEI(" iD== \"doc:myspace:anything\" ", *_doc[0], True);
PARSEI("id == \"doc:myspa:nything\"", *_doc[0], False);
PARSEI("Id.scHeme == \"doc\"", *_doc[0], True);
- PARSEI("id.scheme == \"userdoc\"", *_doc[0], False);
- PARSEI("id.type == \"testdoctype1\"", *_doc[11], True);
- PARSEI("id.type == \"wrong_type\"", *_doc[11], False);
+ PARSEI("id.scheme == \"id\"", *_doc[0], False);
+ PARSEI("id.type == \"testdoctype1\"", *_doc[9], True);
+ PARSEI("id.type == \"wrong_type\"", *_doc[9], False);
PARSEI("id.type == \"unknown\"", *_doc[0], Invalid);
PARSEI("Id.namespaCe == \"myspace\"", *_doc[0], True);
PARSEI("id.NaMespace == \"pace\"", *_doc[0], False);
@@ -645,14 +638,8 @@ void DocumentSelectParserTest::testOperators2()
PARSEI("id.group == 1234", *_doc[3], Invalid);
PARSEI("id.group == \"yahoo\"", *_doc[3], True);
PARSEI("id.bucket == 1234", *_doc[0], False);
- PARSEI("id.order(4,4) == 12", *_doc[8], True);
- PARSEI("id.order(4,4) < 20", *_doc[8], True);
- PARSEI("id.order(4,4) > 12", *_doc[8], False);
- PARSEI("id.order(5,5) <= 12", *_doc[8], Invalid);
- PARSEI("id.order(4,4) <= 12", *_doc[8], True);
- PARSEI("id.order(4,4) == 12", *_doc[0], Invalid);
- PARSEI("id.user=12345", *_doc[11], True);
- PARSEI("id.group == \"xyzzy\"", *_doc[12], True);
+ PARSEI("id.user=12345", *_doc[9], True);
+ PARSEI("id.group == \"xyzzy\"", *_doc[10], True);
}
void DocumentSelectParserTest::testOperators3()
@@ -684,12 +671,8 @@ void DocumentSelectParserTest::testOperators3()
std::string gidmatcher = "id.gid == \"" + _doc[0]->getId().getGlobalId().toString() + "\"";
PARSEI(gidmatcher, *_doc[0], True);
- PARSEI("id.user=123456789 and id = \"userdoc:footype:123456789:aardvark\"", *_doc[5], True);
- PARSEI("id == \"userdoc:footype:123456789:badger\"", *_doc[5], False);
-
- PARSEI("id.user = 1234", *_doc[8], True);
- PARSEI("id.group == \"1234\"", *_doc[8], True);
- PARSEI("id.group == \"mygroup\"", *_doc[9], True);
+ PARSEI("id.user=123456789 and id = \"id:footype:testdoctype1:n=123456789:aardvark\"", *_doc[5], True);
+ PARSEI("id == \"id:footype:testdoctype1:n=123456789:badger\"", *_doc[5], False);
}
void DocumentSelectParserTest::testOperators4()
@@ -734,10 +717,10 @@ void DocumentSelectParserTest::testOperators5()
PARSEI("(0.234).lowercase() == 123", *_doc[0], Invalid);
PARSE("\"foo\".hash() == 123", *_doc[0], False);
PARSEI("(234).hash() == 123", *_doc[0], False);
- PARSE("now() > 1311862500", *_doc[10], True);
- PARSE("now() < 1611862500", *_doc[10], True);
- PARSE("now() < 1311862500", *_doc[10], False);
- PARSE("now() > 1611862500", *_doc[10], False);
+ PARSE("now() > 1311862500", *_doc[8], True);
+ PARSE("now() < 1611862500", *_doc[8], True);
+ PARSE("now() < 1311862500", *_doc[8], False);
+ PARSE("now() > 1611862500", *_doc[8], False);
// Arithmetics
PARSEI("id.specific.hash() % 10 = 8", *_doc[0], True);
@@ -1129,7 +1112,7 @@ void DocumentSelectParserTest::testDocumentUpdates2()
PARSEI(" iD== \"doc:myspace:anything\" ", *_update[0], True);
PARSEI("id == \"doc:myspa:nything\"", *_update[0], False);
PARSEI("Id.scHeme == \"doc\"", *_update[0], True);
- PARSEI("id.scheme == \"userdoc\"", *_update[0], False);
+ PARSEI("id.scheme == \"id\"", *_update[0], False);
PARSEI("Id.namespaCe == \"myspace\"", *_update[0], True);
PARSEI("id.NaMespace == \"pace\"", *_update[0], False);
PARSEI("id.specific == \"anything\"", *_update[0], True);
@@ -1199,7 +1182,7 @@ TEST_F(DocumentSelectParserTest, testDocumentIdsInRemoves)
{
PARSE("testdoctype1", DocumentId("id:ns:testdoctype1::1"), True);
PARSE("testdoctype1", DocumentId("id:ns:null::1"), False);
- PARSE("testdoctype1", DocumentId("userdoc:testdoctype1:1234:1"), False);
+ PARSE("testdoctype1", DocumentId("id::testdoctype2:n=1234:1"), False);
PARSE("testdoctype1.headerval", DocumentId("id:ns:testdoctype1::1"), Invalid);
// FIXME: Should ideally be False. As long as there always is an AND node with doctype in a selection expression
// we won't end up sending removes using the wrong route.
@@ -1409,12 +1392,11 @@ TEST_F(DocumentSelectParserTest, test_token_used_as_ident_preserves_casing)
createDocs();
using namespace std::string_literals;
- // TYPE, SCHEME, ORDER etc are tokens that may also be used as identifiers
+ // TYPE, SCHEME etc are tokens that may also be used as identifiers
// without introducing parsing ambiguities. In this context their original
// casing should be preserved.
EXPECT_EQ("(== (VAR Type) 123)"s, parse_to_tree("$Type == 123"));
EXPECT_EQ("(== (VAR giD) 123)"s, parse_to_tree("$giD == 123"));
- EXPECT_EQ("(== (VAR ORDER) 123)"s, parse_to_tree("$ORDER == 123"));
}
TEST_F(DocumentSelectParserTest, test_ambiguous_field_spec_expression_is_handled_correctly)
diff --git a/document/src/tests/documenttestcase.cpp b/document/src/tests/documenttestcase.cpp
index 5521fac58e8..089ab5a2a2d 100644
--- a/document/src/tests/documenttestcase.cpp
+++ b/document/src/tests/documenttestcase.cpp
@@ -388,7 +388,7 @@ TEST(DocumentTest, testSimpleUsage)
std::unique_ptr<ByteBuffer> buffer(value.serialize());
buffer->flip();
Document value2(*repo.getDocumentType("test"),
- DocumentId("userdoc::3:foo"));
+ DocumentId("id::test:n=3:foo"));
EXPECT_TRUE(value != value2);
value2.deserialize(repo, *buffer);
EXPECT_TRUE(value2.hasValue(intF));
diff --git a/document/src/tests/globalidtest.cpp b/document/src/tests/globalidtest.cpp
index c6c974011ce..ab2af875e9f 100644
--- a/document/src/tests/globalidtest.cpp
+++ b/document/src/tests/globalidtest.cpp
@@ -84,18 +84,17 @@ namespace {
TEST_F(GlobalIdTest, testBucketIdConversion)
{
- verifyDocumentId("userdoc:ns:1:abc");
- verifyDocumentId("userdoc:ns:1000:abc");
- verifyDocumentId("userdoc:hsgf:18446744073700000000:dfdfsdfg");
- verifyDocumentId("groupdoc:ns:somegroup:hmm");
+ verifyDocumentId("id:ns:test:n=1:abc");
+ verifyDocumentId("id:ns:test:n=1000:abc");
+ verifyDocumentId("id:hsgf:test:n=18446744073700000000:dfdfsdfg");
+ verifyDocumentId("id:ns:mytype:g=somegroup:hmm");
verifyDocumentId("doc::test");
verifyDocumentId("doc:myns:http://foo.bar");
verifyDocumentId("doc:jsrthsdf:a234aleingzldkifvasdfgadf");
}
void
-GlobalIdTest::verifyGlobalIdRange(const std::vector<DocumentId>& ids,
- uint32_t countBits)
+GlobalIdTest::verifyGlobalIdRange(const std::vector<DocumentId>& ids, uint32_t countBits)
{
BucketIdFactory factory;
for (uint32_t i=0, n=ids.size(); i<n; ++i) {
@@ -158,12 +157,11 @@ TEST_F(GlobalIdTest, testGidRangeConversion)
switch (scheme) {
case 0: ost << "doc:" << name_space.str() << ":";
break;
- case 1: ost << "userdoc:" << name_space.str() << ":";
+ case 1: ost << "id:" << name_space.str() << ":mytype:n=";
ost << randomizer.nextUint32() << ":";
break;
- case 2: ost << "groupdoc:" << name_space.str() << ":";
- for (uint32_t i=0, n=randomizer.nextUint32(1, 10); i<n; ++i)
- {
+ case 2: ost << "id:" << name_space.str() << ":mytype:g=";
+ for (uint32_t i=0, n=randomizer.nextUint32(1, 10); i<n; ++i) {
ost << (char) ('a' + randomizer.nextUint32(0, 25));
}
ost << ":";
diff --git a/document/src/tests/orderingselectortest.cpp b/document/src/tests/orderingselectortest.cpp
deleted file mode 100644
index bb3fe10f198..00000000000
--- a/document/src/tests/orderingselectortest.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include <vespa/document/select/orderingselector.h>
-#include <vespa/document/bucket/bucketidfactory.h>
-#include <vespa/document/base/testdocrepo.h>
-
-#include <vespa/document/select/parser.h>
-#include <memory>
-#include <gtest/gtest.h>
-
-using document::select::Node;
-using document::select::Parser;
-
-namespace document {
-
-#define ASSERT_MATCH(expression, ordering, correct) \
-{ \
- BucketIdFactory idfactory; \
- TestDocRepo repo; \
- OrderingSelector selector; \
- Parser parser(repo.getTypeRepo(), idfactory); \
- std::unique_ptr<Node> node(parser.parse(expression)); \
- ASSERT_TRUE(node); \
- OrderingSpecification::UP spec = selector.select(*node, ordering); \
- if (spec.get() == NULL && correct.get() == NULL) { \
- return;\
- }\
- if (spec.get() == NULL && correct.get() != NULL) { \
- FAIL() << "Was NULL, expected " << correct->toString(); \
- } \
- if (correct.get() == NULL && spec.get() != NULL) { \
- FAIL() << "Expected NULL, was " << spec->toString(); \
- } \
- EXPECT_EQ(*correct, *spec); \
-}
-
-TEST(OrderingSelectorTest, testSimple)
-{
- ASSERT_MATCH("id.order(10,10) < 100", OrderingSpecification::DESCENDING,
- OrderingSpecification::UP(
- new OrderingSpecification(OrderingSpecification::DESCENDING, (long)99, (short)10, (short)10)));
-
- ASSERT_MATCH("id.order(10,10) <= 100", OrderingSpecification::DESCENDING,
- OrderingSpecification::UP(
- new OrderingSpecification(OrderingSpecification::DESCENDING, (long)100, (short)10, (short)10)));
-
- ASSERT_MATCH("id.order(10,10) > 100", OrderingSpecification::DESCENDING, OrderingSpecification::UP());
-
- ASSERT_MATCH("id.order(10,10) > 100", OrderingSpecification::ASCENDING,
- OrderingSpecification::UP(
- new OrderingSpecification(OrderingSpecification::ASCENDING, (long)101, (short)10, (short)10)));
-
- ASSERT_MATCH("id.user==1234 AND id.order(10,10) > 100", OrderingSpecification::ASCENDING,
- OrderingSpecification::UP(
- new OrderingSpecification(OrderingSpecification::ASCENDING, (long)101, (short)10, (short)10)));
-
- ASSERT_MATCH("id.order(10,10) >= 100", OrderingSpecification::ASCENDING,
- OrderingSpecification::UP(
- new OrderingSpecification(OrderingSpecification::ASCENDING, (long)100, (short)10, (short)10)));
-
- ASSERT_MATCH("id.order(10,10) == 100", OrderingSpecification::ASCENDING,
- OrderingSpecification::UP(
- new OrderingSpecification(OrderingSpecification::ASCENDING, (long)100, (short)10, (short)10)));
-
- ASSERT_MATCH("id.order(10,10) = 100", OrderingSpecification::DESCENDING,
- OrderingSpecification::UP(
- new OrderingSpecification(OrderingSpecification::DESCENDING, (long)100, (short)10, (short)10)));
-
- ASSERT_MATCH("id.order(10,10) > 30 AND id.order(10,10) < 100", OrderingSpecification::ASCENDING,
- OrderingSpecification::UP(
- new OrderingSpecification(OrderingSpecification::ASCENDING, (long)31, (short)10, (short)10)));
-
- ASSERT_MATCH("id.order(10,10) > 30 AND id.order(10,10) < 100", OrderingSpecification::DESCENDING,
- OrderingSpecification::UP(
- new OrderingSpecification(OrderingSpecification::DESCENDING, (long)99, (short)10, (short)10)));
-
- ASSERT_MATCH("id.order(10,10) > 30 OR id.order(10,10) > 70", OrderingSpecification::ASCENDING,
- OrderingSpecification::UP(
- new OrderingSpecification(OrderingSpecification::ASCENDING, (long)31, (short)10, (short)10)));
-
- ASSERT_MATCH("id.order(10,10) < 30 OR id.order(10,10) < 70", OrderingSpecification::DESCENDING,
- OrderingSpecification::UP(
- new OrderingSpecification(OrderingSpecification::DESCENDING, (long)69, (short)10, (short)10)));
-}
-
-
-}
diff --git a/document/src/vespa/document/base/idstring.cpp b/document/src/vespa/document/base/idstring.cpp
index 223baa6fd8d..5166b03428e 100644
--- a/document/src/vespa/document/base/idstring.cpp
+++ b/document/src/vespa/document/base/idstring.cpp
@@ -276,24 +276,15 @@ union LocationUnion {
IdString::LocationType _location[2];
};
-IdString::LocationType makeLocation(stringref s) {
- LocationUnion location;
- fastc_md5sum(reinterpret_cast<const unsigned char*>(s.data()), s.size(), location._key);
- return location._location[0];
-}
-
uint64_t parseNumber(stringref number) {
char* errPos = NULL;
errno = 0;
uint64_t n = strtoul(number.data(), &errPos, 10);
if (*errPos) {
- throw IdParseException(
- "'n'-value must be a 64-bit number. It was " +
- number, VESPA_STRLOC);
+ throw IdParseException("'n'-value must be a 64-bit number. It was " + number, VESPA_STRLOC);
}
if (errno == ERANGE) {
- throw IdParseException("'n'-value out of range "
- "(" + number + ")", VESPA_STRLOC);
+ throw IdParseException("'n'-value out of range (" + number + ")", VESPA_STRLOC);
}
return n;
}
@@ -301,8 +292,7 @@ uint64_t parseNumber(stringref number) {
void setLocation(IdString::LocationType &loc, IdString::LocationType val,
bool &has_set_location, stringref key_values) {
if (has_set_location) {
- throw IdParseException("Illegal key combination in "
- + key_values);
+ throw IdParseException("Illegal key combination in " + key_values);
}
loc = val;
has_set_location = true;
@@ -311,6 +301,13 @@ void setLocation(IdString::LocationType &loc, IdString::LocationType val,
} // namespace
+IdString::LocationType
+IdString::makeLocation(stringref s) {
+ LocationUnion location;
+ fastc_md5sum(reinterpret_cast<const unsigned char*>(s.data()), s.size(), location._key);
+ return location._location[0];
+}
+
IdIdString::IdIdString(stringref id)
: IdString(4, 3, id),
_location(0),
diff --git a/document/src/vespa/document/base/idstring.h b/document/src/vespa/document/base/idstring.h
index c458e7a62f4..c77289fd659 100644
--- a/document/src/vespa/document/base/idstring.h
+++ b/document/src/vespa/document/base/idstring.h
@@ -26,6 +26,7 @@ public:
/** @throws document::IdParseException If parsing of id scheme failed. */
static IdString::UP createIdString(vespalib::stringref id) { return createIdString(id.data(), id.size()); }
static IdString::UP createIdString(const char *id, size_t sz);
+ static LocationType makeLocation(vespalib::stringref s);
~IdString() {}
IdString* clone() const override = 0;
diff --git a/document/src/vespa/document/select/CMakeLists.txt b/document/src/vespa/document/select/CMakeLists.txt
index bc73498622d..a4536f82c21 100644
--- a/document/src/vespa/document/select/CMakeLists.txt
+++ b/document/src/vespa/document/select/CMakeLists.txt
@@ -25,7 +25,6 @@ vespa_add_library(document_select OBJECT
gid_filter.cpp
invalidconstant.cpp
operator.cpp
- orderingselector.cpp
orderingspecification.cpp
result.cpp
resultset.cpp
diff --git a/document/src/vespa/document/select/gid_filter.cpp b/document/src/vespa/document/select/gid_filter.cpp
index 71a57a0886a..a9a6b8e9bc7 100644
--- a/document/src/vespa/document/select/gid_filter.cpp
+++ b/document/src/vespa/document/select/gid_filter.cpp
@@ -122,8 +122,7 @@ private:
uint32_t location_from_string_literal_node(
const StringValueNode& node) const
{
- auto full_location = GroupDocIdString::locationFromGroupName(
- node.getValue());
+ auto full_location = IdString::makeLocation(node.getValue());
return truncate_location(full_location);
}
diff --git a/document/src/vespa/document/select/grammar/lexer.ll b/document/src/vespa/document/select/grammar/lexer.ll
index 6483b5e8534..bd011c8ebf6 100644
--- a/document/src/vespa/document/select/grammar/lexer.ll
+++ b/document/src/vespa/document/select/grammar/lexer.ll
@@ -129,7 +129,6 @@ SQ_STRING \'(\\([\\tnfr']|x{HEXDIGIT}{2})|[^'\\])*\'
(?i:"bucket") STRING_TOKEN(BUCKET)
(?i:"gid") STRING_TOKEN(GID)
(?i:"type") STRING_TOKEN(TYPE)
-(?i:"order") STRING_TOKEN(ORDER)
"now\(\)" NAMED_TOKEN(NOW_FUNC) /* This _is_ case-sensitive in the legacy parser */
diff --git a/document/src/vespa/document/select/grammar/parser.yy b/document/src/vespa/document/select/grammar/parser.yy
index f96bd50378f..76b7cb7eeba 100644
--- a/document/src/vespa/document/select/grammar/parser.yy
+++ b/document/src/vespa/document/select/grammar/parser.yy
@@ -73,7 +73,7 @@
%token <string_val> FP_MAP_LOOKUP FP_ARRAY_LOOKUP
%token <double_val> FLOAT
%token <i64_val> INTEGER
-%token <string_val> USER GROUP SCHEME NAMESPACE SPECIFIC BUCKET GID TYPE ORDER
+%token <string_val> USER GROUP SCHEME NAMESPACE SPECIFIC BUCKET GID TYPE
%type <string_val> ident mangled_ident
%type <abstract_node> bool_
@@ -84,7 +84,7 @@
%type <field_expr_node> field_spec
%destructor { delete $$; } IDENTIFIER STRING FP_MAP_LOOKUP FP_ARRAY_LOOKUP
-%destructor { delete $$; } USER GROUP SCHEME NAMESPACE SPECIFIC BUCKET GID TYPE ORDER
+%destructor { delete $$; } USER GROUP SCHEME NAMESPACE SPECIFIC BUCKET GID TYPE
%destructor { delete $$; } null_ bool_ number string doc_type ident id_arg id_spec
%destructor { delete $$; } variable mangled_ident field_spec value arith_expr
%destructor { delete $$; } comparison leaf logical_expr expression
@@ -227,7 +227,6 @@ ident
| SPECIFIC { $$ = $1; }
| BUCKET { $$ = $1; }
| GID { $$ = $1; }
- | ORDER { $$ = $1; }
;
id_arg
@@ -245,7 +244,6 @@ id_spec
: ID %prec NON_DOT { $$ = new IdValueNode(bucket_id_factory, "id", ""); } /* Prefer shifting instead of reducing */
| ID "." id_arg { $$ = new IdValueNode(bucket_id_factory, "id", *steal<string>($3)); }
| ID "." IDENTIFIER "(" ")" { $$ = new FunctionValueNode(*steal<string>($3), std::make_unique<IdValueNode>(bucket_id_factory, "id", "")); }
- | ID "." ORDER "(" INTEGER "," INTEGER ")" { $$ = new IdValueNode(bucket_id_factory, "id", *steal<string>($3), $5, $7); }
;
variable
diff --git a/document/src/vespa/document/select/orderingselector.cpp b/document/src/vespa/document/select/orderingselector.cpp
deleted file mode 100644
index 836647aab26..00000000000
--- a/document/src/vespa/document/select/orderingselector.cpp
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include "orderingselector.h"
-#include "node.h"
-#include "valuenodes.h"
-#include "visitor.h"
-#include "compare.h"
-#include "branch.h"
-
-#include <vespa/document/base/documentid.h>
-
-namespace document {
-
-using namespace select;
-
-namespace {
- /**
- * Visitor class that is used for visiting a node tree generated by a
- * document selection expression.
- *
- * The visitor class contains the set of buckets expression can match.
- */
- struct OrderingVisitor : public document::select::Visitor
- {
- OrderingSpecification::UP _spec;
- OrderingSpecification::Order _order;
-
- OrderingVisitor(OrderingSpecification::Order order)
- : _order(order) {
- }
-
- OrderingSpecification::UP pickOrdering(const OrderingSpecification& a, const OrderingSpecification& b, bool isAnd) {
- if (a.getWidthBits() == b.getWidthBits() && a.getDivisionBits() == b.getDivisionBits() && a.getOrder() == b.getOrder()) {
- if ((a.getOrder() == OrderingSpecification::ASCENDING && isAnd) ||
- (a.getOrder() == OrderingSpecification::DESCENDING && !isAnd)) {
- return OrderingSpecification::UP(
- new OrderingSpecification(a.getOrder(), std::max(a.getOrderingStart(), b.getOrderingStart()), b.getWidthBits(), a.getDivisionBits()));
- } else {
- return OrderingSpecification::UP(
- new OrderingSpecification(a.getOrder(), std::min(a.getOrderingStart(), b.getOrderingStart()), b.getWidthBits(), a.getDivisionBits()));
- }
- }
- return OrderingSpecification::UP();
- }
-
- void visitAndBranch(const document::select::And& node) override {
- OrderingVisitor left(_order);
- node.getLeft().visit(left);
- node.getRight().visit(*this);
-
- if (left._spec.get() == NULL) {
- return;
- }
-
- // If only left part is known return that part.
- if (_spec.get() == NULL) {
- _spec = std::move(left._spec);
- return;
- }
-
- // Both are set...
- _spec = pickOrdering(*_spec, *left._spec, true);
- }
-
- void visitOrBranch(const document::select::Or& node) override {
- OrderingVisitor left(_order);
- node.getLeft().visit(left);
- node.getRight().visit(*this);
-
- // If one part is unknown we have to keep unknown status
- if (left._spec.get() == NULL || _spec.get() == NULL) {
- return;
- }
-
- _spec = pickOrdering(*_spec, *left._spec, false);
- }
-
- void visitNotBranch(const document::select::Not&) override {}
-
- void compare(const select::IdValueNode& node,
- const select::ValueNode& valnode,
- const select::Operator& op, OrderingSpecification::Order order)
- {
- if (node.getType() != IdValueNode::ORDER) {
- return;
- }
-
- if (node.getWidthBits() == -1 || node.getDivisionBits() == -1) {
- return;
- }
-
- const IntegerValueNode* val(
- dynamic_cast<const IntegerValueNode*>(&valnode));
- if (!val) return;
-
- if (op == document::select::FunctionOperator::EQ) {
- _spec.reset(new OrderingSpecification(order, val->getValue(), node.getWidthBits(), node.getDivisionBits()));
- }
-
- if (order == OrderingSpecification::ASCENDING) {
- if (op == document::select::FunctionOperator::LEQ) {
- _spec.reset(new OrderingSpecification(order, 0, node.getWidthBits(), node.getDivisionBits()));
- }
- if (op == document::select::FunctionOperator::GT) {
- _spec.reset(new OrderingSpecification(order, val->getValue() + 1, node.getWidthBits(), node.getDivisionBits()));
- }
- if (op == document::select::FunctionOperator::GEQ) {
- _spec.reset(new OrderingSpecification(order, val->getValue(), node.getWidthBits(), node.getDivisionBits()));
- }
- } else {
- if (op == document::select::FunctionOperator::LT) {
- _spec.reset(new OrderingSpecification(order, val->getValue() - 1, node.getWidthBits(), node.getDivisionBits()));
- }
- if (op == document::select::FunctionOperator::LEQ) {
- _spec.reset(new OrderingSpecification(order, val->getValue(), node.getWidthBits(), node.getDivisionBits()));
- }
- }
- }
-
- void visitComparison(const document::select::Compare& node) override {
- const IdValueNode* lid(dynamic_cast<const IdValueNode*>(
- &node.getLeft()));
- if (lid) {
- compare(*lid, node.getRight(), node.getOperator(), _order);
- } else {
- const IdValueNode* rid(dynamic_cast<const IdValueNode*>(
- &node.getRight()));
- if (rid) {
- compare(*rid, node.getLeft(), node.getOperator(), _order);
- }
- }
- }
-
- void visitConstant(const document::select::Constant&) override {}
- void visitInvalidConstant(const document::select::InvalidConstant &) override {}
- void visitDocumentType(const document::select::DocType&) override {}
- void visitArithmeticValueNode(const ArithmeticValueNode &) override {}
- void visitFunctionValueNode(const FunctionValueNode &) override {}
- void visitIdValueNode(const IdValueNode &) override {}
- void visitFieldValueNode(const FieldValueNode &) override {}
- void visitFloatValueNode(const FloatValueNode &) override {}
- void visitVariableValueNode(const VariableValueNode &) override {}
- void visitIntegerValueNode(const IntegerValueNode &) override {}
- void visitCurrentTimeValueNode(const CurrentTimeValueNode &) override {}
- void visitStringValueNode(const StringValueNode &) override {}
- void visitNullValueNode(const NullValueNode &) override {}
- void visitInvalidValueNode(const InvalidValueNode &) override {}
- };
-}
-
-OrderingSpecification::UP
-OrderingSelector::select(const document::select::Node& expression, OrderingSpecification::Order order) const
-{
- OrderingVisitor v(order);
- expression.visit(v);
- return std::move(v._spec);
-}
-
-} // document
diff --git a/document/src/vespa/document/select/orderingselector.h b/document/src/vespa/document/select/orderingselector.h
deleted file mode 100644
index 0d4c9702f8b..00000000000
--- a/document/src/vespa/document/select/orderingselector.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#pragma once
-
-#include <vector>
-#include <utility>
-#include <memory>
-#include "orderingspecification.h"
-
-namespace document {
-namespace select {
- class Node;
-}
-
-class OrderingSelector {
-public:
- /**
- * Return the ordering specification implied by this document selection expression.
- *
- * @param expression The document selection expression to parse.
- * @param ordering The ordering the user has selected to visit (ASCENDING/DESCENDING)
- */
- OrderingSpecification::UP select(const select::Node& expression, OrderingSpecification::Order ordering) const;
-
-private:
-};
-
-} // document
-
diff --git a/document/src/vespa/document/select/valuenodes.cpp b/document/src/vespa/document/select/valuenodes.cpp
index 452d277874c..bc94e3667d2 100644
--- a/document/src/vespa/document/select/valuenodes.cpp
+++ b/document/src/vespa/document/select/valuenodes.cpp
@@ -465,8 +465,6 @@ IdValueNode::IdValueNode(const BucketIdFactory& bucketIdFactory,
case 'u':
_type = USER;
break;
- case 'o':
- _type = ORDER;
break;
}
}
@@ -524,19 +522,6 @@ IdValueNode::getValue(const DocumentId& id) const
case GID:
value = id.getGlobalId().toString();
break;
- case ORDER:
- if (id.getScheme().getType() == IdString::ORDERDOC) {
- const OrderDocIdString& ods(
- static_cast<const OrderDocIdString&>(id.getScheme()));
- if (ods.getWidthBits() == _widthBits
- && ods.getDivisionBits() == _divisionBits)
- {
- return std::unique_ptr<Value>(new IntegerValue(
- static_cast<const OrderDocIdString&>(id.getScheme())
- .getOrdering(), false));
- }
- }
- return std::unique_ptr<Value>(new InvalidValue());
case USER:
if (id.getScheme().hasNumber()) {
return std::unique_ptr<Value>(
@@ -617,23 +602,6 @@ IdValueNode::traceValue(const DocumentId& id, std::ostream& out) const
value = id.getGlobalId().toString();
out << "Resolved gid to \"" << value << "\".\n";
break;
- case ORDER:
- if (id.getScheme().getType() == IdString::ORDERDOC) {
- const OrderDocIdString& ods(
- static_cast<const OrderDocIdString&>(id.getScheme()));
- if (ods.getWidthBits() == _widthBits
- && ods.getDivisionBits() == _divisionBits)
- {
- std::unique_ptr<Value> result(new IntegerValue(
- static_cast<const OrderDocIdString&>(id.getScheme())
- .getOrdering(), false));
- out << "Resolved id.order to int " << *result << "\n";
- return result;
- }
- }
- out << "Could not resolve id.order(" << _widthBits << ", "
- << _divisionBits << ") of doc " << id << ".\n";
- return std::unique_ptr<Value>(new InvalidValue());
case USER:
if (id.getScheme().hasNumber()) {
std::unique_ptr<Value> result(
@@ -668,9 +636,6 @@ IdValueNode::print(std::ostream& out, bool verbose,
if (_type != ALL) {
out << '.' << _typestring;
}
- if (_type == ORDER) {
- out << "(" << _widthBits << "," << _divisionBits << ")";
- }
if (hadParentheses()) out << ')';
}
diff --git a/document/src/vespa/document/select/valuenodes.h b/document/src/vespa/document/select/valuenodes.h
index 0b7d23e1e30..4ddbee16f8c 100644
--- a/document/src/vespa/document/select/valuenodes.h
+++ b/document/src/vespa/document/select/valuenodes.h
@@ -239,7 +239,7 @@ private:
class IdValueNode : public ValueNode
{
public:
- enum Type { SCHEME, NS, TYPE, USER, GROUP, GID, SPEC, BUCKET, ORDER, ALL };
+ enum Type { SCHEME, NS, TYPE, USER, GROUP, GID, SPEC, BUCKET, ALL };
IdValueNode(const BucketIdFactory& bucketIdFactory,
vespalib::stringref name, vespalib::stringref type,
diff --git a/documentapi/abi-spec.json b/documentapi/abi-spec.json
index 415c9df1e77..dc8daf737e4 100644
--- a/documentapi/abi-spec.json
+++ b/documentapi/abi-spec.json
@@ -865,8 +865,6 @@
"public long getMaxTotalHits()",
"public java.util.Set getBucketsToVisit()",
"public void setBucketsToVisit(java.util.Set)",
- "public int getVisitorOrdering()",
- "public void setVisitorOrdering(int)",
"public int getMaxBucketsPerVisitor()",
"public void setMaxBucketsPerVisitor(int)",
"public void setTraceLevel(int)",
@@ -1502,10 +1500,6 @@
"public void setToTimestamp(long)",
"public long getFromTimestamp()",
"public long getToTimestamp()",
- "public void setVisitorDispatcherVersion(int)",
- "public int getVisitorDispatcherVersion()",
- "public void setVisitorOrdering(int)",
- "public int getVisitorOrdering()",
"public void setMaxBucketsPerVisitor(int)",
"public int getMaxBucketsPerVisitor()",
"public com.yahoo.documentapi.messagebus.protocol.DocumentReply createReply()",
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/ProgressToken.java b/documentapi/src/main/java/com/yahoo/documentapi/ProgressToken.java
index 9a6c2ea3bd3..2bb93659a78 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/ProgressToken.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/ProgressToken.java
@@ -690,9 +690,6 @@ public class ProgressToken {
* sure if the bucket is still active until the buckets have been made
* consistent.
*
- * <strong>FIXME: verify correctness with regards to orderdoc et al.
- * Don't make this method public until this has been done!</strong>
- *
* @param bucket Bucket to check whether or not is finished.
* @return <code>true</code> if <code>bucket</code>'s super-bucket is
* finished, <code>false</code> otherwise.
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/VisitorParameters.java b/documentapi/src/main/java/com/yahoo/documentapi/VisitorParameters.java
index c7c1773a517..5b511a1dea8 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/VisitorParameters.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/VisitorParameters.java
@@ -41,7 +41,6 @@ public class VisitorParameters extends Parameters {
private float weight = 1;
private long maxFirstPassHits = -1;
private long maxTotalHits = -1;
- private int visitorOrdering = 0;
private int maxBucketsPerVisitor = 1;
private boolean dynamicallyIncreaseMaxBucketsPerVisitor = false;
private float dynamicMaxBucketsIncreaseFactor = 2;
@@ -92,7 +91,6 @@ public class VisitorParameters extends Parameters {
setControlHandler(params.getControlHandler());
setMaxFirstPassHits(params.getMaxFirstPassHits());
setMaxTotalHits(params.getMaxTotalHits());
- setVisitorOrdering(params.getVisitorOrdering());
setMaxBucketsPerVisitor(params.getMaxBucketsPerVisitor());
setLoadType(params.getLoadType());
setPriority(params.getPriority());
@@ -300,10 +298,6 @@ public class VisitorParameters extends Parameters {
public void setBucketsToVisit(Set<BucketId> buckets) { bucketsToVisit = buckets; }
- public int getVisitorOrdering() { return visitorOrdering; }
-
- public void setVisitorOrdering(int order) { visitorOrdering = order; }
-
public int getMaxBucketsPerVisitor() { return maxBucketsPerVisitor; }
public void setMaxBucketsPerVisitor(int max) { maxBucketsPerVisitor = max; }
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusVisitorSession.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusVisitorSession.java
index aa422c2ad46..54e6fbf8be1 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusVisitorSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusVisitorSession.java
@@ -628,7 +628,6 @@ public class MessageBusVisitorSession implements VisitorSession {
msg.setVisitRemoves(params.visitRemoves());
msg.setParameters(params.getLibraryParameters());
msg.setRoute(params.getRoute());
- msg.setVisitorOrdering(params.getVisitorOrdering());
msg.setMaxBucketsPerVisitor(params.getMaxBucketsPerVisitor());
msg.setLoadType(params.getLoadType());
msg.setPriority(params.getPriority());
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/CreateVisitorMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/CreateVisitorMessage.java
index 1b1c3f23d0a..c4e17141237 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/CreateVisitorMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/CreateVisitorMessage.java
@@ -4,7 +4,11 @@ package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.BucketId;
import com.yahoo.document.FixedBucketSpaces;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
public class CreateVisitorMessage extends DocumentMessage {
@@ -22,8 +26,6 @@ public class CreateVisitorMessage extends DocumentMessage {
private String fieldSet = "[all]";
private boolean visitInconsistentBuckets = false;
private Map<String, byte[]> params = new TreeMap<>();
- private int version = 42;
- private int ordering = 0;
private int maxBucketsPerVisitor = 1;
CreateVisitorMessage() {
@@ -150,22 +152,6 @@ public class CreateVisitorMessage extends DocumentMessage {
return toTime;
}
- public void setVisitorDispatcherVersion(int version) {
- this.version = version;
- }
-
- public int getVisitorDispatcherVersion() {
- return version;
- }
-
- public void setVisitorOrdering(int ordering) {
- this.ordering = ordering;
- }
-
- public int getVisitorOrdering() {
- return ordering;
- }
-
public void setMaxBucketsPerVisitor(int max) {
this.maxBucketsPerVisitor = max;
}
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RemoveLocationMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RemoveLocationMessage.java
index 1339975d27e..fba1db3d5dd 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RemoveLocationMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RemoveLocationMessage.java
@@ -6,7 +6,7 @@ import com.yahoo.document.select.BucketSelector;
import java.util.Set;
/**
- * Message (VDS only) to remove an entire location for users using userdoc or groupdoc schemes.
+ * Message (VDS only) to remove an entire location for users using n= or g= schemes.
* We use a document selection so the user can specify a subset of those documents to be deleted
* if they wish.
*/
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories60.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories60.java
index af3ff2992e5..cba93f5716a 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories60.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories60.java
@@ -183,9 +183,8 @@ public abstract class RoutableFactories60 {
msg.getParameters().put(key, buf.getBytes(null, sz));
}
- msg.setVisitorOrdering(buf.getInt(null));
+ buf.getInt(null); // unused ordering spec
msg.setMaxBucketsPerVisitor(buf.getInt(null));
- msg.setVisitorDispatcherVersion(50);
msg.setBucketSpace(decodeBucketSpace(buf));
return msg;
}
@@ -229,7 +228,7 @@ public abstract class RoutableFactories60 {
buf.put(null, b);
}
- buf.putInt(null, msg.getVisitorOrdering());
+ buf.putInt(null, 0);
buf.putInt(null, msg.getMaxBucketsPerVisitor());
return encodeBucketSpace(msg.getBucketSpace(), buf);
}
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.h
index f58f115a8ec..e0fab5e9ae5 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.h
@@ -10,7 +10,7 @@ namespace document { class BucketIdFactory; }
namespace documentapi {
/**
- * Message (VDS only) to remove an entire location for users using userdoc or groupdoc schemes for their documents.
+ * Message (VDS only) to remove an entire location for users using user or group schemes for their documents.
* A location in this context is either a user id or a group name.
*/
class RemoveLocationMessage : public DocumentMessage {
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp
index 3cea95dbd39..43ad30ea24f 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp
@@ -25,7 +25,6 @@ CreateVisitorMessage::CreateVisitorMessage() :
_visitInconsistentBuckets(false),
_params(),
_version(42),
- _ordering(document::OrderingSpecification::ASCENDING),
_maxBucketsPerVisitor(1)
{}
@@ -49,11 +48,10 @@ CreateVisitorMessage::CreateVisitorMessage(const string& libraryName,
_visitInconsistentBuckets(false),
_params(),
_version(42),
- _ordering(document::OrderingSpecification::ASCENDING),
_maxBucketsPerVisitor(1)
{}
-CreateVisitorMessage::~CreateVisitorMessage() {}
+CreateVisitorMessage::~CreateVisitorMessage() = default;
DocumentReply::UP
CreateVisitorMessage::doCreateReply() const
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/visitor.h b/documentapi/src/vespa/documentapi/messagebus/messages/visitor.h
index e748e1cbc40..b838fc9d395 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/visitor.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/visitor.h
@@ -40,7 +40,6 @@ private:
bool _visitInconsistentBuckets;
vdslib::Parameters _params;
uint32_t _version;
- document::OrderingSpecification::Order _ordering;
uint32_t _maxBucketsPerVisitor;
protected:
@@ -101,9 +100,6 @@ public:
Timestamp getToTimestamp() const { return _toTime; };
void setToTimestamp(Timestamp to) { _toTime = to; };
- document::OrderingSpecification::Order getVisitorOrdering() const { return _ordering; }
- void setVisitorOrdering(document::OrderingSpecification::Order ordering) { _ordering = ordering; }
-
uint32_t getMaxBucketsPerVisitor() const { return _maxBucketsPerVisitor; }
void setMaxBucketsPerVisitor(uint32_t max) { _maxBucketsPerVisitor = max; }
diff --git a/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp b/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp
index 00c16c16fec..797f55120fc 100644
--- a/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp
@@ -95,7 +95,7 @@ RoutableFactories60::CreateVisitorMessageFactory::doDecode(document::ByteBuffer
msg->setVisitInconsistentBuckets(decodeBoolean(buf));
msg->getParameters().deserialize(_repo, buf);
msg->setVisitorDispatcherVersion(50);
- msg->setVisitorOrdering((document::OrderingSpecification::Order)decodeInt(buf));
+ decodeInt(buf); // Unused legacy visitor ordering
msg->setMaxBucketsPerVisitor(decodeInt(buf));
msg->setBucketSpace(decodeBucketSpace(buf));
@@ -131,7 +131,7 @@ RoutableFactories60::CreateVisitorMessageFactory::doEncode(const DocumentMessage
document::ByteBuffer dbuf(tmp, len);
msg.getParameters().serialize(dbuf);
- buf.putInt(msg.getVisitorOrdering());
+ buf.putInt(0); // Unused legacy visitor ordering
buf.putInt(msg.getMaxBucketsPerVisitor());
return encodeBucketSpace(msg.getBucketSpace(), buf);
}
diff --git a/searchcore/src/vespa/searchcore/proton/test/document.h b/searchcore/src/vespa/searchcore/proton/test/document.h
index 0303ed07472..8f7ecf3527b 100644
--- a/searchcore/src/vespa/searchcore/proton/test/document.h
+++ b/searchcore/src/vespa/searchcore/proton/test/document.h
@@ -5,9 +5,7 @@
#include <persistence/spi/types.h>
#include <vespa/searchlib/query/base.h>
-namespace proton {
-
-namespace test {
+namespace proton::test {
/**
* Representation of a test document.
@@ -54,7 +52,4 @@ struct DocumentGidOrderCmp
};
-} // namespace test
-
-} // namespace proton
-
+}
diff --git a/searchcore/src/vespa/searchcore/proton/test/userdocumentsbuilder.cpp b/searchcore/src/vespa/searchcore/proton/test/userdocumentsbuilder.cpp
index e90bcd8eb05..cf50c991207 100644
--- a/searchcore/src/vespa/searchcore/proton/test/userdocumentsbuilder.cpp
+++ b/searchcore/src/vespa/searchcore/proton/test/userdocumentsbuilder.cpp
@@ -11,12 +11,12 @@ UserDocumentsBuilder::UserDocumentsBuilder()
{
}
-UserDocumentsBuilder::~UserDocumentsBuilder() {}
+UserDocumentsBuilder::~UserDocumentsBuilder() = default;
UserDocumentsBuilder &
UserDocumentsBuilder::createDoc(uint32_t userId, search::DocumentIdT lid)
{
- vespalib::string docId = vespalib::make_string("userdoc:test:%u:%u", userId, lid);
+ vespalib::string docId = vespalib::make_string("id:test:searchdocument:n=%u:%u", userId, lid);
document::Document::SP doc(_builder.startDocument(docId).endDocument().release());
_docs.addDoc(userId, Document(doc, lid, storage::spi::Timestamp(lid)));
return *this;
diff --git a/storage/src/vespa/storage/distributor/operations/external/visitoroperation.cpp b/storage/src/vespa/storage/distributor/operations/external/visitoroperation.cpp
index a89dd52775b..f777f5de7c3 100644
--- a/storage/src/vespa/storage/distributor/operations/external/visitoroperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/external/visitoroperation.cpp
@@ -8,7 +8,6 @@
#include <vespa/storage/distributor/operations/external/visitororder.h>
#include <vespa/storage/distributor/visitormetricsset.h>
#include <vespa/document/base/exceptions.h>
-#include <vespa/document/select/orderingselector.h>
#include <vespa/document/select/parser.h>
#include <vespa/vespalib/stllike/asciistream.h>
#include <iomanip>
@@ -344,78 +343,6 @@ VisitorOperation::verifyCreateVisitorCommand(DistributorMessageSender& sender)
}
}
-namespace {
-
-bool
-isSplitPastOrderBits(const document::BucketId& bucket,
- const document::OrderingSpecification& ordering) {
- int32_t bitsUsed = bucket.getUsedBits();
- int32_t orderBitCount = ordering.getWidthBits() -
- ordering.getDivisionBits();
- return (bitsUsed > 32 + orderBitCount);
-}
-
-bool
-isInconsistentlySplit(const document::BucketId& ain,
- const document::BucketId& bin) {
- int minUsed = std::min(ain.getUsedBits(), bin.getUsedBits());
-
- document::BucketId a = document::BucketId(minUsed,
- ain.getRawId()).stripUnused();
- document::BucketId b = document::BucketId(minUsed,
- bin.getRawId()).stripUnused();
-
- return (a == b);
-}
-
-bool
-isInconsistentlySplit(const document::BucketId& bucket,
- const std::vector<document::BucketId>& buckets)
-{
- if (buckets.size()) {
- for (uint32_t i=0; i<buckets.size(); i++) {
- if (isInconsistentlySplit(bucket, buckets[i])) {
- return true;
- }
- }
- }
- return false;
-}
-
-} // End anonymous namespace
-
-bool
-VisitorOperation::isSpecialBucketForOrderDoc(const document::BucketId& bucketId) const
-{
- if (isSplitPastOrderBits(bucketId, *_ordering)) {
- LOG(spam, "Split past orderbits: Found in db: %s", bucketId.toString().c_str());
- } else if (isInconsistentlySplit(bucketId, _superBucket.subBucketsVisitOrder)) {
- LOG(spam, "Inconsistent: Found in db: %s", bucketId.toString().c_str());
- } else {
- return false;
- }
- return true;
-}
-
-std::vector<document::BucketId>::const_iterator
-VisitorOperation::addSpecialBucketsForOrderDoc(
- std::vector<document::BucketId>::const_iterator iter,
- std::vector<document::BucketId>::const_iterator end)
-{
- if (_ordering->getWidthBits() == 0) {
- return iter;
- }
- for (; iter != end; ++iter) {
- if (isSpecialBucketForOrderDoc(*iter)) {
- _superBucket.subBucketsVisitOrder.push_back(*iter);
- _superBucket.subBuckets[*iter] = BucketInfo();
- } else {
- break;
- }
- }
- return iter;
-}
-
bool
VisitorOperation::pickBucketsToVisit(const std::vector<BucketDatabase::Entry>& buckets)
{
@@ -427,7 +354,7 @@ VisitorOperation::pickBucketsToVisit(const std::vector<BucketDatabase::Entry>& b
bucketVisitOrder.push_back(buckets[i].getBucketId());
}
- VisitorOrder bucketLessThan(*_ordering);
+ VisitorOrder bucketLessThan;
std::sort(bucketVisitOrder.begin(), bucketVisitOrder.end(), bucketLessThan);
std::vector<document::BucketId>::const_iterator iter(bucketVisitOrder.begin());
@@ -451,8 +378,6 @@ VisitorOperation::pickBucketsToVisit(const std::vector<BucketDatabase::Entry>& b
}
}
- iter = addSpecialBucketsForOrderDoc(iter, end);
-
bool doneExpand(iter == bucketVisitOrder.end());
return doneExpand;
}
@@ -539,9 +464,7 @@ VisitorOperation::expandBucketContained()
_superBucket.subBucketsVisitOrder.push_back(*bid);
_superBucket.subBuckets[*bid] = BucketInfo();
- bid = getBucketIdAndLast(_bucketSpace.getBucketDatabase(),
- _superBucket.bid,
- *bid);
+ bid = getBucketIdAndLast(_bucketSpace.getBucketDatabase(), _superBucket.bid, *bid);
}
bool doneExpand = (!bid.get() || !_superBucket.bid.contains(*bid));
@@ -552,25 +475,21 @@ void
VisitorOperation::expandBucket()
{
bool doneExpandBuckets = false;
- if (_ordering->getWidthBits() > 0) { // Orderdoc
- doneExpandBuckets = expandBucketAll();
+ bool doneExpandContainingBuckets = true;
+ if (!_superBucket.bid.contains(_lastBucket)) {
+ LOG(spam, "Bucket %s does not contain progress bucket %s",
+ _superBucket.bid.toString().c_str(),
+ _lastBucket.toString().c_str());
+ doneExpandContainingBuckets = expandBucketContaining();
} else {
- bool doneExpandContainingBuckets = true;
- if (!_superBucket.bid.contains(_lastBucket)) {
- LOG(spam, "Bucket %s does not contain progress bucket %s",
- _superBucket.bid.toString().c_str(),
- _lastBucket.toString().c_str());
- doneExpandContainingBuckets = expandBucketContaining();
- } else {
- LOG(spam, "Bucket %s contains progress bucket %s",
- _superBucket.bid.toString().c_str(),
- _lastBucket.toString().c_str());
- }
+ LOG(spam, "Bucket %s contains progress bucket %s",
+ _superBucket.bid.toString().c_str(),
+ _lastBucket.toString().c_str());
+ }
- if (doneExpandContainingBuckets) {
- LOG(spam, "Done expanding containing buckets");
- doneExpandBuckets = expandBucketContained();
- }
+ if (doneExpandContainingBuckets) {
+ LOG(spam, "Done expanding containing buckets");
+ doneExpandBuckets = expandBucketContained();
}
if (doneExpandBuckets) {
@@ -588,8 +507,7 @@ VisitorOperation::expandBucket()
namespace {
bool
-alreadyTried(const std::vector<uint16_t>& triedNodes,
- uint16_t node)
+alreadyTried(const std::vector<uint16_t>& triedNodes, uint16_t node)
{
for (uint32_t j = 0; j < triedNodes.size(); j++) {
if (triedNodes[j] == node) {
@@ -649,57 +567,8 @@ VisitorOperation::pickTargetNode(
}
bool
-VisitorOperation::documentSelectionMayHaveOrdering() const
+VisitorOperation::parseDocumentSelection(DistributorMessageSender& )
{
- // FIXME: this is hairy and depends on opportunistic ordering
- // parsing working fine even when no ordering is present.
- return strcasestr(_msg->getDocumentSelection().c_str(), "order") != NULL;
-}
-
-void
-VisitorOperation::attemptToParseOrderingSelector()
-{
- std::unique_ptr<document::select::Node> docSelection;
- std::shared_ptr<const document::DocumentTypeRepo> repo(_owner.getTypeRepo());
- document::select::Parser parser(
- *repo, _owner.getBucketIdFactory());
- docSelection = parser.parse(_msg->getDocumentSelection());
-
- document::OrderingSelector selector;
- _ordering = selector.select(*docSelection, _msg->getVisitorOrdering());
-}
-
-bool
-VisitorOperation::parseDocumentSelection(DistributorMessageSender& sender)
-{
- try{
- if (documentSelectionMayHaveOrdering()) {
- attemptToParseOrderingSelector();
- }
-
- if (!_ordering.get()) {
- _ordering.reset(new document::OrderingSpecification());
- }
- } catch (document::DocumentTypeNotFoundException& e) {
- std::ostringstream ost;
- ost << "Failed to parse document select string '"
- << _msg->getDocumentSelection() << "': " << e.getMessage();
- LOG(warning, "CreateVisitor(%s): %s",
- _msg->getInstanceId().c_str(), ost.str().c_str());
-
- sendReply(api::ReturnCode(api::ReturnCode::ILLEGAL_PARAMETERS, ost.str()), sender);
- return false;
- } catch (document::select::ParsingFailedException& e) {
- std::ostringstream ost;
- ost << "Failed to parse document select string '"
- << _msg->getDocumentSelection() << "': " << e.getMessage();
- LOG(warning, "CreateVisitor(%s): %s",
- _msg->getInstanceId().c_str(), ost.str().c_str());
-
- sendReply(api::ReturnCode(api::ReturnCode::ILLEGAL_PARAMETERS, ost.str()), sender);
- return false;
- }
-
return true;
}
diff --git a/storage/src/vespa/storage/distributor/operations/external/visitoroperation.h b/storage/src/vespa/storage/distributor/operations/external/visitoroperation.h
index bc0308d8ef5..abf00c51f12 100644
--- a/storage/src/vespa/storage/distributor/operations/external/visitoroperation.h
+++ b/storage/src/vespa/storage/distributor/operations/external/visitoroperation.h
@@ -134,10 +134,6 @@ private:
* code value, which avoids overwriting more critical errors.
*/
void markOperationAsFailed(const api::ReturnCode& result);
- bool isSpecialBucketForOrderDoc(const document::BucketId& bucketId) const;
- std::vector<document::BucketId>::const_iterator addSpecialBucketsForOrderDoc(
- std::vector<document::BucketId>::const_iterator iter,
- std::vector<document::BucketId>::const_iterator end);
/**
* Compute time remaining of visitor in milliseconds, relative to timeout
* time point. In case of the current time having passed the timeout
@@ -145,8 +141,6 @@ private:
*/
uint64_t timeLeft() const noexcept;
- std::unique_ptr<document::OrderingSpecification> _ordering;
-
DistributorComponent& _owner;
DistributorBucketSpace &_bucketSpace;
SentMessagesMap _sentMessages;
diff --git a/storage/src/vespa/storage/distributor/operations/external/visitororder.h b/storage/src/vespa/storage/distributor/operations/external/visitororder.h
index 69aefb1ec33..89a5d9e3734 100644
--- a/storage/src/vespa/storage/distributor/operations/external/visitororder.h
+++ b/storage/src/vespa/storage/distributor/operations/external/visitororder.h
@@ -5,10 +5,10 @@
namespace storage::distributor {
struct VisitorOrder {
- const document::OrderingSpecification& _ordering;
+ document::OrderingSpecification _ordering;
- VisitorOrder(const document::OrderingSpecification& ordering)
- : _ordering(ordering) {}
+ VisitorOrder()
+ : _ordering() {}
document::BucketId::Type getOrder(const document::BucketId& bid) {
int32_t orderBitCount = _ordering.getWidthBits() -
diff --git a/storage/src/vespa/storage/storageserver/documentapiconverter.cpp b/storage/src/vespa/storage/storageserver/documentapiconverter.cpp
index f9deb76c3e2..54b1a9ae257 100644
--- a/storage/src/vespa/storage/storageserver/documentapiconverter.cpp
+++ b/storage/src/vespa/storage/storageserver/documentapiconverter.cpp
@@ -89,7 +89,6 @@ DocumentApiConverter::toStorageAPI(documentapi::DocumentMessage& fromMsg)
to->setVisitInconsistentBuckets(from.visitInconsistentBuckets());
to->getBuckets() = from.getBuckets();
to->setVisitorDispatcherVersion(from.getVisitorDispatcherVersion());
- to->setVisitorOrdering(from.getVisitorOrdering());
to->setMaxBucketsPerVisitor(from.getMaxBucketsPerVisitor());
toMsg = std::move(to);
break;
@@ -286,7 +285,6 @@ DocumentApiConverter::toDocumentAPI(api::StorageCommand& fromMsg)
to->setFieldSet(from.getFieldSet());
to->setVisitInconsistentBuckets(from.visitInconsistentBuckets());
to->getBuckets() = from.getBuckets();
- to->setVisitorOrdering(from.getVisitorOrdering());
to->setMaxBucketsPerVisitor(from.getMaxBucketsPerVisitor());
toMsg = std::move(to);
break;
diff --git a/storage/src/vespa/storage/visiting/visitor.cpp b/storage/src/vespa/storage/visiting/visitor.cpp
index 97ae59d3344..3bed02f88fe 100644
--- a/storage/src/vespa/storage/visiting/visitor.cpp
+++ b/storage/src/vespa/storage/visiting/visitor.cpp
@@ -20,70 +20,19 @@ using document::BucketSpace;
namespace storage {
-Visitor::HitCounter::HitCounter(const document::OrderingSpecification* ordering)
+Visitor::HitCounter::HitCounter()
: _firstPassHits(0),
_firstPassBytes(0),
_secondPassHits(0),
- _secondPassBytes(0),
- _ordering(ordering)
+ _secondPassBytes(0)
{
}
void
-Visitor::HitCounter::addHit(const document::DocumentId& hit, uint32_t size)
+Visitor::HitCounter::addHit(const document::DocumentId& , uint32_t size)
{
bool firstPass = false;
- if (_ordering && _ordering->getWidthBits() > 0
- && hit.getScheme().getType() == document::IdString::ORDERDOC)
- {
- const document::OrderDocIdString& order(
- static_cast<const document::OrderDocIdString&>(hit.getScheme()));
-
- int32_t width = (1 << order.getWidthBits());
- int32_t division = (1 << order.getDivisionBits());
-
- if (_ordering->getOrder() == document::OrderingSpecification::ASCENDING) {
- uint64_t upperLimit = UINT64_MAX;
- if (_ordering->getOrderingStart() < upperLimit - (width - division)) {
- upperLimit = _ordering->getOrderingStart() + width - division;
- }
- if (order.getOrdering() >= _ordering->getOrderingStart() &&
- order.getOrdering() <= upperLimit) {
- firstPass = true;
- /*std::cerr << "First pass because ordering (+) "
- << order.getOrdering() << " is between "
- << _ordering->getOrderingStart()
- << " and " << upperLimit << "\n";*/
- } else {
- /*std::cerr << "Not first pass because ordering (+) "
- << order.getOrdering() << " is not between "
- << _ordering->getOrderingStart()
- << " and " << upperLimit << "\n";*/
- }
- } else {
- uint64_t lowerLimit = 0;
- if (_ordering->getOrderingStart() > (uint64_t)(width - division)) {
- lowerLimit = _ordering->getOrderingStart() - (width - division);
- }
- if (order.getOrdering() <= _ordering->getOrderingStart() &&
- order.getOrdering() >= lowerLimit) {
- firstPass = true;
- /*std::cerr << "First pass because ordering (-) "
- << order.getOrdering() << " is between "
- << lowerLimit << " and "
- << _ordering->getOrderingStart() << "\n";*/
- } else {
- /*std::cerr << "Not first pass because ordering (-) "
- << order.getOrdering() << " is not between "
- << lowerLimit << " and "
- << _ordering->getOrderingStart() << "\n";*/
- }
- }
- } else {
-// std::cerr << "Not counting first pass: " << _ordering->getWidthBits() << "\n";
- }
-
if (firstPass) {
_firstPassHits++;
_firstPassBytes += size;
@@ -579,7 +528,6 @@ Visitor::start(api::VisitorId id, api::StorageMessage::Id cmdId,
framework::MicroSecTime toTimestamp,
std::unique_ptr<document::select::Node> docSelection,
const std::string& docSelectionString,
- std::unique_ptr<document::OrderingSpecification> ordering,
VisitorMessageHandler& handler,
VisitorMessageSession::UP messageSession,
documentapi::Priority::Value documentPriority)
@@ -589,14 +537,13 @@ Visitor::start(api::VisitorId id, api::StorageMessage::Id cmdId,
_visitorCmdId = cmdId;
_id = name;
_messageHandler = &handler;
- _ordering = std::move(ordering);
_documentSelection.reset(docSelection.release());
_documentSelectionString = docSelectionString;
_buckets = buckets;
_visitorOptions._fromTime = fromTimestamp;
_visitorOptions._toTime = toTimestamp;
_currentBucket = 0;
- _hitCounter.reset(new HitCounter(_ordering.get()));
+ _hitCounter.reset(new HitCounter());
_messageSession = std::move(messageSession);
_documentPriority = documentPriority;
diff --git a/storage/src/vespa/storage/visiting/visitor.h b/storage/src/vespa/storage/visiting/visitor.h
index f53ca5a60a0..88f3ad4f3c3 100644
--- a/storage/src/vespa/storage/visiting/visitor.h
+++ b/storage/src/vespa/storage/visiting/visitor.h
@@ -86,7 +86,7 @@ public:
class HitCounter {
public:
- HitCounter(const document::OrderingSpecification* ordering);
+ HitCounter();
void addHit(const document::DocumentId& hit, uint32_t size);
@@ -105,7 +105,6 @@ public:
uint64_t _firstPassBytes;
uint32_t _secondPassHits;
uint64_t _secondPassBytes;
- const document::OrderingSpecification* _ordering;
};
enum VisitorState
@@ -336,7 +335,6 @@ protected:
std::unique_ptr<api::StorageMessageAddress> _dataDestination;
std::shared_ptr<document::select::Node> _documentSelection;
std::string _documentSelectionString;
- std::unique_ptr<document::OrderingSpecification> _ordering;
vdslib::VisitorStatistics _visitorStatistics;
bool isCompletedCalled() const { return _calledCompletedVisitor; }
@@ -469,7 +467,6 @@ public:
framework::MicroSecTime toTimestamp,
std::unique_ptr<document::select::Node> docSelection,
const std::string& docSelectionString,
- std::unique_ptr<document::OrderingSpecification>,
VisitorMessageHandler&,
VisitorMessageSession::UP,
documentapi::Priority::Value);
diff --git a/storage/src/vespa/storage/visiting/visitorthread.cpp b/storage/src/vespa/storage/visiting/visitorthread.cpp
index 1d33e829d49..142e7a89144 100644
--- a/storage/src/vespa/storage/visiting/visitorthread.cpp
+++ b/storage/src/vespa/storage/visiting/visitorthread.cpp
@@ -3,7 +3,6 @@
#include "visitorthread.h"
#include "messages.h"
#include <vespa/document/select/bodyfielddetector.h>
-#include <vespa/document/select/orderingselector.h>
#include <vespa/document/select/parser.h>
#include <vespa/messagebus/rpcmessagebus.h>
#include <vespa/storage/common/statusmessages.h>
@@ -531,12 +530,6 @@ VisitorThread::onCreateVisitor(
if (result.success()) {
_visitors[cmd->getVisitorId()] = visitor;
try{
- std::unique_ptr<document::OrderingSpecification> order;
- if (docSelection.get()) {
- document::OrderingSelector selector;
- order = selector.select(*docSelection,
- cmd->getVisitorOrdering());
- }
VisitorMessageSession::UP messageSession(
_messageSessionFactory.createSession(*visitor, *this));
documentapi::Priority::Value documentPriority =
@@ -549,7 +542,6 @@ VisitorThread::onCreateVisitor(
framework::MicroSecTime(cmd->getToTime()),
std::move(docSelection),
cmd->getDocumentSelection(),
- std::move(order),
_messageSender,
std::move(messageSession),
documentPriority);
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp
index 47b77af74a5..aeb6d382997 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp
@@ -604,7 +604,7 @@ ProtocolSerialization5_0::onEncode(GBBuf& buf, const api::CreateVisitorCommand&
{
ProtocolSerialization4_2::onEncode(buf, cmd);
- buf.putInt(cmd.getVisitorOrdering());
+ buf.putInt(0); // Unused
buf.putInt(cmd.getMaxBucketsPerVisitor());
}
@@ -612,9 +612,7 @@ api::StorageCommand::UP
ProtocolSerialization5_0::onDecodeCreateVisitorCommand(BBuf& buf) const
{
api::StorageCommand::UP cvc = ProtocolSerialization4_2::onDecodeCreateVisitorCommand(buf);
-
- static_cast<api::CreateVisitorCommand*>(cvc.get())->setVisitorOrdering(
- (document::OrderingSpecification::Order)SH::getInt(buf));
+ SH::getInt(buf); // Unused
static_cast<api::CreateVisitorCommand*>(cvc.get())->setMaxBucketsPerVisitor(SH::getInt(buf));
@@ -622,4 +620,4 @@ ProtocolSerialization5_0::onDecodeCreateVisitorCommand(BBuf& buf) const
return cvc;
}
-} \ No newline at end of file
+}
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp
index b5c066eef7d..32680b24683 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp
@@ -141,7 +141,7 @@ ProtocolSerialization5_1::onEncode(
onEncodeCommand(buf, msg);
- buf.putInt(msg.getVisitorOrdering());
+ buf.putInt(0); // Unused
buf.putInt(msg.getMaxBucketsPerVisitor());
}
@@ -185,8 +185,7 @@ ProtocolSerialization5_1::onDecodeCreateVisitorCommand(BBuf& buf) const
msg->getParameters().deserialize(getTypeRepo(), buf);
onDecodeCommand(buf, *msg);
- msg->setVisitorOrdering(
- (document::OrderingSpecification::Order)SH::getInt(buf));
+ SH::getInt(buf); // Unused
msg->setMaxBucketsPerVisitor(SH::getInt(buf));
msg->setVisitorDispatcherVersion(50);
return api::StorageCommand::UP(msg.release());
diff --git a/storageapi/src/vespa/storageapi/message/visitor.cpp b/storageapi/src/vespa/storageapi/message/visitor.cpp
index 8adec61a34e..dbda2d0d0c2 100644
--- a/storageapi/src/vespa/storageapi/message/visitor.cpp
+++ b/storageapi/src/vespa/storageapi/message/visitor.cpp
@@ -37,7 +37,6 @@ CreateVisitorCommand::CreateVisitorCommand(document::BucketSpace bucketSpace,
_queueTimeout(2000),
_maxPendingReplyCount(2),
_version(50),
- _ordering(document::OrderingSpecification::ASCENDING),
_maxBucketsPerVisitor(1)
{
}
@@ -62,7 +61,6 @@ CreateVisitorCommand::CreateVisitorCommand(const CreateVisitorCommand& o)
_queueTimeout(o._queueTimeout),
_maxPendingReplyCount(o._maxPendingReplyCount),
_version(o._version),
- _ordering(o._ordering),
_maxBucketsPerVisitor(o._maxBucketsPerVisitor)
{
}
@@ -111,7 +109,6 @@ CreateVisitorCommand::print(std::ostream& out, bool verbose,
}
out << "\n" << indent << " ";
_params.print(out, verbose, indent + " ");
- out << "\n" << indent << " " << "ordering(" << _ordering << ")";
out << "\n" << indent << " Max buckets: '"
<< _maxBucketsPerVisitor << "'";
out << "\n" << indent << "} : ";
diff --git a/storageapi/src/vespa/storageapi/message/visitor.h b/storageapi/src/vespa/storageapi/message/visitor.h
index 0019488b583..4475e1c5614 100644
--- a/storageapi/src/vespa/storageapi/message/visitor.h
+++ b/storageapi/src/vespa/storageapi/message/visitor.h
@@ -49,7 +49,6 @@ private:
uint32_t _maxPendingReplyCount;
uint32_t _version;
- document::OrderingSpecification::Order _ordering;
uint32_t _maxBucketsPerVisitor;
public:
@@ -110,8 +109,6 @@ public:
void setVisitorDispatcherVersion(uint32_t version) { _version = version; }
uint32_t getVisitorDispatcherVersion() const { return _version; }
- void setVisitorOrdering(document::OrderingSpecification::Order ordering) { _ordering = ordering; }
- document::OrderingSpecification::Order getVisitorOrdering() const { return _ordering; }
void setMaxBucketsPerVisitor(uint32_t max) { _maxBucketsPerVisitor = max; }
uint32_t getMaxBucketsPerVisitor() const { return _maxBucketsPerVisitor; }
diff --git a/streamingvisitors/src/tests/searchvisitor/searchvisitor.cpp b/streamingvisitors/src/tests/searchvisitor/searchvisitor.cpp
index 8d3d291c94f..793aa31b3ac 100644
--- a/streamingvisitors/src/tests/searchvisitor/searchvisitor.cpp
+++ b/streamingvisitors/src/tests/searchvisitor/searchvisitor.cpp
@@ -70,10 +70,9 @@ SearchVisitorTest::testCreateSearchVisitor(const vespalib::string & dir, const v
SearchVisitorFactory sFactory(dir);
VisitorFactory & factory(sFactory);
std::unique_ptr<Visitor> sv(static_cast<SearchVisitor *>(factory.makeVisitor(*_component, _env, params)));
- document::OrderingSpecification orderSpec;
document::BucketId bucketId;
std::vector<spi::DocEntry::UP> documents(createDocuments(dir));
- Visitor::HitCounter hitCounter(&orderSpec);
+ Visitor::HitCounter hitCounter;
sv->handleDocuments(bucketId, documents, hitCounter);
}
diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp
index 4706338a953..6b7dcc8c337 100644
--- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp
@@ -156,8 +156,7 @@ void SearchVisitor::GroupingEntry::aggregate(const document::Document & doc, sea
SearchVisitor::~SearchVisitor() {
if (! isCompletedCalled()) {
- document::OrderingSpecification orderSpec;
- HitCounter hc(&orderSpec);
+ HitCounter hc;
completedVisitingInternal(hc);
}
}
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/VisitorOrdering.java b/vdslib/src/main/java/com/yahoo/vdslib/VisitorOrdering.java
deleted file mode 100644
index 5cd7b23e5c4..00000000000
--- a/vdslib/src/main/java/com/yahoo/vdslib/VisitorOrdering.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vdslib;
-
-public class VisitorOrdering {
- public static int ASCENDING = 0;
- public static int DESCENDING = 1;
-
- public int order;
- public long orderingStart;
- public short widthBits;
- public short divisionBits;
-
- public VisitorOrdering() {
- this(ASCENDING, (long)0, (short)0, (short)0);
- }
-
- public VisitorOrdering(int order) {
- this(order, (long)0, (short)0, (short)0);
- }
-
- public VisitorOrdering(int order, long orderingStart, short widthBits, short divisionBits) {
- this.order = order;
- this.orderingStart = orderingStart;
- this.widthBits = widthBits;
- this.divisionBits = divisionBits;
- }
-
- public int getOrder() { return order; }
- public long getOrderingStart() { return orderingStart; }
- public short getWidthBits() { return widthBits; }
- public short getDivisionBits() { return divisionBits; }
-
- public String toString() {
- String out = (order == ASCENDING ? "+" : "-") +
- "," + widthBits +
- "," + divisionBits +
- "," + orderingStart;
- return out;
- }
-}
diff --git a/vdslib/src/vespa/vdslib/container/CMakeLists.txt b/vdslib/src/vespa/vdslib/container/CMakeLists.txt
index 0526606196b..614c08e5947 100644
--- a/vdslib/src/vespa/vdslib/container/CMakeLists.txt
+++ b/vdslib/src/vespa/vdslib/container/CMakeLists.txt
@@ -6,6 +6,5 @@ vespa_add_library(vdslib_container OBJECT
searchresult.cpp
documentsummary.cpp
visitorstatistics.cpp
- visitorordering.cpp
DEPENDS
)
diff --git a/vdslib/src/vespa/vdslib/container/visitorordering.cpp b/vdslib/src/vespa/vdslib/container/visitorordering.cpp
deleted file mode 100644
index 895c102015e..00000000000
--- a/vdslib/src/vespa/vdslib/container/visitorordering.cpp
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include "visitorordering.h"
-#include <sstream>
-
-namespace vdslib {
-
-std::string
-VisitorOrdering::toString() const {
- std::ostringstream ost;
- ost << (_order == ASCENDING ? "+" : "-") << "," << _widthBits << "," << _divisionBits << "," << _orderingStart;
- return ost.str();
-}
-
-}
diff --git a/vdslib/src/vespa/vdslib/container/visitorordering.h b/vdslib/src/vespa/vdslib/container/visitorordering.h
deleted file mode 100644
index e8a5c5fcde8..00000000000
--- a/vdslib/src/vespa/vdslib/container/visitorordering.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#pragma once
-
-#include <string>
-#include <cstdint>
-
-namespace vdslib {
-
-class VisitorOrdering {
-public:
- enum Order { ASCENDING = 0, DESCENDING };
-
- VisitorOrdering()
- : _order(ASCENDING), _orderingStart(0), _widthBits(0), _divisionBits(0) {};
-
- VisitorOrdering(Order order)
- : _order(order), _orderingStart(0), _widthBits(0), _divisionBits(0) {};
-
- VisitorOrdering(Order order, uint64_t orderingStart, uint16_t widthBits, uint16_t divisionBits)
- : _order(order), _orderingStart(orderingStart), _widthBits(widthBits), _divisionBits(divisionBits) {}
-
- Order getOrder() const { return _order; }
- uint64_t getOrderingStart() const { return _orderingStart; }
- uint16_t getWidthBits() const { return _widthBits; }
- uint16_t getDivisionBits() const { return _divisionBits; }
-
- std::string toString() const;
-
-private:
- Order _order;
- uint64_t _orderingStart;
- uint16_t _widthBits;
- uint16_t _divisionBits;
-};
-
-}
-
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java
index 333f1d2f8c9..94a38a9d3db 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java
@@ -23,7 +23,6 @@ import com.yahoo.documentapi.metrics.DocumentOperationStatus;
import com.yahoo.documentapi.metrics.DocumentOperationType;
import com.yahoo.messagebus.StaticThrottlePolicy;
import com.yahoo.metrics.simple.MetricReceiver;
-import com.yahoo.vdslib.VisitorOrdering;
import com.yahoo.vespaclient.ClusterDef;
import com.yahoo.vespaxmlparser.FeedOperation;
import com.yahoo.yolean.concurrent.ConcurrentResourcePool;
@@ -429,7 +428,6 @@ public class OperationHandlerImpl implements OperationHandler {
params.setSessionTimeoutMs(VISIT_TIMEOUT_MS);
params.visitInconsistentBuckets(true); // TODO document this as part of consistency doc
- params.setVisitorOrdering(VisitorOrdering.ASCENDING);
BucketSpaceRoute bucketSpaceRoute = resolveBucketSpaceRoute(options.cluster, options.bucketSpace, restUri);
params.setRoute(bucketSpaceRoute.getClusterRoute());
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java b/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java
index a92caa4466d..e093b0987ec 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java
@@ -12,7 +12,6 @@ import com.yahoo.documentapi.messagebus.MessageBusParams;
import com.yahoo.documentapi.messagebus.loadtypes.LoadTypeSet;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
import com.yahoo.log.LogSetup;
-import com.yahoo.document.select.OrderingSpecification;
import com.yahoo.messagebus.StaticThrottlePolicy;
import com.yahoo.vespaclient.ClusterDef;
import com.yahoo.vespaclient.ClusterList;
@@ -544,16 +543,6 @@ public class VdsVisit {
// (real time) write and read operations.
params.setPriority(DocumentProtocol.Priority.LOW_1);
}
- if (line.hasOption("ordering")) {
- String opt = line.getOptionValue("ordering");
- if (opt.equalsIgnoreCase("ascending")) {
- params.setVisitorOrdering(OrderingSpecification.ASCENDING);
- } else if (opt.equalsIgnoreCase("descending")) {
- params.setVisitorOrdering(OrderingSpecification.DESCENDING);
- } else {
- throw new IllegalArgumentException("Unknown ordering. Legal values are \"ascending\", \"descending\"");
- }
- }
if (line.hasOption("skipbucketsonfatalerrors")) {
params.skipBucketsOnFatalErrors(true);
}