mirror of https://gitee.com/bigwinds/arangodb
Removed TRI_json_t constructor from TraverserExpression. It is only possible to be build from VPack
This commit is contained in:
parent
b137e9471e
commit
fd00792ac1
|
@ -561,9 +561,7 @@ void RestSimpleHandler::lookupByKeys (VPackSlice const& slice) {
|
|||
|
||||
for (auto const& it : VPackArrayIterator(postFilter)) {
|
||||
if (it.isObject()) {
|
||||
std::string json = it.toJson(); // TODO: remove me later
|
||||
std::unique_ptr<TRI_json_t> exp(TRI_JsonString(TRI_UNKNOWN_MEM_ZONE, json.c_str())); // TODO: remove me later
|
||||
std::unique_ptr<traverser::TraverserExpression> expression(new traverser::TraverserExpression(exp.get()));
|
||||
std::unique_ptr<traverser::TraverserExpression> expression(new traverser::TraverserExpression(it));
|
||||
expressions.emplace_back(expression.get());
|
||||
expression.release();
|
||||
}
|
||||
|
|
|
@ -88,36 +88,6 @@ TraverserExpression::TraverserExpression (VPackSlice const& slice) {
|
|||
varAccess = new aql::AstNode(registerNode, registerString, varNode);
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief Creates an expression from a TRI_json_t*
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
TraverserExpression::TraverserExpression (TRI_json_t const* json) {
|
||||
isEdgeAccess = basics::JsonHelper::checkAndGetBooleanValue(json, "isEdgeAccess");
|
||||
comparisonType = static_cast<aql::AstNodeType>(basics::JsonHelper::checkAndGetNumericValue<uint32_t>(json, "comparisonType"));
|
||||
auto registerNode = [&](aql::AstNode const* node) -> void {
|
||||
_nodeRegister.emplace_back(node);
|
||||
};
|
||||
auto registerString = [&](std::string const& str) -> char const* {
|
||||
std::unique_ptr<std::string> copy(new std::string(str.c_str(), str.size()));
|
||||
_stringRegister.emplace_back(copy.get());
|
||||
auto p = copy.release();
|
||||
TRI_ASSERT(p != nullptr);
|
||||
TRI_ASSERT(p->c_str() != nullptr);
|
||||
return p->c_str(); // should never change its position, even if vector grows/shrinks
|
||||
};
|
||||
triagens::basics::Json varNode(TRI_UNKNOWN_MEM_ZONE, basics::JsonHelper::checkAndGetObjectValue(json, "varAccess"), triagens::basics::Json::NOFREE);
|
||||
|
||||
compareTo.reset(new triagens::basics::Json(TRI_UNKNOWN_MEM_ZONE, basics::JsonHelper::getObjectElement(json, "compareTo"), triagens::basics::Json::NOFREE));
|
||||
if (compareTo->json() == nullptr) {
|
||||
THROW_ARANGO_EXCEPTION_MESSAGE(TRI_ERROR_INTERNAL, "invalid compareTo value");
|
||||
}
|
||||
// If this fails everything before does not leak
|
||||
varAccess = new aql::AstNode(registerNode, registerString, varNode);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief transforms the expression into json
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -115,8 +115,6 @@ namespace triagens {
|
|||
compareTo(nullptr) {
|
||||
}
|
||||
|
||||
explicit TraverserExpression (TRI_json_t const*);
|
||||
|
||||
explicit TraverserExpression (VPackSlice const& slice);
|
||||
|
||||
virtual ~TraverserExpression () {
|
||||
|
|
Loading…
Reference in New Issue