RangeInfo::RangeInfo (triagens::basics::Json const& json) : _var(basics::JsonHelper::checkAndGetStringValue(json.json(), "variable")), _attr(basics::JsonHelper::checkAndGetStringValue(json.json(), "attr")), _valid(basics::JsonHelper::checkAndGetBooleanValue(json.json(), "valid")), _defined(true), _equality(basics::JsonHelper::checkAndGetBooleanValue(json.json(), "equality")) { triagens::basics::Json jsonLowList = json.get("lows"); if (! jsonLowList.isList()) { THROW_INTERNAL_ERROR("low attribute must be a list"); } triagens::basics::Json jsonHighList = json.get("highs"); if (! jsonHighList.isList()) { THROW_INTERNAL_ERROR("high attribute must be a list"); } // If an exception is thrown from within these loops, then the // vectors _low and _high will be destroyed properly, so no // try/catch is needed. for (size_t i = 0; i < jsonLowList.size(); i++) { _lows.emplace_back(jsonLowList.at(static_cast<int>(i))); } for (size_t i = 0; i < jsonHighList.size(); i++) { _highs.emplace_back(jsonHighList.at(static_cast<int>(i))); } _lowConst.assign(json.get("lowConst")); _highConst.assign(json.get("highConst")); }
RemoteNode::RemoteNode (ExecutionPlan* plan, triagens::basics::Json const& base) : ExecutionNode(plan, base), _vocbase(plan->getAst()->query()->vocbase()), _collection(plan->getAst()->query()->collections()->get(JsonHelper::checkAndGetStringValue(base.json(), "collection"))), _server(JsonHelper::checkAndGetStringValue(base.json(), "server")), _ownName(JsonHelper::checkAndGetStringValue(base.json(), "ownName")), _queryId(JsonHelper::checkAndGetStringValue(base.json(), "queryId")), _isResponsibleForInitCursor(JsonHelper::checkAndGetBooleanValue(base.json(), "isResponsibleForInitCursor")) { }
DistributeNode::DistributeNode (ExecutionPlan* plan, triagens::basics::Json const& base) : ExecutionNode(plan, base), _vocbase(plan->getAst()->query()->vocbase()), _collection(plan->getAst()->query()->collections()->get(JsonHelper::checkAndGetStringValue(base.json(), "collection"))), _varId(JsonHelper::checkAndGetNumericValue<VariableId>(base.json(), "varId")), _alternativeVarId(JsonHelper::checkAndGetNumericValue<VariableId>(base.json(), "alternativeVarId")), _createKeys(JsonHelper::checkAndGetBooleanValue(base.json(), "createKeys")), _allowKeyConversionToObject(JsonHelper::checkAndGetBooleanValue(base.json(), "allowKeyConversionToObject")) { }
UpsertNode::UpsertNode (ExecutionPlan* plan, triagens::basics::Json const& base) : ModificationNode(plan, base), _inDocVariable(varFromJson(plan->getAst(), base, "inDocVariable")), _insertVariable(varFromJson(plan->getAst(), base, "insertVariable")), _updateVariable(varFromJson(plan->getAst(), base, "updateVariable")), _isReplace(JsonHelper::checkAndGetBooleanValue(base.json(), "isReplace")) { }
GatherNode::GatherNode (ExecutionPlan* plan, triagens::basics::Json const& base, SortElementVector const& elements) : ExecutionNode(plan, base), _elements(elements), _vocbase(plan->getAst()->query()->vocbase()), _collection(plan->getAst()->query()->collections()->get(JsonHelper::checkAndGetStringValue(base.json(), "collection"))) { }
ScatterNode::ScatterNode (ExecutionPlan* plan, triagens::basics::Json const& base) : ExecutionNode(plan, base), _vocbase(plan->getAst()->query()->vocbase()), _collection(plan->getAst()->query()->collections()->get(JsonHelper::checkAndGetStringValue(base.json(), "collection"))) { }
ModificationNode::ModificationNode (ExecutionPlan* plan, triagens::basics::Json const& base) : ExecutionNode(plan, base), _vocbase(plan->getAst()->query()->vocbase()), _collection(plan->getAst()->query()->collections()->get(JsonHelper::checkAndGetStringValue(base.json(), "collection"))), _options(base), _outVariableOld(varFromJson(plan->getAst(), base, "outVariableOld", Optional)), _outVariableNew(varFromJson(plan->getAst(), base, "outVariableNew", Optional)) { TRI_ASSERT(_vocbase != nullptr); TRI_ASSERT(_collection != nullptr); }
Variable::Variable (triagens::basics::Json const& json) : Variable(JsonHelper::checkAndGetStringValue(json.json(), "name"), JsonHelper::checkAndGetNumericValue<VariableId>(json.json(), "id")) { }