Merge lp:~gaul/percona-data-recovery-tool-for-innodb/page-printer-type into lp:percona-data-recovery-tool-for-innodb

Proposed by Andrew Gaul
Status: Needs review
Proposed branch: lp:~gaul/percona-data-recovery-tool-for-innodb/page-printer-type
Merge into: lp:percona-data-recovery-tool-for-innodb
Diff against target: 45 lines (+26/-2)
1 file modified
page_printer.c (+26/-2)
To merge this branch: bzr merge lp:~gaul/percona-data-recovery-tool-for-innodb/page-printer-type
Reviewer Review Type Date Requested Status
Percona developers Pending
Review via email: mp+119397@code.launchpad.net
To post a comment you must log in.

Unmerged revisions

69. By Andrew Gaul <email address hidden>

Emit a human-readable page type

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'page_printer.c'
2--- page_printer.c 2012-08-09 20:35:20 +0000
3+++ page_printer.c 2012-08-13 17:48:28 +0000
4@@ -27,6 +27,25 @@
5
6 #define COLUMN_NAME_FMT "%-32s"
7
8+/* sourced from fil0fil.h */
9+static const char *page_type_to_str(ulint page_type)
10+{
11+ switch (page_type) {
12+ case FIL_PAGE_INDEX: return "INDEX";
13+ case FIL_PAGE_UNDO_LOG: return "UNDO_LOG";
14+ case FIL_PAGE_INODE: return "INODE";
15+ case FIL_PAGE_IBUF_FREE_LIST: return "IBUF_FREE_LIST";
16+ case FIL_PAGE_TYPE_ALLOCATED: return "ALLOCATED";
17+ case FIL_PAGE_IBUF_BITMAP: return "IBUF_BITMAP";
18+ case FIL_PAGE_TYPE_SYS: return "SYS";
19+ case FIL_PAGE_TYPE_TRX_SYS: return "TRX_SYS";
20+ case FIL_PAGE_TYPE_FSP_HDR: return "FSP_HDR";
21+ case FIL_PAGE_TYPE_XDES: return "XDES";
22+ case FIL_PAGE_TYPE_BLOB: return "BLOB";
23+ default: return "UNKNOWN";
24+ }
25+}
26+
27 static void print_page(uchar *p)
28 {
29 int type = mach_read_from_2(p + FIL_PAGE_TYPE);
30@@ -44,8 +63,13 @@
31 mach_read_from_4(p + FIL_PAGE_NEXT));
32 printf(COLUMN_NAME_FMT " %ld\n", "FIL_PAGE_LSN",
33 mach_read_from_4(p + FIL_PAGE_LSN));
34- printf(COLUMN_NAME_FMT " %ld\n", "FIL_PAGE_TYPE",
35- mach_read_from_2(p + FIL_PAGE_TYPE));
36+ ulint page_type = mach_read_from_2(p + FIL_PAGE_TYPE);
37+ const char *page_type_str = page_type_to_str(page_type);
38+ if (page_type_str == NULL) {
39+ printf(COLUMN_NAME_FMT " UNKNOWN (%ld)\n", "FIL_PAGE_TYPE", page_type);
40+ } else {
41+ printf(COLUMN_NAME_FMT " %s\n", "FIL_PAGE_TYPE", page_type_str);
42+ }
43 dulint flush_lsn_tuple = mach_read_from_6(p + FIL_PAGE_FILE_FLUSH_LSN);
44 uint64_t flush_lsn = (((uint64_t) flush_lsn_tuple.high) << 32) +
45 flush_lsn_tuple.low;

Subscribers

People subscribed via source and target branches