dbname.awk 1.28 KB
Newer Older
unknown's avatar
unknown committed
1
# $Id: dbname.awk,v 12.1 2005/03/23 04:56:51 ubell Exp $
unknown's avatar
unknown committed
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#
# Take a comma-separated list of database names and spit out all the
# log records that affect those databases.

NR == 1 {
	nfiles = 0
	while ((ndx = index(DBNAME, ",")) != 0) {
		filenames[nfiles] = substr(DBNAME, 1, ndx - 1) 0;
		DBNAME = substr(DBNAME, ndx + 1, length(DBNAME) - ndx);
		files[nfiles] = -1
		nfiles++
	}
	filenames[nfiles] = DBNAME 0;
	files[nfiles] = -1
	myfile = -1;
unknown's avatar
unknown committed
17
	nreg = 0;
unknown's avatar
unknown committed
18 19
}

unknown's avatar
unknown committed
20
/^\[.*dbreg_register/ {
unknown's avatar
unknown committed
21 22 23 24 25 26 27 28 29 30 31 32
	register = 1;
}
/opcode:/ {
	if (register == 1) {
		if ($2 == 1)
			register = 3;
		else
			register = $2;
	}
}
/name:/ {
	if (register >= 2) {
unknown's avatar
unknown committed
33
		myfile = -2;
unknown's avatar
unknown committed
34 35 36 37
		for (i = 0; i <= nfiles; i++) {
			if ($2 == filenames[i]) {
				if (register == 2) {
					printme = 0;
unknown's avatar
unknown committed
38
					myfile = -2;
unknown's avatar
unknown committed
39 40 41 42 43 44 45 46 47 48
				} else {
					myfile = i;
				}
				break;
			}
		}
	}
	register = 0;
}
/fileid:/{
unknown's avatar
unknown committed
49 50 51 52 53 54
	if (myfile == -2)
		files[$2] = 0;
	else if (myfile != -1) {
		files[$2] = 1;
		if ($2 > nreg)
			nreg = $2;
unknown's avatar
unknown committed
55 56 57
		printme = 1;
		register = 0;
		myfile = -1;
unknown's avatar
unknown committed
58 59 60
	} else if ($2 <= nreg && files[$2] == 1) {
		printme = 1
	}
unknown's avatar
unknown committed
61
	myfile = -1;
unknown's avatar
unknown committed
62 63 64 65 66 67 68 69 70 71 72
}

/^\[/{
	if (printme == 1) {
		printf("%s\n", rec);
		printme = 0
	}
	rec = "";

	rec = $0
}
unknown's avatar
unknown committed
73 74

TXN == 1 && /txn_regop/ {printme = 1}
unknown's avatar
unknown committed
75 76 77 78 79 80 81 82
/^	/{
	rec = sprintf("%s\n%s", rec, $0);
}

END {
	if (printme == 1)
		printf("%s\n", rec);
}