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

@ -205,9 +205,8 @@ QueryResult Query::execute () {
while (nullptr != (value = root->getOne())) {
AqlValue val = value->getValue(0, 0);
TRI_ASSERT(! val.isEmpty());
// TODO: remove debug output
std::cout << val.toString(value->getDocumentCollections()[0]) << std::endl;
auto doc = value->getDocumentCollection(0);
json.add(val.toJson(doc));
delete value;
}
@ -234,8 +233,8 @@ QueryResult Query::execute () {
trx.commit();
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;
}
catch (triagens::arango::Exception const& ex) {

View File

@ -190,7 +190,8 @@ namespace triagens {
id.push_back('/');
id += std::string(key);
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));
return json.toString();
@ -213,6 +214,51 @@ namespace triagens {
}
}
////////////////////////////////////////////////////////////////////////////////
/// @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
////////////////////////////////////////////////////////////////////////////////