| 1153 | |
| 1154 | |
| 1155 | void Monitoring::putTransaction(SnapshotData::DumpRecord& record, const jrd_tra* transaction) |
| 1156 | { |
| 1157 | fb_assert(transaction); |
| 1158 | |
| 1159 | record.reset(rel_mon_transactions); |
| 1160 | |
| 1161 | int temp = mon_state_idle; |
| 1162 | for (const Request* request = transaction->tra_requests; |
| 1163 | request; request = request->req_tra_next) |
| 1164 | { |
| 1165 | if (request->req_transaction && (request->req_flags & req_active)) |
| 1166 | { |
| 1167 | temp = mon_state_active; |
| 1168 | break; |
| 1169 | } |
| 1170 | } |
| 1171 | |
| 1172 | // transaction id |
| 1173 | record.storeInteger(f_mon_tra_id, transaction->tra_number); |
| 1174 | // attachment id |
| 1175 | record.storeInteger(f_mon_tra_att_id, transaction->tra_attachment->att_attachment_id); |
| 1176 | // state |
| 1177 | record.storeInteger(f_mon_tra_state, temp); |
| 1178 | // timestamp |
| 1179 | record.storeTimestampTz(f_mon_tra_timestamp, transaction->tra_timestamp); |
| 1180 | // top transaction |
| 1181 | record.storeInteger(f_mon_tra_top, transaction->tra_top); |
| 1182 | // oldest transaction |
| 1183 | record.storeInteger(f_mon_tra_oit, transaction->tra_oldest); |
| 1184 | // oldest active transaction |
| 1185 | record.storeInteger(f_mon_tra_oat, transaction->tra_oldest_active); |
| 1186 | // isolation mode |
| 1187 | if (transaction->tra_flags & TRA_degree3) |
| 1188 | temp = iso_mode_consistency; |
| 1189 | else if (transaction->tra_flags & TRA_read_committed) |
| 1190 | { |
| 1191 | temp = (transaction->tra_flags & TRA_read_consistency) ? |
| 1192 | iso_mode_rc_read_consistency : |
| 1193 | (transaction->tra_flags & TRA_rec_version) ? |
| 1194 | iso_mode_rc_version : iso_mode_rc_no_version; |
| 1195 | } |
| 1196 | else |
| 1197 | temp = iso_mode_concurrency; |
| 1198 | record.storeInteger(f_mon_tra_iso_mode, temp); |
| 1199 | // lock timeout |
| 1200 | record.storeInteger(f_mon_tra_lock_timeout, transaction->tra_lock_timeout); |
| 1201 | // read only flag |
| 1202 | temp = (transaction->tra_flags & TRA_readonly) ? 1 : 0; |
| 1203 | record.storeInteger(f_mon_tra_read_only, temp); |
| 1204 | // autocommit flag |
| 1205 | temp = (transaction->tra_flags & TRA_autocommit) ? 1 : 0; |
| 1206 | record.storeInteger(f_mon_tra_auto_commit, temp); |
| 1207 | // auto undo flag |
| 1208 | temp = (transaction->tra_flags & TRA_no_auto_undo) ? 0 : 1; |
| 1209 | record.storeInteger(f_mon_tra_auto_undo, temp); |
| 1210 | // statistics |
| 1211 | const int stat_id = fb_utils::genUniqueId(); |
| 1212 | record.storeGlobalId(f_mon_tra_stat_id, getGlobalId(stat_id)); |
nothing calls this directly
no test coverage detected