]> git.pld-linux.org Git - packages/mysql.git/blame - mysql-innodb_locks_held.patch
automake fix
[packages/mysql.git] / mysql-innodb_locks_held.patch
CommitLineData
36400f81 1diff -ruN a/innobase/include/srv0srv.h b/innobase/include/srv0srv.h
45532174
ER
2--- a/innobase/include/srv0srv.h Mon Jun 01 00:36:33 2009 -0700
3+++ b/innobase/include/srv0srv.h Mon Jun 01 00:36:41 2009 -0700
eccb488f
ER
4@@ -80,6 +80,8 @@
5 extern ulint srv_log_file_size;
6 extern ulint srv_log_buffer_size;
7 extern ulong srv_flush_log_at_trx_commit;
8+extern ulong srv_show_locks_held;
9+extern ulong srv_show_verbose_locks;
10
11 extern byte srv_latin1_ordering[256];/* The sort order table of the latin1
12 character set */
36400f81 13diff -ruN a/innobase/lock/lock0lock.c b/innobase/lock/lock0lock.c
45532174
ER
14--- a/innobase/lock/lock0lock.c Mon Jun 01 00:36:33 2009 -0700
15+++ b/innobase/lock/lock0lock.c Mon Jun 01 00:36:41 2009 -0700
36400f81 16@@ -4156,6 +4156,7 @@
eccb488f
ER
17 #endif /* UNIV_SYNC_DEBUG */
18 }
19
20+ if ( srv_show_verbose_locks ) {
21 for (i = 0; i < lock_rec_get_n_bits(lock); i++) {
22
23 if (lock_rec_get_nth_bit(lock, i)) {
36400f81 24@@ -4173,6 +4174,7 @@
eccb488f
ER
25 putc('\n', file);
26 }
27 }
28+ } /* srv_show_verbose_locks */
29
30 mtr_commit(&mtr);
31 if (UNIV_LIKELY_NULL(heap)) {
36400f81 32@@ -4338,7 +4340,7 @@
eccb488f
ER
33 }
34 }
35
36- if (!srv_print_innodb_lock_monitor) {
37+ if (!srv_print_innodb_lock_monitor && !srv_show_locks_held) {
38 nth_trx++;
39 goto loop;
40 }
36400f81 41@@ -4393,9 +4395,9 @@
eccb488f
ER
42
43 nth_lock++;
44
45- if (nth_lock >= 10) {
46+ if (nth_lock >= srv_show_locks_held) {
47 fputs(
48- "10 LOCKS PRINTED FOR THIS TRX: SUPPRESSING FURTHER PRINTS\n",
49+ "TOO MANY LOCKS PRINTED FOR THIS TRX: SUPPRESSING FURTHER PRINTS\n",
50 file);
51
52 nth_trx++;
36400f81 53diff -ruN a/innobase/srv/srv0srv.c b/innobase/srv/srv0srv.c
45532174
ER
54--- a/innobase/srv/srv0srv.c Mon Jun 01 00:36:33 2009 -0700
55+++ b/innobase/srv/srv0srv.c Mon Jun 01 00:36:41 2009 -0700
eccb488f
ER
56@@ -116,6 +116,8 @@
57 ulint srv_log_file_size = ULINT_MAX; /* size in database pages */
58 ulint srv_log_buffer_size = ULINT_MAX; /* size in database pages */
59 ulong srv_flush_log_at_trx_commit = 1;
60+ulint srv_show_locks_held = 10;
61+ulint srv_show_verbose_locks = 0;
62
63 byte srv_latin1_ordering[256] /* The sort order table of the latin1
64 character set. The following table is
45532174 65@@ -1711,24 +1713,6 @@
dcc72bc6
ER
66
67 mutex_exit(&dict_foreign_err_mutex);
68
69- lock_print_info_summary(file);
70- if (trx_start) {
71- long t = ftell(file);
72- if (t < 0) {
73- *trx_start = ULINT_UNDEFINED;
74- } else {
75- *trx_start = (ulint) t;
76- }
77- }
78- lock_print_info_all_transactions(file);
79- if (trx_end) {
80- long t = ftell(file);
81- if (t < 0) {
82- *trx_end = ULINT_UNDEFINED;
83- } else {
84- *trx_end = (ulint) t;
85- }
86- }
87 fputs("--------\n"
88 "FILE I/O\n"
89 "--------\n", file);
45532174 90@@ -1822,6 +1806,25 @@
dcc72bc6
ER
91 srv_n_rows_deleted_old = srv_n_rows_deleted;
92 srv_n_rows_read_old = srv_n_rows_read;
45532174 93
dcc72bc6
ER
94+ lock_print_info_summary(file);
95+ if (trx_start) {
96+ long t = ftell(file);
97+ if (t < 0) {
98+ *trx_start = ULINT_UNDEFINED;
99+ } else {
100+ *trx_start = (ulint) t;
101+ }
102+ }
103+ lock_print_info_all_transactions(file);
104+ if (trx_end) {
105+ long t = ftell(file);
106+ if (t < 0) {
107+ *trx_end = ULINT_UNDEFINED;
108+ } else {
109+ *trx_end = (ulint) t;
110+ }
111+ }
45532174 112+
dcc72bc6
ER
113 fputs("----------------------------\n"
114 "END OF INNODB MONITOR OUTPUT\n"
45532174 115 "============================\n", file);
36400f81 116diff -ruN a/libmysqld/set_var.cc b/libmysqld/set_var.cc
45532174
ER
117--- a/libmysqld/set_var.cc Mon Jun 01 00:36:33 2009 -0700
118+++ b/libmysqld/set_var.cc Mon Jun 01 00:36:41 2009 -0700
36400f81 119@@ -831,6 +831,8 @@
eccb488f
ER
120 &sys_innodb_thread_concurrency,
121 &sys_innodb_commit_concurrency,
122 &sys_innodb_flush_log_at_trx_commit,
123+ &sys_innodb_show_locks_held,
124+ &sys_innodb_show_verbose_locks,
125 #endif
126 &sys_trust_routine_creators,
127 &sys_trust_function_creators,
36400f81 128@@ -948,6 +950,8 @@
eccb488f
ER
129 {"innodb_file_io_threads", (char*) &innobase_file_io_threads, SHOW_LONG },
130 {"innodb_file_per_table", (char*) &innobase_file_per_table, SHOW_MY_BOOL},
131 {sys_innodb_flush_log_at_trx_commit.name, (char*) &sys_innodb_flush_log_at_trx_commit, SHOW_SYS},
132+ {sys_innodb_show_locks_held.name, (char*) &sys_innodb_show_locks_held, SHOW_SYS },
133+ {sys_innodb_show_verbose_locks.name, (char*) &sys_innodb_show_verbose_locks, SHOW_SYS },
134 {"innodb_flush_method", (char*) &innobase_unix_file_flush_method, SHOW_CHAR_PTR},
135 {"innodb_force_recovery", (char*) &innobase_force_recovery, SHOW_LONG },
136 {"innodb_lock_wait_timeout", (char*) &innobase_lock_wait_timeout, SHOW_LONG },
36400f81 137diff -ruN /dev/null b/patch_info/innodb_locks_held.info
eccb488f 138--- /dev/null Thu Jan 01 00:00:00 1970 +0000
45532174 139+++ b/patch_info/innodb_locks_held.info Mon Jun 01 00:36:41 2009 -0700
eccb488f
ER
140@@ -0,0 +1,6 @@
141+File=innodb_locks_held.patch
142+Name=Add locks held, remove locked records in SHOW INNODB STATUS
143+Version=1.0
144+Author=Baron Schwartz <baron@xaprb.com>
145+License=GPL
146+Comment=Bug #29126 fix
36400f81 147diff -ruN a/sql/ha_innodb.h b/sql/ha_innodb.h
45532174
ER
148--- a/sql/ha_innodb.h Mon Jun 01 00:36:33 2009 -0700
149+++ b/sql/ha_innodb.h Mon Jun 01 00:36:41 2009 -0700
150@@ -243,6 +243,8 @@
151 extern ulong srv_enable_unsafe_group_commit;
337bc045 152 extern uint srv_read_ahead;
89b96684 153 extern uint srv_adaptive_checkpoint;
eccb488f
ER
154+extern ulong srv_show_locks_held;
155+extern ulong srv_show_verbose_locks;
eccb488f 156
45532174
ER
157 /* An option to enable the fix for "Bug#43660 SHOW INDEXES/ANALYZE does
158 NOT update cardinality for indexes of InnoDB table". By default we are
36400f81 159diff -ruN a/sql/mysqld.cc b/sql/mysqld.cc
45532174
ER
160--- a/sql/mysqld.cc Mon Jun 01 00:36:33 2009 -0700
161+++ b/sql/mysqld.cc Mon Jun 01 00:36:41 2009 -0700
36400f81 162@@ -5032,6 +5032,8 @@
eccb488f
ER
163 OPT_INNODB_MAX_PURGE_LAG,
164 OPT_INNODB_FILE_IO_THREADS,
165 OPT_INNODB_LOCK_WAIT_TIMEOUT,
166+ OPT_INNODB_SHOW_LOCKS_HELD,
167+ OPT_INNODB_SHOW_VERBOSE_LOCKS,
168 OPT_INNODB_THREAD_CONCURRENCY,
169 OPT_INNODB_COMMIT_CONCURRENCY,
170 OPT_INNODB_FORCE_RECOVERY,
36400f81 171@@ -5379,6 +5381,14 @@
eccb488f
ER
172 (gptr*) &srv_flush_log_at_trx_commit,
173 (gptr*) &srv_flush_log_at_trx_commit,
174 0, GET_ULONG, OPT_ARG, 1, 0, 2, 0, 0, 0},
175+ {"innodb_show_locks_held", OPT_INNODB_SHOW_LOCKS_HELD,
176+ "Number of locks held to print for each InnoDB transaction in SHOW INNODB STATUS.",
177+ (gptr*) &srv_show_locks_held, (gptr*) &srv_show_locks_held,
178+ 0, GET_LONG, OPT_ARG, 10, 0, 1000, 0, 1, 0},
179+ {"innodb_show_verbose_locks", OPT_INNODB_SHOW_VERBOSE_LOCKS,
180+ "Whether to show records locked in SHOW INNODB STATUS.",
181+ (gptr*) &srv_show_verbose_locks, (gptr*) &srv_show_verbose_locks,
182+ 0, GET_LONG, OPT_ARG, 0, 0, 1, 0, 1, 0},
183 {"innodb_flush_method", OPT_INNODB_FLUSH_METHOD,
184 "With which method to flush data.", (gptr*) &innobase_unix_file_flush_method,
185 (gptr*) &innobase_unix_file_flush_method, 0, GET_STR, REQUIRED_ARG, 0, 0, 0,
36400f81 186diff -ruN a/sql/set_var.cc b/sql/set_var.cc
45532174
ER
187--- a/sql/set_var.cc Mon Jun 01 00:36:33 2009 -0700
188+++ b/sql/set_var.cc Mon Jun 01 00:36:41 2009 -0700
36400f81 189@@ -541,6 +541,12 @@
89b96684
ER
190 sys_var_enum sys_innodb_adaptive_checkpoint("innodb_adaptive_checkpoint",
191 &srv_adaptive_checkpoint,
192 &innodb_adaptive_checkpoint_typelib, fix_innodb_adaptive_checkpoint);
eccb488f
ER
193+sys_var_long_ptr sys_innodb_show_locks_held(
194+ "innodb_show_locks_held",
195+ &srv_show_locks_held);
196+sys_var_long_ptr sys_innodb_show_verbose_locks(
197+ "innodb_show_verbose_locks",
198+ &srv_show_verbose_locks);
199 sys_var_const_os_str_ptr sys_innodb_data_file_path("innodb_data_file_path",
200 &innobase_data_file_path);
201 sys_var_const_os_str_ptr sys_innodb_data_home_dir("innodb_data_home_dir",
36400f81 202@@ -924,6 +930,8 @@
eccb488f 203 &sys_innodb_read_ahead,
45532174 204 &sys_innodb_enable_unsafe_group_commit,
eccb488f
ER
205 &sys_innodb_adaptive_checkpoint,
206+ &sys_innodb_show_locks_held,
207+ &sys_innodb_show_verbose_locks,
208 #endif
209 &sys_trust_routine_creators,
210 &sys_trust_function_creators,
36400f81 211@@ -1041,6 +1049,8 @@
eccb488f
ER
212 {"innodb_file_io_threads", (char*) &innobase_file_io_threads, SHOW_LONG },
213 {"innodb_file_per_table", (char*) &innobase_file_per_table, SHOW_MY_BOOL},
214 {sys_innodb_flush_log_at_trx_commit.name, (char*) &sys_innodb_flush_log_at_trx_commit, SHOW_SYS},
215+ {sys_innodb_show_locks_held.name, (char*) &sys_innodb_show_locks_held, SHOW_SYS },
216+ {sys_innodb_show_verbose_locks.name, (char*) &sys_innodb_show_verbose_locks, SHOW_SYS },
217 {"innodb_flush_method", (char*) &innobase_unix_file_flush_method, SHOW_CHAR_PTR},
218 {"innodb_force_recovery", (char*) &innobase_force_recovery, SHOW_LONG },
219 {"innodb_lock_wait_timeout", (char*) &innobase_lock_wait_timeout, SHOW_LONG },
This page took 0.052026 seconds and 4 git commands to generate.