diff -ruN a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc
--- a/storage/innobase/handler/ha_innodb.cc 2011-01-21 19:53:42.369599743 +0900
+++ b/storage/innobase/handler/ha_innodb.cc 2011-01-21 19:54:44.659599699 +0900
-@@ -618,6 +618,16 @@
+@@ -638,6 +638,16 @@
trx_t* trx); /*!< in: transaction handle */
static SHOW_VAR innodb_status_variables[]= {
{"buffer_pool_pages_data",
(char*) &export_vars.innodb_buffer_pool_pages_data, SHOW_LONG},
{"buffer_pool_pages_dirty",
-@@ -632,8 +642,14 @@
+@@ -652,8 +662,14 @@
{"buffer_pool_pages_latched",
(char*) &export_vars.innodb_buffer_pool_pages_latched, SHOW_LONG},
#endif /* UNIV_DEBUG */
{"buffer_pool_pages_total",
(char*) &export_vars.innodb_buffer_pool_pages_total, SHOW_LONG},
{"buffer_pool_read_ahead",
-@@ -648,6 +664,12 @@
+@@ -668,6 +684,12 @@
(char*) &export_vars.innodb_buffer_pool_wait_free, SHOW_LONG},
{"buffer_pool_write_requests",
(char*) &export_vars.innodb_buffer_pool_write_requests, SHOW_LONG},
{"data_fsyncs",
(char*) &export_vars.innodb_data_fsyncs, SHOW_LONG},
{"data_pending_fsyncs",
-@@ -674,12 +696,66 @@
+@@ -694,12 +716,66 @@
(char*) &export_vars.innodb_dict_tables, SHOW_LONG},
{"have_atomic_builtins",
(char*) &export_vars.innodb_have_atomic_builtins, SHOW_BOOL},
{"os_log_fsyncs",
(char*) &export_vars.innodb_os_log_fsyncs, SHOW_LONG},
{"os_log_pending_fsyncs",
-@@ -696,8 +772,14 @@
+@@ -716,8 +792,14 @@
(char*) &export_vars.innodb_pages_read, SHOW_LONG},
{"pages_written",
(char*) &export_vars.innodb_pages_written, SHOW_LONG},
+ (char*) &export_vars.innodb_purge_undo_no, SHOW_LONGLONG},
{"row_lock_current_waits",
(char*) &export_vars.innodb_row_lock_current_waits, SHOW_LONG},
-+ {"row_lock_numbers",
-+ (char*) &export_vars.innodb_row_lock_numbers, SHOW_LONG},
++ {"current_row_locks",
++ (char*) &export_vars.innodb_current_row_locks, SHOW_LONG},
{"row_lock_time",
(char*) &export_vars.innodb_row_lock_time, SHOW_LONGLONG},
{"row_lock_time_avg",
-@@ -714,8 +796,20 @@
+@@ -734,8 +816,20 @@
(char*) &export_vars.innodb_rows_read, SHOW_LONG},
{"rows_updated",
(char*) &export_vars.innodb_rows_updated, SHOW_LONG},
{NullS, NullS, SHOW_LONG}
};
+diff -ruN a/storage/innobase/ibuf/ibuf0ibuf.c b/storage/innobase/ibuf/ibuf0ibuf.c
+--- a/storage/innobase/ibuf/ibuf0ibuf.c 2011-02-03 15:05:04.000000000 +0900
++++ b/storage/innobase/ibuf/ibuf0ibuf.c 2011-02-03 15:19:47.000000000 +0900
+@@ -479,6 +479,45 @@
+ }
+
+ /******************************************************************//**
++Function to pass ibuf status variables */
++UNIV_INTERN
++void
++ibuf_export_ibuf_status(
++/*====================*/
++ ulint* size,
++ ulint* free_list,
++ ulint* segment_size,
++ ulint* merges,
++ ulint* merged_inserts,
++ ulint* merged_delete_marks,
++ ulint* merged_deletes,
++ ulint* discarded_inserts,
++ ulint* discarded_delete_marks,
++ ulint* discarded_deletes)
++{
++ *size
++ = ibuf->size;
++ *free_list
++ = ibuf->free_list_len;
++ *segment_size
++ = ibuf->seg_size;
++ *merges
++ = ibuf->n_merges;
++ *merged_inserts
++ = ibuf->n_merged_ops[IBUF_OP_INSERT];
++ *merged_delete_marks
++ = ibuf->n_merged_ops[IBUF_OP_DELETE_MARK];
++ *merged_deletes
++ = ibuf->n_merged_ops[IBUF_OP_DELETE];
++ *discarded_inserts
++ = ibuf->n_discarded_ops[IBUF_OP_INSERT];
++ *discarded_delete_marks
++ = ibuf->n_discarded_ops[IBUF_OP_DELETE_MARK];
++ *discarded_deletes
++ = ibuf->n_discarded_ops[IBUF_OP_DELETE];
++}
++
++/******************************************************************//**
+ Updates the size information of the ibuf, assuming the segment size has not
+ changed. */
+ static
+diff -ruN a/storage/innobase/include/ibuf0ibuf.h b/storage/innobase/include/ibuf0ibuf.h
+--- a/storage/innobase/include/ibuf0ibuf.h 2010-12-04 02:58:26.000000000 +0900
++++ b/storage/innobase/include/ibuf0ibuf.h 2011-02-03 15:19:47.000000000 +0900
+@@ -420,6 +420,22 @@
+ void
+ ibuf_close(void);
+ /*============*/
++/******************************************************************//**
++Function to pass ibuf status variables */
++UNIV_INTERN
++void
++ibuf_export_ibuf_status(
++/*====================*/
++ ulint* size,
++ ulint* free_list,
++ ulint* segment_size,
++ ulint* merges,
++ ulint* merged_inserts,
++ ulint* merged_delete_marks,
++ ulint* merged_deletes,
++ ulint* discarded_inserts,
++ ulint* discarded_delete_marks,
++ ulint* discarded_deletes);
+
+ #define IBUF_HEADER_PAGE_NO FSP_IBUF_HEADER_PAGE_NO
+ #define IBUF_TREE_ROOT_PAGE_NO FSP_IBUF_TREE_ROOT_PAGE_NO
diff -ruN a/storage/innobase/include/lock0lock.h b/storage/innobase/include/lock0lock.h
--- a/storage/innobase/include/lock0lock.h 2011-01-21 19:52:38.967683738 +0900
+++ b/storage/innobase/include/lock0lock.h 2011-01-21 19:54:44.660599140 +0900
diff -ruN a/storage/innobase/include/srv0srv.h b/storage/innobase/include/srv0srv.h
--- a/storage/innobase/include/srv0srv.h 2011-01-21 19:53:42.380638228 +0900
+++ b/storage/innobase/include/srv0srv.h 2011-01-21 19:54:44.662600032 +0900
-@@ -727,6 +727,11 @@
+@@ -753,6 +753,11 @@
/** Status variables to be passed to MySQL */
struct export_var_struct{
ulint innodb_data_pending_reads; /*!< Pending reads */
ulint innodb_data_pending_writes; /*!< Pending writes */
ulint innodb_data_pending_fsyncs; /*!< Pending fsyncs */
-@@ -744,6 +749,9 @@
+@@ -770,6 +775,9 @@
#ifdef UNIV_DEBUG
ulint innodb_buffer_pool_pages_latched; /*!< Latched pages */
#endif /* UNIV_DEBUG */
ulint innodb_buffer_pool_read_requests; /*!< buf_pool->stat.n_page_gets */
ulint innodb_buffer_pool_reads; /*!< srv_buf_pool_reads */
ulint innodb_buffer_pool_wait_free; /*!< srv_buf_pool_wait_free */
-@@ -752,13 +760,43 @@
+@@ -778,13 +786,43 @@
ulint innodb_buffer_pool_write_requests;/*!< srv_buf_pool_write_requests */
ulint innodb_buffer_pool_read_ahead; /*!< srv_read_ahead */
ulint innodb_buffer_pool_read_ahead_evicted;/*!< srv_read_ahead evicted*/
ulint innodb_os_log_written; /*!< srv_os_log_written */
ulint innodb_os_log_fsyncs; /*!< fil_n_log_flushes */
ulint innodb_os_log_pending_writes; /*!< srv_os_log_pending_writes */
-@@ -767,6 +805,8 @@
+@@ -793,6 +831,8 @@
ulint innodb_pages_created; /*!< buf_pool->stat.n_pages_created */
ulint innodb_pages_read; /*!< buf_pool->stat.n_pages_read */
ulint innodb_pages_written; /*!< buf_pool->stat.n_pages_written */
ulint innodb_row_lock_waits; /*!< srv_n_lock_wait_count */
ulint innodb_row_lock_current_waits; /*!< srv_n_lock_wait_current_count */
ib_int64_t innodb_row_lock_time; /*!< srv_n_lock_wait_time
-@@ -776,11 +816,18 @@
+@@ -802,11 +842,18 @@
/ srv_n_lock_wait_count */
ulint innodb_row_lock_time_max; /*!< srv_n_lock_max_wait_time
/ 1000 */
-+ ulint innodb_row_lock_numbers;
++ ulint innodb_current_row_locks;
ulint innodb_rows_read; /*!< srv_n_rows_read */
ulint innodb_rows_inserted; /*!< srv_n_rows_inserted */
ulint innodb_rows_updated; /*!< srv_n_rows_updated */
diff -ruN a/storage/innobase/include/sync0sync.h b/storage/innobase/include/sync0sync.h
--- a/storage/innobase/include/sync0sync.h 2011-01-21 19:48:45.982637372 +0900
+++ b/storage/innobase/include/sync0sync.h 2011-01-21 19:54:44.664638235 +0900
-@@ -760,6 +760,10 @@
+@@ -761,6 +761,10 @@
#define SYNC_SPIN_ROUNDS srv_n_spin_wait_rounds
diff -ruN a/storage/innobase/srv/srv0srv.c b/storage/innobase/srv/srv0srv.c
--- a/storage/innobase/srv/srv0srv.c 2011-01-21 19:53:42.390637840 +0900
+++ b/storage/innobase/srv/srv0srv.c 2011-01-21 19:54:44.673637084 +0900
-@@ -2227,12 +2227,49 @@
+@@ -2269,12 +2269,49 @@
ulint LRU_len;
ulint free_len;
ulint flush_list_len;
export_vars.innodb_data_pending_reads
= os_n_pending_reads;
export_vars.innodb_data_pending_writes
-@@ -2269,6 +2306,101 @@
+@@ -2311,6 +2348,92 @@
export_vars.innodb_buffer_pool_pages_misc
= buf_pool_get_n_pages() - LRU_len - free_len;
+ : log_sys->max_checkpoint_age_async;
+ export_vars.innodb_history_list_length
+ = trx_sys->rseg_history_len;
-+ export_vars.innodb_ibuf_size
-+ = ibuf->size;
-+ export_vars.innodb_ibuf_free_list
-+ = ibuf->free_list_len;
-+ export_vars.innodb_ibuf_segment_size
-+ = ibuf->seg_size;
-+ export_vars.innodb_ibuf_merges
-+ = ibuf->n_merges;
-+ export_vars.innodb_ibuf_merged_inserts
-+ = ibuf->n_merged_ops[IBUF_OP_INSERT];
-+ export_vars.innodb_ibuf_merged_delete_marks
-+ = ibuf->n_merged_ops[IBUF_OP_DELETE_MARK];
-+ export_vars.innodb_ibuf_merged_deletes
-+ = ibuf->n_merged_ops[IBUF_OP_DELETE];
-+ export_vars.innodb_ibuf_discarded_inserts
-+ = ibuf->n_discarded_ops[IBUF_OP_INSERT];
-+ export_vars.innodb_ibuf_discarded_delete_marks
-+ = ibuf->n_discarded_ops[IBUF_OP_DELETE_MARK];
-+ export_vars.innodb_ibuf_discarded_deletes
-+ = ibuf->n_discarded_ops[IBUF_OP_DELETE];
++ ibuf_export_ibuf_status(
++ &export_vars.innodb_ibuf_size,
++ &export_vars.innodb_ibuf_free_list,
++ &export_vars.innodb_ibuf_segment_size,
++ &export_vars.innodb_ibuf_merges,
++ &export_vars.innodb_ibuf_merged_inserts,
++ &export_vars.innodb_ibuf_merged_delete_marks,
++ &export_vars.innodb_ibuf_merged_deletes,
++ &export_vars.innodb_ibuf_discarded_inserts,
++ &export_vars.innodb_ibuf_discarded_delete_marks,
++ &export_vars.innodb_ibuf_discarded_deletes);
+ export_vars.innodb_lsn_current
+ = log_sys->lsn;
+ export_vars.innodb_lsn_flushed
+ = purge_sys->purge_trx_no;
+ export_vars.innodb_purge_undo_no
+ = purge_sys->purge_undo_no;
-+ export_vars.innodb_row_lock_numbers
++ export_vars.innodb_current_row_locks
+ = lock_sys->rec_num;
+
#ifdef HAVE_ATOMIC_BUILTINS