diff --git a/3rdParty/fuerte/include/fuerte/types.h b/3rdParty/fuerte/include/fuerte/types.h index b673acb41b..7e7a082e72 100644 --- a/3rdParty/fuerte/include/fuerte/types.h +++ b/3rdParty/fuerte/include/fuerte/types.h @@ -36,8 +36,8 @@ class Request; class Response; using Error = std::uint32_t; -using MessageID = uint64_t; // id that identifies a Request. -using StatusCode = uint32_t; +using MessageID = std::uint64_t; // id that identifies a Request. +using StatusCode = std::uint32_t; StatusCode constexpr StatusUndefined = 0; StatusCode constexpr StatusOK = 200; diff --git a/3rdParty/fuerte/src/HttpConnection.h b/3rdParty/fuerte/src/HttpConnection.h index deccc8e136..8ec6270095 100644 --- a/3rdParty/fuerte/src/HttpConnection.h +++ b/3rdParty/fuerte/src/HttpConnection.h @@ -56,7 +56,7 @@ class HttpConnection final : public fuerte::Connection { MessageID sendRequest(std::unique_ptr, RequestCallback) override; // Return the number of unfinished requests. - size_t requestsLeft() const override { + std::size_t requestsLeft() const override { return _numQueued.load(std::memory_order_acquire); } diff --git a/3rdParty/fuerte/src/VstConnection.h b/3rdParty/fuerte/src/VstConnection.h index 2e2c27accf..13392c81bd 100644 --- a/3rdParty/fuerte/src/VstConnection.h +++ b/3rdParty/fuerte/src/VstConnection.h @@ -60,7 +60,7 @@ class VstConnection final : public Connection { MessageID sendRequest(std::unique_ptr, RequestCallback) override; // Return the number of unfinished requests. - size_t requestsLeft() const override { + std::size_t requestsLeft() const override { return (_loopState.load(std::memory_order_acquire) & WRITE_LOOP_QUEUE_MASK) + _messageStore.size(); } diff --git a/3rdParty/velocypack/include/velocypack/Helpers.h b/3rdParty/velocypack/include/velocypack/Helpers.h deleted file mode 100644 index fd8dd39d5c..0000000000 --- a/3rdParty/velocypack/include/velocypack/Helpers.h +++ /dev/null @@ -1,66 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -/// @brief Library to build up VPack documents. -/// -/// DISCLAIMER -/// -/// Copyright 2015 ArangoDB GmbH, Cologne, Germany -/// -/// Licensed under the Apache License, Version 2.0 (the "License"); -/// you may not use this file except in compliance with the License. -/// You may obtain a copy of the License at -/// -/// http://www.apache.org/licenses/LICENSE-2.0 -/// -/// Unless required by applicable law or agreed to in writing, software -/// distributed under the License is distributed on an "AS IS" BASIS, -/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -/// See the License for the specific language governing permissions and -/// limitations under the License. -/// -/// Copyright holder is ArangoDB GmbH, Cologne, Germany -/// -/// @author Max Neunhoeffer -/// @author Jan Steemann -/// @author Copyright 2015, ArangoDB GmbH, Cologne, Germany -//////////////////////////////////////////////////////////////////////////////// - -#ifndef VELOCYPACK_HELPERS_H -#define VELOCYPACK_HELPERS_H 1 - -#include -#include -#include - -#include "velocypack/velocypack-common.h" -#include "velocypack/Exception.h" -#include "velocypack/Options.h" -#include "velocypack/Slice.h" - -namespace arangodb { -namespace velocypack { - -struct TopLevelAttributeExcludeHandler final : AttributeExcludeHandler { - TopLevelAttributeExcludeHandler (std::unordered_set const& attributes) - : attributes(attributes) { - } - - bool shouldExclude(Slice const& key, int nesting) override final { - return (nesting == 1 && attributes.find(key.copyString()) != attributes.end()); - } - - std::unordered_set attributes; -}; - -static inline Slice buildNullValue(char* dst, size_t length) { - if (length < 1) { - throw Exception(Exception::InternalError, "supplied buffer is too small"); - } - - *dst = 0x18; - return Slice(dst); -} - -} // namespace arangodb::velocypack -} // namespace arangodb - -#endif diff --git a/3rdParty/velocypack/include/velocypack/Options.h b/3rdParty/velocypack/include/velocypack/Options.h index c593fd8a14..d43e849699 100644 --- a/3rdParty/velocypack/include/velocypack/Options.h +++ b/3rdParty/velocypack/include/velocypack/Options.h @@ -72,9 +72,6 @@ struct Options { // has no JSON equivalent UnsupportedTypeBehavior unsupportedTypeBehavior = FailOnUnsupportedType; - // callback for excluding attributes from being built by the Parser - AttributeExcludeHandler* attributeExcludeHandler = nullptr; - AttributeTranslator* attributeTranslator = nullptr; // custom type handler used for processing custom types by Dumper and Slicer @@ -119,7 +116,7 @@ struct Options { // values as a security precaution), validated when object-building via // Builder and VelocyPack validation using Validator objects bool disallowExternals = false; - + // disallow using type Custom (to prevent injection of arbitrary opaque // values as a security precaution) bool disallowCustom = false; diff --git a/3rdParty/velocypack/include/velocypack/Slice.h b/3rdParty/velocypack/include/velocypack/Slice.h index 71946171fd..cabbb2f897 100644 --- a/3rdParty/velocypack/include/velocypack/Slice.h +++ b/3rdParty/velocypack/include/velocypack/Slice.h @@ -47,8 +47,6 @@ namespace arangodb { namespace velocypack { -class SliceScope; - class Slice { // This class provides read only access to a VPack value, it is // intentionally light-weight (only one pointer value), such that @@ -64,57 +62,61 @@ class Slice { public: static constexpr uint64_t defaultSeed = 0xdeadbeef; + + static uint8_t const noneSliceData[]; + static uint8_t const illegalSliceData[]; + static uint8_t const nullSliceData[]; + static uint8_t const falseSliceData[]; + static uint8_t const trueSliceData[]; + static uint8_t const zeroSliceData[]; + static uint8_t const emptyStringSliceData[]; + static uint8_t const emptyArraySliceData[]; + static uint8_t const emptyObjectSliceData[]; + static uint8_t const minKeySliceData[]; + static uint8_t const maxKeySliceData[]; // constructor for an empty Value of type None - constexpr Slice() noexcept : Slice("\x00") {} + constexpr Slice() noexcept : Slice(noneSliceData) {} // creates a Slice from a pointer to a uint8_t array explicit constexpr Slice(uint8_t const* start) noexcept : _start(start) {} - - // creates a Slice from a pointer to a char array - explicit constexpr Slice(char const* start) noexcept - : _start((uint8_t const*)(start)) {} // reinterpret_cast does not work C++ 11 5.19.2 // No destructor, does not take part in memory management // creates a slice of type None - static constexpr Slice noneSlice() noexcept { return Slice("\x00"); } + static constexpr Slice noneSlice() noexcept { return Slice(noneSliceData); } // creates a slice of type Illegal - static constexpr Slice illegalSlice() noexcept { return Slice("\x17"); } + static constexpr Slice illegalSlice() noexcept { return Slice(illegalSliceData); } // creates a slice of type Null - static constexpr Slice nullSlice() noexcept { return Slice("\x18"); } + static constexpr Slice nullSlice() noexcept { return Slice(nullSliceData); } // creates a slice of type Boolean with false value - static constexpr Slice falseSlice() noexcept { return Slice("\x19"); } + static constexpr Slice falseSlice() noexcept { return Slice(falseSliceData); } // creates a slice of type Boolean with true value - static constexpr Slice trueSlice() noexcept { return Slice("\x1a"); } + static constexpr Slice trueSlice() noexcept { return Slice(trueSliceData); } // creates a slice of type Smallint(0) - static constexpr Slice zeroSlice() noexcept { return Slice("\x30"); } + static constexpr Slice zeroSlice() noexcept { return Slice(zeroSliceData); } // creates a slice of type String, empty - static constexpr Slice emptyStringSlice() noexcept { return Slice("\x40"); } + static constexpr Slice emptyStringSlice() noexcept { return Slice(emptyStringSliceData); } // creates a slice of type Array, empty - static constexpr Slice emptyArraySlice() noexcept { return Slice("\x01"); } + static constexpr Slice emptyArraySlice() noexcept { return Slice(emptyArraySliceData); } // creates a slice of type Object, empty - static constexpr Slice emptyObjectSlice() noexcept { return Slice("\x0a"); } + static constexpr Slice emptyObjectSlice() noexcept { return Slice(emptyObjectSliceData); } // creates a slice of type MinKey - static constexpr Slice minKeySlice() noexcept { return Slice("\x1e"); } + static constexpr Slice minKeySlice() noexcept { return Slice(minKeySliceData); } // creates a slice of type MaxKey - static constexpr Slice maxKeySlice() noexcept { return Slice("\x1f"); } + static constexpr Slice maxKeySlice() noexcept { return Slice(maxKeySliceData); } - // creates a Slice from Json and adds it to a scope - static Slice fromJson(SliceScope& scope, std::string const& json, - Options const* options = &Options::Defaults); - // pointer to the head byte constexpr uint8_t const* start() const noexcept { return _start; } @@ -516,7 +518,7 @@ class Slice { // an External Slice resolveExternal() const { if (*_start == 0x1d) { - return Slice(extractPointer()); + return Slice(reinterpret_cast(extractPointer())); } return *this; } @@ -524,9 +526,9 @@ class Slice { // returns the Slice managed by an External or the Slice itself if it's not // an External, recursive version Slice resolveExternals() const { - char const* current = reinterpret_cast(_start); + uint8_t const* current = _start; while (*current == 0x1d) { - current = Slice(current).extractPointer(); + current = reinterpret_cast(Slice(current).extractPointer()); } return Slice(current); } @@ -1083,20 +1085,6 @@ class Slice { } }; -// a class for keeping Slice allocations in scope -class SliceScope { - public: - SliceScope(SliceScope const&) = delete; - SliceScope& operator=(SliceScope const&) = delete; - SliceScope(); - ~SliceScope(); - - Slice add(uint8_t const* data, ValueLength size); - - private: - std::vector _allocations; -}; - } // namespace arangodb::velocypack } // namespace arangodb diff --git a/3rdParty/velocypack/include/velocypack/velocypack-aliases.h b/3rdParty/velocypack/include/velocypack/velocypack-aliases.h index 73069a2b63..48186ab65f 100644 --- a/3rdParty/velocypack/include/velocypack/velocypack-aliases.h +++ b/3rdParty/velocypack/include/velocypack/velocypack-aliases.h @@ -99,13 +99,6 @@ using VPackAttributeTranslator = arangodb::velocypack::AttributeTranslator; #endif #endif -#ifdef VELOCYPACK_HELPERS_H -#ifndef VELOCYPACK_ALIAS_HELPERS -#define VELOCYPACK_ALIAS_HELPERS -using VPackTopLevelAttributeExcludeHandler = arangodb::velocypack::TopLevelAttributeExcludeHandler; -#endif -#endif - #ifdef VELOCYPACK_DUMPER_H #ifndef VELOCYPACK_ALIAS_DUMPER #define VELOCYPACK_ALIAS_DUMPER diff --git a/3rdParty/velocypack/src/Dumper.cpp b/3rdParty/velocypack/src/Dumper.cpp index 01d4ccb662..980ab346a5 100644 --- a/3rdParty/velocypack/src/Dumper.cpp +++ b/3rdParty/velocypack/src/Dumper.cpp @@ -437,7 +437,7 @@ void Dumper::dumpValue(Slice const* slice, Slice const* base) { } case ValueType::External: { - Slice const external(slice->getExternal()); + Slice const external(reinterpret_cast(slice->getExternal())); dumpValue(&external, base); break; } diff --git a/3rdParty/velocypack/src/Parser.cpp b/3rdParty/velocypack/src/Parser.cpp index 8ab1d5d894..4f83664e13 100644 --- a/3rdParty/velocypack/src/Parser.cpp +++ b/3rdParty/velocypack/src/Parser.cpp @@ -482,19 +482,10 @@ void Parser::parseObject() { ++_pos; _builderPtr->reportAdd(); - bool excludeAttribute = false; auto const lastPos = _builderPtr->_pos; - if (options->attributeExcludeHandler == nullptr) { - parseString(); - } else { - parseString(); - if (options->attributeExcludeHandler->shouldExclude( - Slice(_builderPtr->_start + lastPos), _nesting)) { - excludeAttribute = true; - } - } + parseString(); - if (!excludeAttribute && options->attributeTranslator != nullptr) { + if (options->attributeTranslator != nullptr) { // check if a translation for the attribute name exists Slice key(_builderPtr->_start + lastPos); @@ -523,10 +514,6 @@ void Parser::parseObject() { parseJson(); - if (excludeAttribute) { - _builderPtr->removeLast(); - } - i = skipWhiteSpace("Expecting ',' or '}'"); if (i == '}') { // end of object diff --git a/3rdParty/velocypack/src/Slice.cpp b/3rdParty/velocypack/src/Slice.cpp index dce7e47711..55121481a2 100644 --- a/3rdParty/velocypack/src/Slice.cpp +++ b/3rdParty/velocypack/src/Slice.cpp @@ -38,20 +38,26 @@ using namespace arangodb::velocypack; +namespace { + // maximum values for integers of different byte sizes -static int64_t const maxValues[] = { +int64_t const maxValues[] = { 128, 32768, 8388608, 2147483648, 549755813888, 140737488355328, 36028797018963968 }; -// creates a Slice from Json and adds it to a scope -Slice Slice::fromJson(SliceScope& scope, std::string const& json, - Options const* options) { - Parser parser(options); - parser.parse(json); - - Builder const& b = parser.builder(); // don't copy Builder contents here - return scope.add(b.start(), b.size()); -} +} // namespace + +uint8_t const Slice::noneSliceData[] = { 0x00 }; +uint8_t const Slice::illegalSliceData[] = { 0x17 }; +uint8_t const Slice::nullSliceData[] = { 0x18 }; +uint8_t const Slice::falseSliceData[] = { 0x19 }; +uint8_t const Slice::trueSliceData[] = { 0x1a }; +uint8_t const Slice::zeroSliceData[] = { 0x30 }; +uint8_t const Slice::emptyStringSliceData[] = { 0x40 }; +uint8_t const Slice::emptyArraySliceData[] = { 0x01 }; +uint8_t const Slice::emptyObjectSliceData[] = { 0x0a }; +uint8_t const Slice::minKeySliceData[] = { 0x1e }; +uint8_t const Slice::maxKeySliceData[] = { 0x1f }; // translates an integer key into a string Slice Slice::translate() const { @@ -267,7 +273,7 @@ int64_t Slice::getIntUnchecked() const noexcept { return toInt64(v); } else { int64_t vv = static_cast(v); - int64_t shift = maxValues[h - 0x20]; + int64_t shift = ::maxValues[h - 0x20]; return vv < shift ? vv : vv - (shift << 1); } } @@ -288,7 +294,7 @@ int64_t Slice::getInt() const { return toInt64(v); } else { int64_t vv = static_cast(v); - int64_t shift = maxValues[h - 0x20]; + int64_t shift = ::maxValues[h - 0x20]; return vv < shift ? vv : vv - (shift << 1); } } @@ -647,22 +653,6 @@ template Slice Slice::searchObjectKeyBinary<2>(StringRef const& attribute, Value template Slice Slice::searchObjectKeyBinary<4>(StringRef const& attribute, ValueLength ieBase, ValueLength n) const; template Slice Slice::searchObjectKeyBinary<8>(StringRef const& attribute, ValueLength ieBase, ValueLength n) const; -SliceScope::SliceScope() : _allocations() {} - -SliceScope::~SliceScope() { - for (auto& it : _allocations) { - delete[] it; - } -} - -Slice SliceScope::add(uint8_t const* data, ValueLength size) { - size_t const s = checkOverflow(size); - std::unique_ptr copy(new uint8_t[s]); - memcpy(copy.get(), data, s); - _allocations.push_back(copy.get()); - return Slice(copy.release()); -} - std::ostream& operator<<(std::ostream& stream, Slice const* slice) { stream << "[Slice " << valueTypeName(slice->type()) << " (" << slice->hexType() << "), byteSize: " << slice->byteSize() << "]"; diff --git a/arangod/Aql/Aggregator.cpp b/arangod/Aql/Aggregator.cpp index 287b4dca20..56cf1ae9db 100644 --- a/arangod/Aql/Aggregator.cpp +++ b/arangod/Aql/Aggregator.cpp @@ -626,12 +626,12 @@ struct AggregatorUnique : public Aggregator { } char* pos = allocator.store(s.startAs(), s.byteSize()); - seen.emplace(pos); + seen.emplace(reinterpret_cast(pos)); if (builder.isClosed()) { builder.openArray(); } - builder.add(VPackSlice(pos)); + builder.add(VPackSlice(reinterpret_cast(pos))); } AqlValue stealValue() override final { @@ -673,12 +673,12 @@ struct AggregatorUniqueStep2 final : public AggregatorUnique { } char* pos = allocator.store(it.startAs(), it.byteSize()); - seen.emplace(pos); + seen.emplace(reinterpret_cast(pos)); if (builder.isClosed()) { builder.openArray(); } - builder.add(VPackSlice(pos)); + builder.add(VPackSlice(reinterpret_cast(pos))); } } }; @@ -709,7 +709,7 @@ struct AggregatorSortedUnique : public Aggregator { } char* pos = allocator.store(s.startAs(), s.byteSize()); - seen.emplace(pos); + seen.emplace(reinterpret_cast(pos)); } AqlValue stealValue() override final { @@ -751,7 +751,7 @@ struct AggregatorSortedUniqueStep2 final : public AggregatorSortedUnique { } char* pos = allocator.store(it.startAs(), it.byteSize()); - seen.emplace(pos); + seen.emplace(reinterpret_cast(pos)); } } }; @@ -783,7 +783,7 @@ struct AggregatorCountDistinct : public Aggregator { } char* pos = allocator.store(s.startAs(), s.byteSize()); - seen.emplace(pos); + seen.emplace(reinterpret_cast(pos)); } AqlValue stealValue() override final { @@ -818,7 +818,7 @@ struct AggregatorCountDistinctStep2 final : public AggregatorCountDistinct { } char* pos = allocator.store(it.startAs(), it.byteSize()); - seen.emplace(pos); + seen.emplace(reinterpret_cast(pos)); } } }; diff --git a/arangod/Cluster/ClusterMethods.cpp b/arangod/Cluster/ClusterMethods.cpp index 4bb743c97f..24480c1d0e 100644 --- a/arangod/Cluster/ClusterMethods.cpp +++ b/arangod/Cluster/ClusterMethods.cpp @@ -46,7 +46,6 @@ #include #include -#include #include #include #include diff --git a/arangod/Cluster/RestClusterHandler.cpp b/arangod/Cluster/RestClusterHandler.cpp index 7e494201de..f12c4229a0 100644 --- a/arangod/Cluster/RestClusterHandler.cpp +++ b/arangod/Cluster/RestClusterHandler.cpp @@ -74,7 +74,7 @@ void RestClusterHandler::handleAgencyDump() { AuthenticationFeature* af = AuthenticationFeature::instance(); if (af->isActive() && !_request->user().empty()) { - auth::Level lvl = auth::Level::NONE; + auth::Level lvl; if (af->userManager() != nullptr) { lvl = af->userManager()->databaseAuthLevel(_request->user(), "_system", true); } else { diff --git a/arangod/GeneralServer/VstCommTask.cpp b/arangod/GeneralServer/VstCommTask.cpp index 26d113dacc..bf314a644e 100644 --- a/arangod/GeneralServer/VstCommTask.cpp +++ b/arangod/GeneralServer/VstCommTask.cpp @@ -63,7 +63,7 @@ inline void validateMessage(char const* vpStart, char const* vpEnd) { validator.validate(vpStart, std::distance(vpStart, vpEnd), /*isSubPart =*/true); - VPackSlice slice = VPackSlice(vpStart); + VPackSlice slice = VPackSlice(reinterpret_cast(vpStart)); if (!slice.isArray() || slice.length() < 2) { throw std::runtime_error( "VST message does not contain a valid request header"); diff --git a/arangod/MMFiles/MMFilesCollection.cpp b/arangod/MMFiles/MMFilesCollection.cpp index b458892a29..b841d2d5ff 100644 --- a/arangod/MMFiles/MMFilesCollection.cpp +++ b/arangod/MMFiles/MMFilesCollection.cpp @@ -170,7 +170,7 @@ Result persistLocalDocumentIdIterator(MMFilesMarker const* marker, void* data, case TRI_DF_MARKER_VPACK_DOCUMENT: { auto transactionId = MMFilesDatafileHelper::TransactionId(marker); - VPackSlice const slice(reinterpret_cast(marker) + + VPackSlice const slice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(TRI_DF_MARKER_VPACK_DOCUMENT)); uint8_t const* vpack = slice.begin(); @@ -333,7 +333,7 @@ int MMFilesCollection::OpenIteratorHandleDocumentMarker(MMFilesMarker const* mar transaction::Methods* trx = state->_trx; TRI_ASSERT(trx != nullptr); - VPackSlice const slice(reinterpret_cast(marker) + + VPackSlice const slice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(TRI_DF_MARKER_VPACK_DOCUMENT)); uint8_t const* vpack = slice.begin(); @@ -452,7 +452,7 @@ int MMFilesCollection::OpenIteratorHandleDeletionMarker(MMFilesMarker const* mar TRI_ASSERT(physical != nullptr); transaction::Methods* trx = state->_trx; - VPackSlice const slice(reinterpret_cast(marker) + + VPackSlice const slice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(TRI_DF_MARKER_VPACK_REMOVE)); VPackSlice keySlice; diff --git a/arangod/MMFiles/MMFilesCollectorThread.cpp b/arangod/MMFiles/MMFilesCollectorThread.cpp index b0655ae647..478cc63b15 100644 --- a/arangod/MMFiles/MMFilesCollectorThread.cpp +++ b/arangod/MMFiles/MMFilesCollectorThread.cpp @@ -141,7 +141,7 @@ static bool ScanMarker(MMFilesMarker const* marker, void* data, MMFilesDatafile* break; } - VPackSlice slice(reinterpret_cast(marker) + + VPackSlice slice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(type)); state->documentOperations[collectionId][transaction::helpers::extractKeyFromDocument(slice) .copyString()] = marker; @@ -642,7 +642,7 @@ void MMFilesCollectorThread::processCollectionMarker( auto& dfi = cache->createDfi(fid); dfi.numberUncollected--; - VPackSlice slice(reinterpret_cast(walMarker) + + VPackSlice slice(reinterpret_cast(walMarker) + MMFilesDatafileHelper::VPackOffset(type)); TRI_ASSERT(slice.isObject()); @@ -683,7 +683,7 @@ void MMFilesCollectorThread::processCollectionMarker( dfi.numberUncollected--; dfi.numberDeletions++; - VPackSlice slice(reinterpret_cast(walMarker) + + VPackSlice slice(reinterpret_cast(walMarker) + MMFilesDatafileHelper::VPackOffset(type)); TRI_ASSERT(slice.isObject()); diff --git a/arangod/MMFiles/MMFilesCompactorThread.cpp b/arangod/MMFiles/MMFilesCompactorThread.cpp index 74370f7aeb..a4ca079247 100644 --- a/arangod/MMFiles/MMFilesCompactorThread.cpp +++ b/arangod/MMFiles/MMFilesCompactorThread.cpp @@ -318,7 +318,7 @@ MMFilesCompactorThread::CompactionInitialContext MMFilesCompactorThread::getComp // new or updated document if (type == TRI_DF_MARKER_VPACK_DOCUMENT) { - VPackSlice const slice(reinterpret_cast(marker) + + VPackSlice const slice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(type)); TRI_ASSERT(slice.isObject()); @@ -415,7 +415,7 @@ void MMFilesCompactorThread::compactDatafiles(LogicalCollection* collection, // new or updated document if (type == TRI_DF_MARKER_VPACK_DOCUMENT) { - VPackSlice const slice(reinterpret_cast(marker) + + VPackSlice const slice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(type)); TRI_ASSERT(slice.isObject()); diff --git a/arangod/MMFiles/MMFilesDatafile.cpp b/arangod/MMFiles/MMFilesDatafile.cpp index 5609c124bd..b37acaf7b5 100644 --- a/arangod/MMFiles/MMFilesDatafile.cpp +++ b/arangod/MMFiles/MMFilesDatafile.cpp @@ -1718,7 +1718,7 @@ DatafileScan MMFilesDatafile::scanHelper() { if (ok) { if (type == TRI_DF_MARKER_VPACK_DOCUMENT || type == TRI_DF_MARKER_VPACK_REMOVE) { - VPackSlice const slice(reinterpret_cast(marker) + + VPackSlice const slice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(type)); TRI_ASSERT(slice.isObject()); try { diff --git a/arangod/MMFiles/MMFilesExportCursor.cpp b/arangod/MMFiles/MMFilesExportCursor.cpp index 6b363a7ab8..3c580ce773 100644 --- a/arangod/MMFiles/MMFilesExportCursor.cpp +++ b/arangod/MMFiles/MMFilesExportCursor.cpp @@ -101,7 +101,7 @@ Result MMFilesExportCursor::dumpSync(VPackBuilder& builder) { break; } - VPackSlice const slice(reinterpret_cast(_ex->_vpack.at(_position++))); + VPackSlice const slice(reinterpret_cast(_ex->_vpack.at(_position++))); builder.openObject(); diff --git a/arangod/MMFiles/MMFilesPersistentIndexKeyComparator.h b/arangod/MMFiles/MMFilesPersistentIndexKeyComparator.h index c3537de96b..83d63c271e 100644 --- a/arangod/MMFiles/MMFilesPersistentIndexKeyComparator.h +++ b/arangod/MMFiles/MMFilesPersistentIndexKeyComparator.h @@ -40,7 +40,7 @@ class MMFilesPersistentIndexKeyComparator final : public rocksdb::Comparator { ~MMFilesPersistentIndexKeyComparator() = default; static inline arangodb::velocypack::Slice extractKeySlice(rocksdb::Slice const& slice) { - return arangodb::velocypack::Slice(slice.data() + MMFilesPersistentIndex::keyPrefixSize()); + return arangodb::velocypack::Slice(reinterpret_cast(slice.data() + MMFilesPersistentIndex::keyPrefixSize())); } int Compare(rocksdb::Slice const& lhs, rocksdb::Slice const& rhs) const override; diff --git a/arangod/MMFiles/MMFilesWalAccess.cpp b/arangod/MMFiles/MMFilesWalAccess.cpp index 24128b67bf..efd3a07d7f 100644 --- a/arangod/MMFiles/MMFilesWalAccess.cpp +++ b/arangod/MMFiles/MMFilesWalAccess.cpp @@ -304,7 +304,7 @@ struct MMFilesWalAccessContext : WalAccessContext { } if (type == TRI_DF_MARKER_VPACK_DROP_DATABASE) { - VPackSlice slice(reinterpret_cast(marker) + + VPackSlice slice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(type)); _builder.add("db", slice.get("name")); @@ -316,7 +316,7 @@ struct MMFilesWalAccessContext : WalAccessContext { // ignore markers from dropped dbs return TRI_ERROR_NO_ERROR; } - VPackSlice slice(reinterpret_cast(marker) + + VPackSlice slice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(type)); _builder.add("db", VPackValue(vocbase->name())); _builder.add("cuid", slice.get("cuid")); @@ -364,7 +364,7 @@ struct MMFilesWalAccessContext : WalAccessContext { case TRI_DF_MARKER_VPACK_CHANGE_COLLECTION: case TRI_DF_MARKER_VPACK_CHANGE_VIEW: case TRI_DF_MARKER_VPACK_DROP_INDEX: { - VPackSlice slice(reinterpret_cast(marker) + + VPackSlice slice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(type)); _builder.add("data", slice); break; diff --git a/arangod/MMFiles/MMFilesWalRecoverState.cpp b/arangod/MMFiles/MMFilesWalRecoverState.cpp index 522e972334..24a6114c70 100644 --- a/arangod/MMFiles/MMFilesWalRecoverState.cpp +++ b/arangod/MMFiles/MMFilesWalRecoverState.cpp @@ -360,7 +360,7 @@ bool MMFilesWalRecoverState::InitialScanMarker(MMFilesMarker const* marker, void switch (type) { case TRI_DF_MARKER_VPACK_DOCUMENT: { - VPackSlice const payloadSlice(reinterpret_cast(marker) + + VPackSlice const payloadSlice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(type)); if (payloadSlice.isObject()) { TRI_voc_rid_t revisionId = @@ -648,7 +648,7 @@ bool MMFilesWalRecoverState::ReplayMarker(MMFilesMarker const* marker, case TRI_DF_MARKER_VPACK_RENAME_COLLECTION: { TRI_voc_tick_t const databaseId = MMFilesDatafileHelper::DatabaseId(marker); TRI_voc_cid_t const collectionId = MMFilesDatafileHelper::CollectionId(marker); - VPackSlice const payloadSlice(reinterpret_cast(marker) + + VPackSlice const payloadSlice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(type)); if (!payloadSlice.isObject()) { @@ -730,7 +730,7 @@ bool MMFilesWalRecoverState::ReplayMarker(MMFilesMarker const* marker, case TRI_DF_MARKER_VPACK_CHANGE_COLLECTION: { TRI_voc_tick_t const databaseId = MMFilesDatafileHelper::DatabaseId(marker); TRI_voc_cid_t const collectionId = MMFilesDatafileHelper::CollectionId(marker); - VPackSlice const payloadSlice(reinterpret_cast(marker) + + VPackSlice const payloadSlice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(type)); if (!payloadSlice.isObject()) { @@ -784,7 +784,7 @@ bool MMFilesWalRecoverState::ReplayMarker(MMFilesMarker const* marker, case TRI_DF_MARKER_VPACK_CHANGE_VIEW: { TRI_voc_tick_t const databaseId = MMFilesDatafileHelper::DatabaseId(marker); TRI_voc_cid_t const viewId = MMFilesDatafileHelper::ViewId(marker); - VPackSlice const payloadSlice(reinterpret_cast(marker) + + VPackSlice const payloadSlice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(type)); if (!payloadSlice.isObject()) { @@ -866,7 +866,7 @@ bool MMFilesWalRecoverState::ReplayMarker(MMFilesMarker const* marker, case TRI_DF_MARKER_VPACK_CREATE_INDEX: { TRI_voc_tick_t const databaseId = MMFilesDatafileHelper::DatabaseId(marker); TRI_voc_cid_t const collectionId = MMFilesDatafileHelper::CollectionId(marker); - VPackSlice const payloadSlice(reinterpret_cast(marker) + + VPackSlice const payloadSlice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(type)); if (!payloadSlice.isObject()) { @@ -948,7 +948,7 @@ bool MMFilesWalRecoverState::ReplayMarker(MMFilesMarker const* marker, case TRI_DF_MARKER_VPACK_CREATE_COLLECTION: { TRI_voc_tick_t const databaseId = MMFilesDatafileHelper::DatabaseId(marker); TRI_voc_cid_t const collectionId = MMFilesDatafileHelper::CollectionId(marker); - VPackSlice const payloadSlice(reinterpret_cast(marker) + + VPackSlice const payloadSlice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(type)); if (!payloadSlice.isObject()) { @@ -1063,7 +1063,7 @@ bool MMFilesWalRecoverState::ReplayMarker(MMFilesMarker const* marker, case TRI_DF_MARKER_VPACK_CREATE_VIEW: { TRI_voc_tick_t const databaseId = MMFilesDatafileHelper::DatabaseId(marker); TRI_voc_cid_t const viewId = MMFilesDatafileHelper::ViewId(marker); - VPackSlice const payloadSlice(reinterpret_cast(marker) + + VPackSlice const payloadSlice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(type)); if (!payloadSlice.isObject()) { @@ -1154,7 +1154,7 @@ bool MMFilesWalRecoverState::ReplayMarker(MMFilesMarker const* marker, case TRI_DF_MARKER_VPACK_CREATE_DATABASE: { TRI_voc_tick_t const databaseId = MMFilesDatafileHelper::DatabaseId(marker); - VPackSlice const payloadSlice(reinterpret_cast(marker) + + VPackSlice const payloadSlice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(type)); if (!payloadSlice.isObject()) { @@ -1235,7 +1235,7 @@ bool MMFilesWalRecoverState::ReplayMarker(MMFilesMarker const* marker, case TRI_DF_MARKER_VPACK_DROP_INDEX: { TRI_voc_tick_t const databaseId = MMFilesDatafileHelper::DatabaseId(marker); TRI_voc_cid_t const collectionId = MMFilesDatafileHelper::CollectionId(marker); - VPackSlice const payloadSlice(reinterpret_cast(marker) + + VPackSlice const payloadSlice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(type)); if (!payloadSlice.isObject()) { diff --git a/arangod/MMFiles/mmfiles-replication-dump.cpp b/arangod/MMFiles/mmfiles-replication-dump.cpp index 6242899517..81cb2cbbe9 100644 --- a/arangod/MMFiles/mmfiles-replication-dump.cpp +++ b/arangod/MMFiles/mmfiles-replication-dump.cpp @@ -172,7 +172,7 @@ static int StringifyMarker(MMFilesReplicationDumpContext* dump, TRI_voc_tick_t d case TRI_DF_MARKER_VPACK_DROP_VIEW: { Append(dump, ",\"data\":"); - VPackSlice slice(reinterpret_cast(marker) + + VPackSlice slice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(type)); arangodb::basics::VPackStringBufferAdapter adapter(dump->_buffer); VPackDumper dumper(&adapter, @@ -259,7 +259,7 @@ static int SliceifyMarker(MMFilesReplicationDumpContext* dump, TRI_voc_tick_t da case TRI_DF_MARKER_VPACK_DROP_COLLECTION: case TRI_DF_MARKER_VPACK_DROP_INDEX: case TRI_DF_MARKER_VPACK_DROP_VIEW: { - VPackSlice slice(reinterpret_cast(marker) + + VPackSlice slice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(type)); builder.add("data", slice); break; @@ -557,7 +557,7 @@ int MMFilesDumpLogReplication(MMFilesReplicationDumpContext* dump, TRI_ASSERT(collectionId != 0); if (dump->_vocbase->id() == databaseId) { - VPackSlice slice(reinterpret_cast(marker) + + VPackSlice slice(reinterpret_cast(marker) + MMFilesDatafileHelper::VPackOffset(type)); VPackSlice name = slice.get("name"); if (name.isString()) { diff --git a/arangod/Replication/DatabaseInitialSyncer.cpp b/arangod/Replication/DatabaseInitialSyncer.cpp index cd079ea826..ae8c499693 100644 --- a/arangod/Replication/DatabaseInitialSyncer.cpp +++ b/arangod/Replication/DatabaseInitialSyncer.cpp @@ -407,7 +407,7 @@ Result DatabaseInitialSyncer::parseCollectionDump(transaction::Methods& trx, // throws if the data is invalid validator.validate(p, remaining, /*isSubPart*/ true); - VPackSlice marker(p); + VPackSlice marker(reinterpret_cast(p)); Result r = parseCollectionDumpMarker(trx, coll, marker); if (r.fail()) { r.reset(r.errorNumber(), diff --git a/arangod/RestHandler/RestAdminServerHandler.cpp b/arangod/RestHandler/RestAdminServerHandler.cpp index 06e7345546..5745e0bac4 100644 --- a/arangod/RestHandler/RestAdminServerHandler.cpp +++ b/arangod/RestHandler/RestAdminServerHandler.cpp @@ -141,7 +141,7 @@ void RestAdminServerHandler::handleMode() { } else if (requestType == rest::RequestType::PUT) { AuthenticationFeature* af = AuthenticationFeature::instance(); if (af->isActive() && !_request->user().empty()) { - auth::Level lvl = auth::Level::NONE; + auth::Level lvl; if (af->userManager() != nullptr) { lvl = af->userManager()->databaseAuthLevel(_request->user(), TRI_VOC_SYSTEM_DATABASE, /*configured*/ true); diff --git a/arangod/RestHandler/RestShutdownHandler.cpp b/arangod/RestHandler/RestShutdownHandler.cpp index 7939a47325..75b133970e 100644 --- a/arangod/RestHandler/RestShutdownHandler.cpp +++ b/arangod/RestHandler/RestShutdownHandler.cpp @@ -53,7 +53,7 @@ RestStatus RestShutdownHandler::execute() { AuthenticationFeature* af = AuthenticationFeature::instance(); if (af->isActive() && !_request->user().empty()) { - auth::Level lvl = auth::Level::NONE; + auth::Level lvl; if (af->userManager() != nullptr) { lvl = af->userManager()->databaseAuthLevel(_request->user(), "_system", /*configured*/ true); diff --git a/arangod/RestServer/FlushFeature.cpp b/arangod/RestServer/FlushFeature.cpp index 9d1291f592..ce47f0a97f 100644 --- a/arangod/RestServer/FlushFeature.cpp +++ b/arangod/RestServer/FlushFeature.cpp @@ -391,7 +391,7 @@ class RocksDBFlushMarker { _databaseId = arangodb::rocksutils::uint64FromPersistent(ptr); ptr += sizeof(uint64_t); - _slice = arangodb::velocypack::Slice(ptr); + _slice = arangodb::velocypack::Slice(reinterpret_cast(ptr)); if (_slice.byteSize() != size_t(end - ptr)) { THROW_ARANGO_EXCEPTION(arangodb::Result( // exception diff --git a/arangod/RocksDBEngine/RocksDBBuilderIndex.cpp b/arangod/RocksDBEngine/RocksDBBuilderIndex.cpp index 8ed82f03ae..5798fd68c3 100644 --- a/arangod/RocksDBEngine/RocksDBBuilderIndex.cpp +++ b/arangod/RocksDBEngine/RocksDBBuilderIndex.cpp @@ -228,7 +228,7 @@ static arangodb::Result fillIndex(RocksDBIndex& ridx, WriteBatchType& batch, } res = ridx.insert(trx, &batched, RocksDBKey::documentId(it->key()), - VPackSlice(it->value().data()), Index::OperationMode::normal); + VPackSlice(reinterpret_cast(it->value().data())), Index::OperationMode::normal); if (res.fail()) { break; } diff --git a/arangod/RocksDBEngine/RocksDBCollection.cpp b/arangod/RocksDBEngine/RocksDBCollection.cpp index 39ada8c546..aa19304cc7 100644 --- a/arangod/RocksDBEngine/RocksDBCollection.cpp +++ b/arangod/RocksDBEngine/RocksDBCollection.cpp @@ -398,7 +398,7 @@ std::shared_ptr RocksDBCollection::createIndex(VPackSlice const& info, VPackBuilder builder; builder.openObject(); - for (auto const& pair : VPackObjectIterator(VPackSlice(ps.data()))) { + for (auto const& pair : VPackObjectIterator(VPackSlice(reinterpret_cast(ps.data())))) { if (pair.key.isEqualString("indexes")) { // append new index VPackArrayBuilder arrGuard(&builder, "indexes"); builder.add(VPackArrayIterator(pair.value)); @@ -696,7 +696,7 @@ Result RocksDBCollection::truncate(transaction::Methods& trx, OperationOptions& ++found; TRI_ASSERT(_objectId == RocksDBKey::objectId(iter->key())); - VPackSlice document(iter->value().data()); + VPackSlice document(reinterpret_cast(iter->value().data())); TRI_ASSERT(document.isObject()); // tmp may contain a pointer into rocksdb::WriteBuffer::_rep. This is @@ -950,7 +950,7 @@ Result RocksDBCollection::update(arangodb::transaction::Methods* trx, } TRI_ASSERT(previousPS.size() > 0); - VPackSlice const oldDoc(previousPS.data()); + VPackSlice const oldDoc(reinterpret_cast(previousPS.data())); previousMdr.setRevisionId(transaction::helpers::extractRevFromDocument(oldDoc)); TRI_ASSERT(previousMdr.revisionId() != 0); @@ -1060,7 +1060,7 @@ Result RocksDBCollection::replace(transaction::Methods* trx, } TRI_ASSERT(previousPS.size() > 0); - VPackSlice const oldDoc(previousPS.data()); + VPackSlice const oldDoc(reinterpret_cast(previousPS.data())); previousMdr.setRevisionId(transaction::helpers::extractRevFromDocument(oldDoc)); TRI_ASSERT(previousMdr.revisionId() != 0); @@ -1165,7 +1165,7 @@ Result RocksDBCollection::remove(transaction::Methods& trx, velocypack::Slice sl } TRI_ASSERT(previousPS.size() > 0); - VPackSlice const oldDoc(previousPS.data()); + VPackSlice const oldDoc(reinterpret_cast(previousPS.data())); previousMdr.setRevisionId(transaction::helpers::extractRevFromDocument(oldDoc)); TRI_ASSERT(previousMdr.revisionId() != 0); @@ -1471,7 +1471,7 @@ bool RocksDBCollection::lookupDocumentVPack(transaction::Methods* trx, auto f = _cache->find(key->string().data(), static_cast(key->string().size())); if (f.found()) { - cb(documentId, VPackSlice(reinterpret_cast(f.value()->value()))); + cb(documentId, VPackSlice(reinterpret_cast(f.value()->value()))); return true; } } @@ -1481,7 +1481,7 @@ bool RocksDBCollection::lookupDocumentVPack(transaction::Methods* trx, Result res = lookupDocumentVPack(trx, documentId, ps, /*readCache*/false, withCache); if (res.ok()) { TRI_ASSERT(ps.size() > 0); - cb(documentId, VPackSlice(ps.data())); + cb(documentId, VPackSlice(reinterpret_cast(ps.data()))); return true; } return false; diff --git a/arangod/RocksDBEngine/RocksDBComparator.cpp b/arangod/RocksDBEngine/RocksDBComparator.cpp index 9d068fe57b..38d76cc683 100644 --- a/arangod/RocksDBEngine/RocksDBComparator.cpp +++ b/arangod/RocksDBEngine/RocksDBComparator.cpp @@ -83,8 +83,8 @@ int RocksDBVPackComparator::compareIndexValues(rocksdb::Slice const& lhs, TRI_ASSERT(lhs.size() > sizeof(uint64_t)); TRI_ASSERT(rhs.size() > sizeof(uint64_t)); - VPackSlice const lSlice = VPackSlice(lhs.data() + sizeof(uint64_t)); - VPackSlice const rSlice = VPackSlice(rhs.data() + sizeof(uint64_t)); + VPackSlice const lSlice = VPackSlice(reinterpret_cast(lhs.data()) + sizeof(uint64_t)); + VPackSlice const rSlice = VPackSlice(reinterpret_cast(rhs.data()) + sizeof(uint64_t)); r = ::compareIndexedValues(lSlice, rSlice); diff --git a/arangod/RocksDBEngine/RocksDBEngine.cpp b/arangod/RocksDBEngine/RocksDBEngine.cpp index ba0570d413..1deb5eb953 100644 --- a/arangod/RocksDBEngine/RocksDBEngine.cpp +++ b/arangod/RocksDBEngine/RocksDBEngine.cpp @@ -852,7 +852,7 @@ void RocksDBEngine::getDatabases(arangodb::velocypack::Builder& result) { result.openArray(); auto rSlice = rocksDBSlice(RocksDBEntryType::Database); for (iter->Seek(rSlice); iter->Valid() && iter->key().starts_with(rSlice); iter->Next()) { - auto slice = VPackSlice(iter->value().data()); + auto slice = VPackSlice(reinterpret_cast(iter->value().data())); //// check format id VPackSlice idSlice = slice.get("id"); @@ -954,7 +954,7 @@ int RocksDBEngine::getCollectionsAndIndexes(TRI_vocbase_t& vocbase, continue; } - auto slice = VPackSlice(iter->value().data()); + auto slice = VPackSlice(reinterpret_cast(iter->value().data())); if (arangodb::basics::VelocyPackHelper::readBooleanValue(slice, StaticStrings::DataSourceDeleted, false)) { @@ -981,7 +981,7 @@ int RocksDBEngine::getViews(TRI_vocbase_t& vocbase, arangodb::velocypack::Builde result.openArray(); for (iter->Seek(bounds.start()); iter->Valid(); iter->Next()) { TRI_ASSERT(iter->key().compare(bounds.end()) < 0); - auto slice = VPackSlice(iter->value().data()); + auto slice = VPackSlice(reinterpret_cast(iter->value().data())); LOG_TOPIC("e3bcd", TRACE, Logger::VIEWS) << "got view slice: " << slice.toJson(); diff --git a/arangod/RocksDBEngine/RocksDBIterators.cpp b/arangod/RocksDBEngine/RocksDBIterators.cpp index e41bdabca3..41517b2200 100644 --- a/arangod/RocksDBEngine/RocksDBIterators.cpp +++ b/arangod/RocksDBEngine/RocksDBIterators.cpp @@ -112,7 +112,7 @@ bool RocksDBAllIndexIterator::nextDocument(IndexIterator::DocumentCallback const } while (limit > 0) { - cb(RocksDBKey::documentId(_iterator->key()), VPackSlice(_iterator->value().data())); + cb(RocksDBKey::documentId(_iterator->key()), VPackSlice(reinterpret_cast(_iterator->value().data()))); --limit; _iterator->Next(); @@ -220,7 +220,7 @@ bool RocksDBAnyIndexIterator::nextDocument(IndexIterator::DocumentCallback const } while (limit > 0) { - cb(RocksDBKey::documentId(_iterator->key()), VPackSlice(_iterator->value().data())); + cb(RocksDBKey::documentId(_iterator->key()), VPackSlice(reinterpret_cast(_iterator->value().data()))); --limit; _returned++; _iterator->Next(); diff --git a/arangod/RocksDBEngine/RocksDBKey.cpp b/arangod/RocksDBEngine/RocksDBKey.cpp index 093aa4b147..2d26ce774e 100644 --- a/arangod/RocksDBEngine/RocksDBKey.cpp +++ b/arangod/RocksDBEngine/RocksDBKey.cpp @@ -446,7 +446,7 @@ arangodb::velocypack::StringRef RocksDBKey::vertexId(char const* data, size_t si VPackSlice RocksDBKey::indexedVPack(char const* data, size_t size) { TRI_ASSERT(data != nullptr); TRI_ASSERT(size > sizeof(uint64_t)); - return VPackSlice(data + sizeof(uint64_t)); + return VPackSlice(reinterpret_cast(data) + sizeof(uint64_t)); } namespace arangodb { diff --git a/arangod/RocksDBEngine/RocksDBKeyBounds.cpp b/arangod/RocksDBEngine/RocksDBKeyBounds.cpp index bc826a8641..eea04b9a16 100644 --- a/arangod/RocksDBEngine/RocksDBKeyBounds.cpp +++ b/arangod/RocksDBEngine/RocksDBKeyBounds.cpp @@ -309,8 +309,10 @@ RocksDBKeyBounds::RocksDBKeyBounds(RocksDBEntryType type, uint64_t first) // 7 + 8-byte object ID of index + VPack array with index value(s) .... // prefix is the same for non-unique indexes // static slices with an array with one entry - VPackSlice min("\x02\x03\x1e"); // [minSlice] - VPackSlice max("\x02\x03\x1f"); // [maxSlice] + uint8_t const minSlice[] = { 0x02, 0x03, 0x1e }; // [minSlice] + uint8_t const maxSlice[] = { 0x02, 0x03, 0x1f }; // [maxSlice] + VPackSlice min(minSlice); + VPackSlice max(maxSlice); _internals.reserve(2 * sizeof(uint64_t) + min.byteSize() + max.byteSize()); uint64ToPersistent(_internals.buffer(), first); diff --git a/arangod/RocksDBEngine/RocksDBLogValue.cpp b/arangod/RocksDBEngine/RocksDBLogValue.cpp index 2afbf80fb6..5eb63e1225 100644 --- a/arangod/RocksDBEngine/RocksDBLogValue.cpp +++ b/arangod/RocksDBEngine/RocksDBLogValue.cpp @@ -302,14 +302,14 @@ VPackSlice RocksDBLogValue::indexSlice(rocksdb::Slice const& slice) { TRI_ASSERT(slice.size() >= sizeof(RocksDBLogType) + sizeof(uint64_t) * 2); RocksDBLogType type = static_cast(slice.data()[0]); TRI_ASSERT(type == RocksDBLogType::IndexCreate); - return VPackSlice(slice.data() + sizeof(RocksDBLogType) + sizeof(uint64_t) * 2); + return VPackSlice(reinterpret_cast(slice.data() + sizeof(RocksDBLogType) + sizeof(uint64_t) * 2)); } VPackSlice RocksDBLogValue::viewSlice(rocksdb::Slice const& slice) { TRI_ASSERT(slice.size() >= sizeof(RocksDBLogType) + sizeof(uint64_t) * 2); RocksDBLogType type = static_cast(slice.data()[0]); TRI_ASSERT(type == RocksDBLogType::ViewDrop); - return VPackSlice(slice.data() + sizeof(RocksDBLogType) + sizeof(uint64_t) * 2); + return VPackSlice(reinterpret_cast(slice.data() + sizeof(RocksDBLogType) + sizeof(uint64_t) * 2)); } namespace { @@ -351,7 +351,7 @@ std::pair RocksDBLogValue::trackedDocument(rocksdb: type == RocksDBLogType::TrackedDocumentRemove); LocalDocumentId id(uintFromPersistentLittleEndian(slice.data() + sizeof(RocksDBLogType))); - VPackSlice data(slice.data() + sizeof(RocksDBLogType) + sizeof(LocalDocumentId::BaseType)); + VPackSlice data(reinterpret_cast(slice.data() + sizeof(RocksDBLogType) + sizeof(LocalDocumentId::BaseType))); return std::make_pair(id, data); } diff --git a/arangod/RocksDBEngine/RocksDBReplicationContext.cpp b/arangod/RocksDBEngine/RocksDBReplicationContext.cpp index 4938ffb70c..934ef42a23 100644 --- a/arangod/RocksDBEngine/RocksDBReplicationContext.cpp +++ b/arangod/RocksDBEngine/RocksDBReplicationContext.cpp @@ -269,7 +269,7 @@ RocksDBReplicationContext::DumpResult RocksDBReplicationContext::dumpJson( buff.appendInteger(REPLICATION_MARKER_DOCUMENT); // set type buff.appendText(",\"data\":"); // printing the data, note: we need the CustomTypeHandler here - dumper.dump(velocypack::Slice(cIter->iter->value().data())); + dumper.dump(velocypack::Slice(reinterpret_cast(cIter->iter->value().data()))); buff.appendText("}\n"); cIter->iter->Next(); } @@ -312,7 +312,7 @@ RocksDBReplicationContext::DumpResult RocksDBReplicationContext::dumpVPack( builder.openObject(); builder.add("type", VPackValue(REPLICATION_MARKER_DOCUMENT)); builder.add(VPackValue("data")); - builder.add(velocypack::Slice(cIter->iter->value().data())); + builder.add(velocypack::Slice(reinterpret_cast(cIter->iter->value().data()))); builder.close(); cIter->iter->Next(); } @@ -390,7 +390,7 @@ arangodb::Result RocksDBReplicationContext::dumpKeyChunks(TRI_vocbase_t& vocbase docKey.string(), &ps); if (s.ok()) { TRI_ASSERT(ps.size() > 0); - docRev = TRI_ExtractRevisionId(VPackSlice(ps.data())); + docRev = TRI_ExtractRevisionId(VPackSlice(reinterpret_cast(ps.data()))); } else { LOG_TOPIC("32e3b", WARN, Logger::REPLICATION) << "inconsistent primary index, " @@ -536,7 +536,7 @@ arangodb::Result RocksDBReplicationContext::dumpKeys(TRI_vocbase_t& vocbase, tmpKey.string(), &ps); if (s.ok()) { TRI_ASSERT(ps.size() > 0); - docRev = TRI_ExtractRevisionId(VPackSlice(ps.data())); + docRev = TRI_ExtractRevisionId(VPackSlice(reinterpret_cast(ps.data()))); } else { arangodb::velocypack::StringRef key = RocksDBKey::primaryKey(cIter->iter->key()); LOG_TOPIC("41803", WARN, Logger::REPLICATION) @@ -674,8 +674,8 @@ arangodb::Result RocksDBReplicationContext::dumpDocuments( tmpKey.string(), &ps); if (s.ok()) { TRI_ASSERT(ps.size() > 0); - TRI_ASSERT(VPackSlice(ps.data()).isObject()); - b.add(VPackSlice(ps.data())); + TRI_ASSERT(VPackSlice(reinterpret_cast(ps.data())).isObject()); + b.add(VPackSlice(reinterpret_cast(ps.data()))); } else { arangodb::velocypack::StringRef key = RocksDBKey::primaryKey(cIter->iter->key()); LOG_TOPIC("d79df", WARN, Logger::REPLICATION) diff --git a/arangod/RocksDBEngine/RocksDBSettingsManager.cpp b/arangod/RocksDBEngine/RocksDBSettingsManager.cpp index bbcb751c91..a8131d9422 100644 --- a/arangod/RocksDBEngine/RocksDBSettingsManager.cpp +++ b/arangod/RocksDBEngine/RocksDBSettingsManager.cpp @@ -237,7 +237,7 @@ void RocksDBSettingsManager::loadSettings() { key.string(), &result); if (status.ok()) { // key may not be there, so don't fail when not found - VPackSlice slice = VPackSlice(result.data()); + VPackSlice slice = VPackSlice(reinterpret_cast(result.data())); TRI_ASSERT(slice.isObject()); LOG_TOPIC("7458b", TRACE, Logger::ENGINES) << "read initial settings: " << slice.toJson(); diff --git a/arangod/RocksDBEngine/RocksDBVPackIndex.cpp b/arangod/RocksDBEngine/RocksDBVPackIndex.cpp index 91c862fc50..6b72340e9b 100644 --- a/arangod/RocksDBEngine/RocksDBVPackIndex.cpp +++ b/arangod/RocksDBEngine/RocksDBVPackIndex.cpp @@ -191,7 +191,7 @@ class RocksDBVPackIndexIterator final : public IndexIterator { if (reverse) { _rangeBound = _bounds.start(); options.iterate_lower_bound = &_rangeBound; - VPackSlice s = VPackSlice(_rangeBound.data() + sizeof(uint64_t)); + VPackSlice s = VPackSlice(reinterpret_cast(_rangeBound.data() + sizeof(uint64_t))); if (s.isArray() && s.length() == 1 && s.at(0).isMinKey()) { // lower bound is the min key. that means we can get away with a // cheap outOfBounds comparator @@ -200,7 +200,7 @@ class RocksDBVPackIndexIterator final : public IndexIterator { } else { _rangeBound = _bounds.end(); options.iterate_upper_bound = &_rangeBound; - VPackSlice s = VPackSlice(_rangeBound.data() + sizeof(uint64_t)); + VPackSlice s = VPackSlice(reinterpret_cast(_rangeBound.data() + sizeof(uint64_t))); if (s.isArray() && s.length() == 1 && s.at(0).isMaxKey()) { // upper bound is the max key. that means we can get away with a // cheap outOfBounds comparator diff --git a/arangod/RocksDBEngine/RocksDBValue.cpp b/arangod/RocksDBEngine/RocksDBValue.cpp index 0b80030f9d..699497b57f 100644 --- a/arangod/RocksDBEngine/RocksDBValue.cpp +++ b/arangod/RocksDBEngine/RocksDBValue.cpp @@ -224,13 +224,13 @@ arangodb::velocypack::StringRef RocksDBValue::vertexId(char const* data, size_t VPackSlice RocksDBValue::data(char const* data, size_t size) { TRI_ASSERT(data != nullptr); TRI_ASSERT(size >= sizeof(char)); - return VPackSlice(data); + return VPackSlice(reinterpret_cast(data)); } uint64_t RocksDBValue::keyValue(char const* data, size_t size) { TRI_ASSERT(data != nullptr); TRI_ASSERT(size >= sizeof(char)); - VPackSlice key = transaction::helpers::extractKeyFromDocument(VPackSlice(data)); + VPackSlice key = transaction::helpers::extractKeyFromDocument(VPackSlice(reinterpret_cast(data))); if (key.isString()) { VPackValueLength l; char const* p = key.getStringUnchecked(l); diff --git a/arangod/VocBase/ManagedDocumentResult.cpp b/arangod/VocBase/ManagedDocumentResult.cpp index 3fbf049174..2114b1ede6 100644 --- a/arangod/VocBase/ManagedDocumentResult.cpp +++ b/arangod/VocBase/ManagedDocumentResult.cpp @@ -54,7 +54,7 @@ void ManagedDocumentResult::addToBuilder(velocypack::Builder& builder, TRI_ASSERT(!empty()); if (_vpack == nullptr) { // managed TRI_ASSERT(!_string.empty()); - builder.add(VPackSlice(_string.data())); + builder.add(VPackSlice(reinterpret_cast(_string.data()))); } else { if (allowExternals) { builder.addExternal(_vpack); diff --git a/arangosh/VPack/VPackFeature.cpp b/arangosh/VPack/VPackFeature.cpp index e07e35355d..0e0a08e8dd 100644 --- a/arangosh/VPack/VPackFeature.cpp +++ b/arangosh/VPack/VPackFeature.cpp @@ -189,7 +189,7 @@ void VPackFeature::start() { return; } - slice = VPackSlice(s.data()); + slice = VPackSlice(reinterpret_cast(s.data())); } VPackBuffer buffer(4096); diff --git a/lib/Basics/VelocyPackDumper.cpp b/lib/Basics/VelocyPackDumper.cpp index d678a411b0..decc660ec8 100644 --- a/lib/Basics/VelocyPackDumper.cpp +++ b/lib/Basics/VelocyPackDumper.cpp @@ -496,7 +496,7 @@ void VelocyPackDumper::dumpValue(VPackSlice const* slice, VPackSlice const* base } case VPackValueType::External: { - VPackSlice const external(slice->getExternal()); + VPackSlice const external(reinterpret_cast(slice->getExternal())); dumpValue(&external, base); break; } diff --git a/lib/Basics/VelocyPackHelper.cpp b/lib/Basics/VelocyPackHelper.cpp index a331f02f8c..cee6378b0b 100644 --- a/lib/Basics/VelocyPackHelper.cpp +++ b/lib/Basics/VelocyPackHelper.cpp @@ -468,7 +468,7 @@ void VelocyPackHelper::ensureStringValue(VPackSlice const& slice, std::string co arangodb::velocypack::Slice slice, std::string const& key, arangodb::velocypack::StringRef const& defaultValue) noexcept { if (slice.isExternal()) { - slice = arangodb::velocypack::Slice(slice.getExternal()); + slice = arangodb::velocypack::Slice(reinterpret_cast(slice.getExternal())); } if (!slice.isObject() || !slice.hasKey(key)) { @@ -495,7 +495,7 @@ std::string VelocyPackHelper::getStringValue(VPackSlice const& slice, std::string VelocyPackHelper::getStringValue(VPackSlice slice, char const* name, std::string const& defaultValue) { if (slice.isExternal()) { - slice = VPackSlice(slice.getExternal()); + slice = VPackSlice(reinterpret_cast(slice.getExternal())); } TRI_ASSERT(slice.isObject()); if (!slice.hasKey(name)) { @@ -514,7 +514,7 @@ std::string VelocyPackHelper::getStringValue(VPackSlice slice, char const* name, std::string VelocyPackHelper::getStringValue(VPackSlice slice, std::string const& name, std::string const& defaultValue) { if (slice.isExternal()) { - slice = VPackSlice(slice.getExternal()); + slice = VPackSlice(reinterpret_cast(slice.getExternal())); } TRI_ASSERT(slice.isObject()); if (!slice.hasKey(name)) { diff --git a/lib/Logger/LogAppender.cpp b/lib/Logger/LogAppender.cpp index b30e84cefd..7b159992d0 100644 --- a/lib/Logger/LogAppender.cpp +++ b/lib/Logger/LogAppender.cpp @@ -213,7 +213,7 @@ void LogAppender::log(LogMessage* message) { // otherwise use the general topic if (!shown) { - shown = output(LogTopic::MAX_LOG_TOPICS); + output(LogTopic::MAX_LOG_TOPICS); } for (auto const& logger : _loggers) { diff --git a/lib/Random/RandomGenerator.cpp b/lib/Random/RandomGenerator.cpp index c124e9598c..4c1579b691 100644 --- a/lib/Random/RandomGenerator.cpp +++ b/lib/Random/RandomGenerator.cpp @@ -404,7 +404,7 @@ class RandomDeviceWin32 : public RandomDevice { } } - uint32_t random() { + uint32_t random() override { if (pos >= N) { fillBuffer(); } diff --git a/lib/Rest/HttpRequest.cpp b/lib/Rest/HttpRequest.cpp index a0064ccabe..ac11aff274 100644 --- a/lib/Rest/HttpRequest.cpp +++ b/lib/Rest/HttpRequest.cpp @@ -747,7 +747,7 @@ VPackSlice HttpRequest::payload(VPackOptions const* options) { validationOptions.disallowCustom = true; VPackValidator validator(&validationOptions); validator.validate(_body.c_str(), _body.length()); - return VPackSlice(_body.c_str()); + return VPackSlice(reinterpret_cast(_body.c_str())); } return VPackSlice::noneSlice(); } diff --git a/lib/Rest/VstRequest.cpp b/lib/Rest/VstRequest.cpp index 94728085eb..ba75c52c6e 100644 --- a/lib/Rest/VstRequest.cpp +++ b/lib/Rest/VstRequest.cpp @@ -83,7 +83,7 @@ VPackSlice VstRequest::payload(VPackOptions const* options) { // will throw on error _validatedPayload = validator.validate(vpack.data(), vpack.length()); } - return VPackSlice(vpack.data()); + return VPackSlice(reinterpret_cast(vpack.data())); } } return VPackSlice::noneSlice(); // no body diff --git a/lib/Ssl/SslServerFeature.cpp b/lib/Ssl/SslServerFeature.cpp index 978c3d8c75..a65f55b516 100644 --- a/lib/Ssl/SslServerFeature.cpp +++ b/lib/Ssl/SslServerFeature.cpp @@ -238,7 +238,7 @@ asio_ns::ssl::context SslServerFeature::createSslContext() const { LOG_TOPIC("cdaf2", TRACE, arangodb::Logger::SSL) << "trying to load CA certificates from '" << _cafile << "'"; - int res = SSL_CTX_load_verify_locations(nativeContext, _cafile.c_str(), nullptr); + res = SSL_CTX_load_verify_locations(nativeContext, _cafile.c_str(), nullptr); if (res == 0) { LOG_TOPIC("30289", ERR, arangodb::Logger::SSL) diff --git a/lib/Utilities/ScriptLoader.cpp b/lib/Utilities/ScriptLoader.cpp index 1e0326849a..22bdd1eaed 100644 --- a/lib/Utilities/ScriptLoader.cpp +++ b/lib/Utilities/ScriptLoader.cpp @@ -107,10 +107,10 @@ std::string const& ScriptLoader::findScript(std::string const& name) { MUTEX_LOCKER(mutexLocker, _lock); - std::map::iterator i = _scripts.find(name); + auto it = _scripts.find(name); - if (i != _scripts.end()) { - return i->second; + if (it != _scripts.end()) { + return it->second; } if (!_directory.empty()) { diff --git a/lib/V8/v8-utils.cpp b/lib/V8/v8-utils.cpp index 600d8fe5e0..4aca4ae662 100644 --- a/lib/V8/v8-utils.cpp +++ b/lib/V8/v8-utils.cpp @@ -1050,7 +1050,7 @@ void JS_Download(v8::FunctionCallbackInfo const& args) { validationOptions.disallowCustom = true; VPackValidator validator(&validationOptions); validator.validate(sb.data(), sb.length()); // throws on error - json.assign(VPackSlice(sb.data()).toJson()); + json.assign(VPackSlice(reinterpret_cast(sb.data())).toJson()); body = arangodb::velocypack::StringRef(json); } @@ -2650,7 +2650,7 @@ static void JS_CopyFile(v8::FunctionCallbackInfo const& args) { if (destinationIsDirectory) { char const* file = strrchr(source.c_str(), TRI_DIR_SEPARATOR_CHAR); if (file == nullptr) { - if (destination[destination.length()] == TRI_DIR_SEPARATOR_CHAR) { + if (!destination.empty() && destination.back() != TRI_DIR_SEPARATOR_CHAR) { destination += TRI_DIR_SEPARATOR_CHAR; } destination += source; @@ -4686,7 +4686,7 @@ static void JS_VPackToV8(v8::FunctionCallbackInfo const& args) { validator.validate(value.c_str(), value.size(), false); - VPackSlice slice(value.c_str()); + VPackSlice slice(reinterpret_cast(value.data())); v8::Handle result = TRI_VPackToV8(isolate, slice); TRI_V8_RETURN(result); } else if (args[0]->IsObject() && V8Buffer::hasInstance(isolate, args[0])) { @@ -4696,7 +4696,7 @@ static void JS_VPackToV8(v8::FunctionCallbackInfo const& args) { validator.validate(data, size, false); - VPackSlice slice(data); + VPackSlice slice(reinterpret_cast(data)); v8::Handle result = TRI_VPackToV8(isolate, slice); TRI_V8_RETURN(result); } else { diff --git a/lib/V8/v8-vpack.cpp b/lib/V8/v8-vpack.cpp index 88de366fb0..375b9ba77f 100644 --- a/lib/V8/v8-vpack.cpp +++ b/lib/V8/v8-vpack.cpp @@ -232,7 +232,7 @@ v8::Handle TRI_VPackToV8(v8::Isolate* isolate, VPackSlice const& slic } case VPackValueType::External: { // resolve external - return TRI_VPackToV8(isolate, VPackSlice(slice.getExternal()), options, base); + return TRI_VPackToV8(isolate, VPackSlice(reinterpret_cast(slice.getExternal())), options, base); } case VPackValueType::Custom: { if (options == nullptr || options->customTypeHandler == nullptr || base == nullptr) {