diff options
7 files changed, 3 insertions, 131 deletions
diff --git a/document/src/vespa/document/select/CMakeLists.txt b/document/src/vespa/document/select/CMakeLists.txt index a4536f82c21..81e5d86675c 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 - orderingspecification.cpp result.cpp resultset.cpp resultlist.cpp diff --git a/document/src/vespa/document/select/orderingspecification.cpp b/document/src/vespa/document/select/orderingspecification.cpp deleted file mode 100644 index 60cff313bdb..00000000000 --- a/document/src/vespa/document/select/orderingspecification.cpp +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -#include "orderingspecification.h" -#include <vespa/vespalib/stllike/asciistream.h> - -namespace document { - -bool -OrderingSpecification::operator==(const OrderingSpecification& other) const { - return _order == other._order && _orderingStart == other._orderingStart && _widthBits == other._widthBits && _divisionBits == other._divisionBits; -} - -vespalib::string -OrderingSpecification::toString() const { - vespalib::asciistream ost; - ost << (_order == ASCENDING ? "+" : "-") << "," << _widthBits << "," << _divisionBits << "," << _orderingStart; - return ost.str(); -} - -std::ostream& -operator<<(std::ostream& out, const OrderingSpecification& o) -{ - out << o.toString(); - return out; -} - -} diff --git a/document/src/vespa/document/select/orderingspecification.h b/document/src/vespa/document/select/orderingspecification.h deleted file mode 100644 index 370197dd8e9..00000000000 --- a/document/src/vespa/document/select/orderingspecification.h +++ /dev/null @@ -1,43 +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 <vespa/fastos/types.h> -#include <vespa/vespalib/stllike/string.h> - -namespace document { - -class OrderingSpecification { -public: - typedef std::unique_ptr<OrderingSpecification> UP; - - enum Order { ASCENDING = 0, DESCENDING }; - - OrderingSpecification() - : _order(ASCENDING), _orderingStart(0), _widthBits(0), _divisionBits(0) {}; - - OrderingSpecification(Order order) - : _order(order), _orderingStart(0), _widthBits(0), _divisionBits(0) {}; - - OrderingSpecification(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; } - - bool operator==(const OrderingSpecification& other) const; - - vespalib::string toString() const; - -private: - Order _order; - uint64_t _orderingStart; - uint16_t _widthBits; - uint16_t _divisionBits; -}; - -std::ostream& -operator<<(std::ostream& out, const OrderingSpecification& o); - -} diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/visitor.h b/documentapi/src/vespa/documentapi/messagebus/messages/visitor.h index b838fc9d395..b18a4e985f3 100644 --- a/documentapi/src/vespa/documentapi/messagebus/messages/visitor.h +++ b/documentapi/src/vespa/documentapi/messagebus/messages/visitor.h @@ -9,7 +9,6 @@ #include <vespa/vdslib/container/visitorstatistics.h> #include <vespa/document/bucket/bucketid.h> #include <vespa/documentapi/messagebus/documentprotocol.h> -#include <vespa/document/select/orderingspecification.h> #include <vespa/document/fieldvalue/document.h> diff --git a/storage/src/vespa/storage/distributor/operations/external/visitororder.h b/storage/src/vespa/storage/distributor/operations/external/visitororder.h index 89a5d9e3734..f33500bfc1f 100644 --- a/storage/src/vespa/storage/distributor/operations/external/visitororder.h +++ b/storage/src/vespa/storage/distributor/operations/external/visitororder.h @@ -1,34 +1,13 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include <climits> +#include <vespa/document/bucket/bucketid.h> namespace storage::distributor { struct VisitorOrder { - document::OrderingSpecification _ordering; - VisitorOrder() - : _ordering() {} - - document::BucketId::Type getOrder(const document::BucketId& bid) { - int32_t orderBitCount = _ordering.getWidthBits() - - _ordering.getDivisionBits(); - document::BucketId::Type order = bid.withoutCountBits(); - order >>= 32; - order <<= 64 - orderBitCount; - order = document::BucketId::reverse(order); - return order; - } - - document::BucketId::Type padOnesRight(const document::BucketId::Type& id, - int32_t count) { - document::BucketId::Type res = id; - document::BucketId::Type one = 1; - for (int32_t i=0; i<count; i++) { - res |= (one << i); - } - return res; - } + VisitorOrder() { } bool operator()(const document::BucketId& a, const document::BucketId& b) { if (a == document::BucketId(INT_MAX) || @@ -39,40 +18,7 @@ struct VisitorOrder { b == document::BucketId(INT_MAX)) { return true; // All after null, non after max } - int32_t orderBitCount = _ordering.getWidthBits() - - _ordering.getDivisionBits(); - int32_t aOrderBitsUsed = std::max((int32_t)a.getUsedBits() - 32, 0); - int32_t bOrderBitsUsed = std::max((int32_t)b.getUsedBits() - 32, 0); - if (orderBitCount <= 0 || - aOrderBitsUsed == 0 || - bOrderBitsUsed == 0) { - return (a.toKey() < b.toKey()); // Reversed bucket id order - } - - document::BucketId::Type aOrder = getOrder(a); - document::BucketId::Type bOrder = getOrder(b); - - document::BucketId::Type sOrder = _ordering.getOrderingStart(); - sOrder <<= 64 - _ordering.getWidthBits(); - sOrder >>= 64 - orderBitCount; - - if (_ordering.getOrder() == document::OrderingSpecification::ASCENDING) { - aOrder = padOnesRight(aOrder, orderBitCount - aOrderBitsUsed); - bOrder = padOnesRight(bOrder, orderBitCount - bOrderBitsUsed); - } - - aOrder -= sOrder; - bOrder -= sOrder; - - if (_ordering.getOrder() == document::OrderingSpecification::DESCENDING) { - aOrder = -aOrder; - bOrder = -bOrder; - } - - if (aOrder == bOrder) { - return (a.toKey() < b.toKey()); // Reversed bucket id order - } - return (aOrder < bOrder); + return (a.toKey() < b.toKey()); // Reversed bucket id order } }; diff --git a/storage/src/vespa/storage/visiting/visitor.h b/storage/src/vespa/storage/visiting/visitor.h index 88f3ad4f3c3..8a1f675a4c5 100644 --- a/storage/src/vespa/storage/visiting/visitor.h +++ b/storage/src/vespa/storage/visiting/visitor.h @@ -15,7 +15,6 @@ #include "memory_bounded_trace.h" #include <vespa/storageapi/messageapi/storagemessage.h> #include <vespa/storageapi/message/visitor.h> -#include <vespa/document/select/orderingspecification.h> #include <vespa/storage/common/storagecomponent.h> #include <vespa/storage/common/visitorfactory.h> #include <vespa/documentapi/messagebus/messages/documentmessage.h> diff --git a/storageapi/src/vespa/storageapi/message/visitor.h b/storageapi/src/vespa/storageapi/message/visitor.h index 4475e1c5614..f7dcaa63b20 100644 --- a/storageapi/src/vespa/storageapi/message/visitor.h +++ b/storageapi/src/vespa/storageapi/message/visitor.h @@ -13,7 +13,6 @@ #include <vespa/vdslib/container/visitorstatistics.h> #include <vespa/storageapi/messageapi/storagecommand.h> #include <vespa/storageapi/messageapi/storagereply.h> -#include <vespa/document/select/orderingspecification.h> namespace storage::api { |