From 55f16b06510d1b01b615b2cc7c82dc7eae6383b1 Mon Sep 17 00:00:00 2001 From: Jan Date: Wed, 21 Jun 2017 10:26:04 +0200 Subject: [PATCH] fix incorrect "id" return type (must be string, not a number) (#2623) --- arangod/VocBase/Methods/Database.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/arangod/VocBase/Methods/Database.cpp b/arangod/VocBase/Methods/Database.cpp index 45a8cc4e98..828f3834c2 100644 --- a/arangod/VocBase/Methods/Database.cpp +++ b/arangod/VocBase/Methods/Database.cpp @@ -104,14 +104,20 @@ arangodb::Result Database::info(TRI_vocbase_t* vocbase, VPackBuilder& result) { VPackObjectBuilder b(&result); result.add("name", value.get("name")); - result.add("id", value.get("id")); + if (value.get("id").isString()) { + result.add("id", value.get("id")); + } else if (value.get("id").isNumber()) { + result.add("id", VPackValue(std::to_string(value.get("id").getUInt()))); + } else { + THROW_ARANGO_EXCEPTION_MESSAGE(TRI_ERROR_INTERNAL, "unexpected type for 'id' attribute"); + } result.add("path", value.get("none")); result.add("isSystem", VPackValue(name[0] == '_')); } } else { VPackObjectBuilder b(&result); result.add("name", VPackValue(vocbase->name())); - result.add("id", VPackValue(vocbase->id())); + result.add("id", VPackValue(std::to_string(vocbase->id()))); result.add("path", VPackValue(vocbase->path())); result.add("isSystem", VPackValue(vocbase->isSystem())); }