| 164 | } |
| 165 | |
| 166 | void replay_transaction(cdb2_hndl_tp *db, cson_value *val) |
| 167 | { |
| 168 | const char *cnonce = get_strprop(val, "cnonce"); |
| 169 | assert(cnonce != nullptr); |
| 170 | auto jt = transactions.find(cnonce); |
| 171 | assert(jt != transactions.end()); |
| 172 | auto &list = (*jt).second; |
| 173 | if (verbose) |
| 174 | std::cout << "replay transaction " << cnonce << std::endl; |
| 175 | |
| 176 | auto it = list.begin(); |
| 177 | while (it != list.end()) { |
| 178 | assert(event_is_sql(*it)); |
| 179 | replay(db, *it); |
| 180 | cson_free_value(*it); |
| 181 | it = list.erase(it); |
| 182 | } |
| 183 | transactions.erase(jt); |
| 184 | replay(db, val); // finally 'commit' or 'rollback' |
| 185 | } |
| 186 | |
| 187 | bool is_part_of_transaction(const char *cnonce) |
| 188 | { |
no test coverage detected