1# $Id: dbname.awk,v 12.1 2005/03/23 04:56:51 ubell Exp $
2#
3# Take a comma-separated list of database names and spit out all the
4# log records that affect those databases.
5
6NR == 1 {
7	nfiles = 0
8	while ((ndx = index(DBNAME, ",")) != 0) {
9		filenames[nfiles] = substr(DBNAME, 1, ndx - 1) 0;
10		DBNAME = substr(DBNAME, ndx + 1, length(DBNAME) - ndx);
11		files[nfiles] = -1
12		nfiles++
13	}
14	filenames[nfiles] = DBNAME 0;
15	files[nfiles] = -1
16	myfile = -1;
17	nreg = 0;
18}
19
20/^\[.*dbreg_register/ {
21	register = 1;
22}
23/opcode:/ {
24	if (register == 1) {
25		if ($2 == 1)
26			register = 3;
27		else
28			register = $2;
29	}
30}
31/name:/ {
32	if (register >= 2) {
33		myfile = -2;
34		for (i = 0; i <= nfiles; i++) {
35			if ($2 == filenames[i]) {
36				if (register == 2) {
37					printme = 0;
38					myfile = -2;
39				} else {
40					myfile = i;
41				}
42				break;
43			}
44		}
45	}
46	register = 0;
47}
48/fileid:/{
49	if (myfile == -2)
50		files[$2] = 0;
51	else if (myfile != -1) {
52		files[$2] = 1;
53		if ($2 > nreg)
54			nreg = $2;
55		printme = 1;
56		register = 0;
57		myfile = -1;
58	} else if ($2 <= nreg && files[$2] == 1) {
59		printme = 1
60	}
61	myfile = -1;
62}
63
64/^\[/{
65	if (printme == 1) {
66		printf("%s\n", rec);
67		printme = 0
68	}
69	rec = "";
70
71	rec = $0
72}
73
74TXN == 1 && /txn_regop/ {printme = 1}
75/^	/{
76	rec = sprintf("%s\n%s", rec, $0);
77}
78
79END {
80	if (printme == 1)
81		printf("%s\n", rec);
82}
83