From 4d1e7c53286a3d937e0a95bd626556d9aa0b46b5 Mon Sep 17 00:00:00 2001 From: Max Neunhoeffer Date: Mon, 12 Sep 2016 10:04:45 +0200 Subject: [PATCH] Fix which attribute names are allowed for shardKeys. --- arangod/V8Server/v8-vocindex.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/arangod/V8Server/v8-vocindex.cpp b/arangod/V8Server/v8-vocindex.cpp index aebc18728e..2de91de24c 100644 --- a/arangod/V8Server/v8-vocindex.cpp +++ b/arangod/V8Server/v8-vocindex.cpp @@ -705,9 +705,20 @@ static void CreateCollectionCoordinator( v8::Handle v = k->Get(i); if (v->IsString()) { std::string const key = TRI_ObjectToString(v); - + // remove : char at the beginning or end (for enterprise) + std::string stripped; + if (!key.empty()) { + if (key.front() == ':') { + stripped = key.substr(1); + } else if (key.back() == ':') { + stripped = key.substr(0, key.size()-1); + } else { + stripped = key; + } + } // system attributes are not allowed (except _key) - if (!key.empty() && (key[0] != '_' || key == "_key")) { + if (!stripped.empty() && stripped != StaticStrings::IdString && + stripped != StaticStrings::RevString) { shardKeys.push_back(key); } }