1
0
Fork 0

Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2

This commit is contained in:
Max Neunhoeffer 2014-08-05 15:47:39 +02:00
commit ccbcade0eb
2 changed files with 52 additions and 7 deletions

View File

@ -201,13 +201,12 @@ QueryResult Query::execute () {
root->execute(); root->execute();
AqlItemBlock* value; AqlItemBlock* value;
while (nullptr != (value = root->getOne())) { while (nullptr != (value = root->getOne())) {
AqlValue val = value->getValue(0, 0); AqlValue val = value->getValue(0, 0);
TRI_ASSERT(! val.isEmpty()); TRI_ASSERT(! val.isEmpty());
auto doc = value->getDocumentCollection(0);
// TODO: remove debug output json.add(val.toJson(doc));
std::cout << val.toString(value->getDocumentCollections()[0]) << std::endl;
delete value; delete value;
} }
@ -234,8 +233,8 @@ QueryResult Query::execute () {
trx.commit(); trx.commit();
QueryResult result(TRI_ERROR_NO_ERROR); QueryResult result(TRI_ERROR_NO_ERROR);
result.json = parser.ast()->toJson(TRI_UNKNOWN_MEM_ZONE); //result.json = parser.ast()->toJson(TRI_UNKNOWN_MEM_ZONE);
result.json = json;
return result; return result;
} }
catch (triagens::arango::Exception const& ex) { catch (triagens::arango::Exception const& ex) {

View File

@ -190,7 +190,8 @@ namespace triagens {
id.push_back('/'); id.push_back('/');
id += std::string(key); id += std::string(key);
json("_id", triagens::basics::Json(id)); json("_id", triagens::basics::Json(id));
json("_rev", triagens::basics::Json(std::to_string( 17 ))); // TRI_EXTRACT_MARKER_RID))); json("_rev", triagens::basics::Json(std::to_string(
TRI_EXTRACT_MARKER_RID(_marker) )));
json("_key", triagens::basics::Json(key)); json("_key", triagens::basics::Json(key));
return json.toString(); return json.toString();
@ -212,6 +213,51 @@ namespace triagens {
return std::string(""); return std::string("");
} }
} }
////////////////////////////////////////////////////////////////////////////////
/// @brief toJson method
////////////////////////////////////////////////////////////////////////////////
triagens::basics::Json toJson (TRI_document_collection_t const* document) {
switch (_type) {
case JSON: {
return *_json;
}
case SHAPED: {
TRI_shaper_t* shaper = document->getShaper();
TRI_shaped_json_t shaped;
TRI_EXTRACT_SHAPED_JSON_MARKER(shaped, _marker);
triagens::basics::Json json(shaper->_memoryZone,
TRI_JsonShapedJson(shaper, &shaped));
char const* key = TRI_EXTRACT_MARKER_KEY(_marker);
std::string id(document->_info._name);
id.push_back('/');
id += std::string(key);
json("_id", triagens::basics::Json(id));
json("_rev", triagens::basics::Json(std::to_string(
TRI_EXTRACT_MARKER_RID(_marker) )));
json("_key", triagens::basics::Json(key));
return json;
}
case DOCVEC: {
THROW_ARANGO_EXCEPTION(TRI_ERROR_NOT_IMPLEMENTED);
}
case RANGE: {
THROW_ARANGO_EXCEPTION(TRI_ERROR_NOT_IMPLEMENTED);
}
case EMPTY: {
return triagens::basics::Json();
}
}
THROW_ARANGO_EXCEPTION(TRI_ERROR_INTERNAL);
}
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
/// @brief a quick method to decide whether a value is empty /// @brief a quick method to decide whether a value is empty