Return fields in BEGIN, ROLLBACK, COMMIT

Reviewers: buda

Reviewed By: buda

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D683
This commit is contained in:
Mislav Bradac 2017-08-19 12:42:58 +02:00
parent 5a69f46f1f
commit 1dec024bc8

View File

@ -15,6 +15,9 @@ namespace communication::bolt {
template <typename Session>
State HandleRun(Session &session, State state, Marker marker) {
const std::map<std::string, query::TypedValue> kEmptyFields = {
{"fields", std::vector<query::TypedValue>{}}};
if (marker != Marker::TinyStruct2) {
DLOG(WARNING) << fmt::format(
"Expected TinyStruct2 marker, but received 0x{:02X}!",
@ -38,7 +41,7 @@ State HandleRun(Session &session, State state, Marker marker) {
if (query.Value<std::string>() == "ROLLBACK") {
session.Abort();
// One MessageSuccess for RUN command should be flushed.
session.encoder_.MessageSuccess();
session.encoder_.MessageSuccess(kEmptyFields);
// One for PULL_ALL should be chunked.
session.encoder_.MessageSuccess({}, false);
return State::Result;
@ -84,7 +87,7 @@ State HandleRun(Session &session, State state, Marker marker) {
// Same goes for "ROLLBACK" and "COMMIT".
//
// One MessageSuccess for RUN command should be flushed.
session.encoder_.MessageSuccess();
session.encoder_.MessageSuccess(kEmptyFields);
// One for PULL_ALL should be chunked.
session.encoder_.MessageSuccess({}, false);
return State::Result;
@ -94,14 +97,14 @@ State HandleRun(Session &session, State state, Marker marker) {
if (query.Value<std::string>() == "COMMIT") {
session.Commit();
// One MessageSuccess for RUN command should be flushed.
session.encoder_.MessageSuccess();
session.encoder_.MessageSuccess(kEmptyFields);
// One for PULL_ALL should be chunked.
session.encoder_.MessageSuccess({}, false);
return State::Result;
} else if (query.Value<std::string>() == "ROLLBACK") {
session.Abort();
// One MessageSuccess for RUN command should be flushed.
session.encoder_.MessageSuccess();
session.encoder_.MessageSuccess(kEmptyFields);
// One for PULL_ALL should be chunked.
session.encoder_.MessageSuccess({}, false);
return State::Result;