summaryrefslogtreecommitdiff
path: root/storage/bdb/db_printlog/status.awk
diff options
context:
space:
mode:
Diffstat (limited to 'storage/bdb/db_printlog/status.awk')
-rw-r--r--storage/bdb/db_printlog/status.awk46
1 files changed, 46 insertions, 0 deletions
diff --git a/storage/bdb/db_printlog/status.awk b/storage/bdb/db_printlog/status.awk
new file mode 100644
index 00000000000..13df0b6194a
--- /dev/null
+++ b/storage/bdb/db_printlog/status.awk
@@ -0,0 +1,46 @@
+# $Id: status.awk,v 10.3 2002/04/11 01:35:24 margo Exp $
+#
+# Read through db_printlog output and list all the transactions encountered
+# and whether they commited or aborted.
+#
+# 1 = started
+# 2 = commited
+# 3 = explicitly aborted
+# 4 = other
+BEGIN {
+ cur_txn = 0
+}
+/^\[/{
+ in_regop = 0
+ if (status[$5] == 0) {
+ status[$5] = 1;
+ txns[cur_txn] = $5;
+ cur_txn++;
+ }
+}
+/txn_regop/ {
+ txnid = $5
+ in_regop = 1
+}
+/opcode:/ {
+ if (in_regop == 1) {
+ if ($2 == 1)
+ status[txnid] = 2
+ else if ($2 == 3)
+ status[txnid] = 3
+ else
+ status[txnid] = 4
+ }
+}
+END {
+ for (i = 0; i < cur_txn; i++) {
+ if (status[txns[i]] == 1)
+ printf("%s\tABORT\n", txns[i]);
+ if (status[txns[i]] == 2)
+ printf("%s\tCOMMIT\n", txns[i]);
+ if (status[txns[i]] == 3)
+ printf("%s\tABORT\n", txns[i]);
+ if (status[txns[i]] == 4)
+ printf("%s\tOTHER\n", txns[i]);
+ }
+}