diff options
author | unknown <osku@127.(none)> | 2005-08-12 11:39:19 +0300 |
---|---|---|
committer | unknown <osku@127.(none)> | 2005-08-12 11:39:19 +0300 |
commit | babc9f5d2bce17bfcbff2d4d1ab6b451059ab954 (patch) | |
tree | 21b7de1b8632c1f1729e35528e580de73fb20e60 /innobase | |
parent | 5329be868e6dc44bd78e5b5540b37ee8cb204513 (diff) | |
download | mariadb-git-babc9f5d2bce17bfcbff2d4d1ab6b451059ab954.tar.gz |
InnoDB: Print more than 300 characters of queries in various error conditions,
most notably deadlocked ones in SHOW INNODB STATUS. Fixes bug #7819.
innobase/btr/btr0pcur.c:
Adapt to changes in trx_print.
innobase/include/trx0trx.h:
Add max_query_len parameter to trx_print.
innobase/lock/lock0lock.c:
Adapt to changes in trx_print.
innobase/row/row0ins.c:
Adapt to changes in trx_print.
innobase/row/row0sel.c:
Adapt to changes in trx_print.
innobase/row/row0umod.c:
Adapt to changes in trx_print.
innobase/row/row0upd.c:
Adapt to changes in trx_print.
innobase/srv/srv0srv.c:
Adapt to changes in trx_print.
innobase/trx/trx0trx.c:
Add max_query_len parameter to trx_print.
sql/ha_innodb.cc:
Add max_query_len parameter to innobase_mysql_print_thd.
Diffstat (limited to 'innobase')
-rw-r--r-- | innobase/btr/btr0pcur.c | 2 | ||||
-rw-r--r-- | innobase/include/trx0trx.h | 15 | ||||
-rw-r--r-- | innobase/lock/lock0lock.c | 8 | ||||
-rw-r--r-- | innobase/row/row0ins.c | 6 | ||||
-rw-r--r-- | innobase/row/row0sel.c | 6 | ||||
-rw-r--r-- | innobase/row/row0umod.c | 2 | ||||
-rw-r--r-- | innobase/row/row0upd.c | 2 | ||||
-rw-r--r-- | innobase/srv/srv0srv.c | 2 | ||||
-rw-r--r-- | innobase/trx/trx0trx.c | 25 |
9 files changed, 37 insertions, 31 deletions
diff --git a/innobase/btr/btr0pcur.c b/innobase/btr/btr0pcur.c index cb398b4afab..5dbbca0b17d 100644 --- a/innobase/btr/btr0pcur.c +++ b/innobase/btr/btr0pcur.c @@ -210,7 +210,7 @@ btr_pcur_restore_position( && cursor->pos_state != BTR_PCUR_IS_POSITIONED)) { ut_print_buf(stderr, (const byte*)cursor, sizeof(btr_pcur_t)); if (cursor->trx_if_known) { - trx_print(stderr, cursor->trx_if_known); + trx_print(stderr, cursor->trx_if_known, 0); } ut_error; diff --git a/innobase/include/trx0trx.h b/innobase/include/trx0trx.h index a3ef755348c..5dbf003594f 100644 --- a/innobase/include/trx0trx.h +++ b/innobase/include/trx0trx.h @@ -329,17 +329,20 @@ trx_commit_step( /*============*/ /* out: query thread to run next, or NULL */ que_thr_t* thr); /* in: query thread */ + /************************************************************************** -Prints info about a transaction to the standard output. The caller must -own the kernel mutex and must have called -innobase_mysql_prepare_print_arbitrary_thd(), unless he knows that MySQL or -InnoDB cannot meanwhile change the info printed here. */ +Prints info about a transaction to the given file. The caller must own the +kernel mutex and must have called +innobase_mysql_prepare_print_arbitrary_thd(), unless he knows that MySQL +or InnoDB cannot meanwhile change the info printed here. */ void trx_print( /*======*/ - FILE* f, /* in: output stream */ - trx_t* trx); /* in: transaction */ + FILE* f, /* in: output stream */ + trx_t* trx, /* in: transaction */ + uint max_query_len); /* in: max query length to print, or 0 to + use the default max length */ #ifndef UNIV_HOTBACKUP /************************************************************************** diff --git a/innobase/lock/lock0lock.c b/innobase/lock/lock0lock.c index 280c4871ee9..1f222d71d6a 100644 --- a/innobase/lock/lock0lock.c +++ b/innobase/lock/lock0lock.c @@ -3297,7 +3297,7 @@ lock_deadlock_recursive( fputs("\n*** (1) TRANSACTION:\n", ef); - trx_print(ef, wait_lock->trx); + trx_print(ef, wait_lock->trx, 3000); fputs( "*** (1) WAITING FOR THIS LOCK TO BE GRANTED:\n", ef); @@ -3310,7 +3310,7 @@ lock_deadlock_recursive( fputs("*** (2) TRANSACTION:\n", ef); - trx_print(ef, lock->trx); + trx_print(ef, lock->trx, 3000); fputs("*** (2) HOLDS THE LOCK(S):\n", ef); @@ -4207,7 +4207,7 @@ lock_print_info_all_transactions( while (trx) { if (trx->conc_state == TRX_NOT_STARTED) { fputs("---", file); - trx_print(file, trx); + trx_print(file, trx, 600); } trx = UT_LIST_GET_NEXT(mysql_trx_list, trx); @@ -4239,7 +4239,7 @@ loop: if (nth_lock == 0) { fputs("---", file); - trx_print(file, trx); + trx_print(file, trx, 600); if (trx->read_view) { fprintf(file, diff --git a/innobase/row/row0ins.c b/innobase/row/row0ins.c index bce775c25d6..75d8117a73e 100644 --- a/innobase/row/row0ins.c +++ b/innobase/row/row0ins.c @@ -602,7 +602,7 @@ row_ins_foreign_report_err( rewind(ef); ut_print_timestamp(ef); fputs(" Transaction:\n", ef); - trx_print(ef, trx); + trx_print(ef, trx, 600); fputs("Foreign key constraint fails for table ", ef); ut_print_name(ef, trx, foreign->foreign_table_name); @@ -653,7 +653,7 @@ row_ins_foreign_report_add_err( rewind(ef); ut_print_timestamp(ef); fputs(" Transaction:\n", ef); - trx_print(ef, trx); + trx_print(ef, trx, 600); fputs("Foreign key constraint fails for table ", ef); ut_print_name(ef, trx, foreign->foreign_table_name); fputs(":\n", ef); @@ -1228,7 +1228,7 @@ run_again: rewind(ef); ut_print_timestamp(ef); fputs(" Transaction:\n", ef); - trx_print(ef, trx); + trx_print(ef, trx, 600); fputs("Foreign key constraint fails for table ", ef); ut_print_name(ef, trx, foreign->foreign_table_name); fputs(":\n", ef); diff --git a/innobase/row/row0sel.c b/innobase/row/row0sel.c index 57689520bfb..7328db1c65d 100644 --- a/innobase/row/row0sel.c +++ b/innobase/row/row0sel.c @@ -2685,7 +2685,7 @@ row_sel_get_clust_rec_for_mysql( "InnoDB: clust index record ", stderr); rec_print(stderr, clust_rec, clust_index); putc('\n', stderr); - trx_print(stderr, trx); + trx_print(stderr, trx, 600); fputs("\n" "InnoDB: Submit a detailed bug report to http://bugs.mysql.com\n", stderr); @@ -3128,7 +3128,7 @@ row_search_for_mysql( "InnoDB: Error: MySQL is trying to perform a SELECT\n" "InnoDB: but it has not locked any tables in ::external_lock()!\n", stderr); - trx_print(stderr, trx); + trx_print(stderr, trx, 600); fputc('\n', stderr); } @@ -3455,7 +3455,7 @@ shortcut_fails_too_big_rec: fputs( "InnoDB: Error: MySQL is trying to perform a consistent read\n" "InnoDB: but the read view is not assigned!\n", stderr); - trx_print(stderr, trx); + trx_print(stderr, trx, 600); fputc('\n', stderr); ut_a(0); } diff --git a/innobase/row/row0umod.c b/innobase/row/row0umod.c index 0225a9faec5..f906027033f 100644 --- a/innobase/row/row0umod.c +++ b/innobase/row/row0umod.c @@ -431,7 +431,7 @@ row_undo_mod_del_unmark_sec_and_undo_update( "InnoDB: record ", stderr); rec_print(stderr, btr_pcur_get_rec(&pcur), index); putc('\n', stderr); - trx_print(stderr, trx); + trx_print(stderr, trx, 0); fputs("\n" "InnoDB: Submit a detailed bug report to http://bugs.mysql.com\n", stderr); } else { diff --git a/innobase/row/row0upd.c b/innobase/row/row0upd.c index 514fb6bd577..4f44dbeae67 100644 --- a/innobase/row/row0upd.c +++ b/innobase/row/row0upd.c @@ -1279,7 +1279,7 @@ row_upd_sec_index_entry( rec_print(stderr, rec, index); putc('\n', stderr); - trx_print(stderr, trx); + trx_print(stderr, trx, 0); fputs("\n" "InnoDB: Submit a detailed bug report to http://bugs.mysql.com\n", stderr); diff --git a/innobase/srv/srv0srv.c b/innobase/srv/srv0srv.c index dc85750f0be..7e23b5c6090 100644 --- a/innobase/srv/srv0srv.c +++ b/innobase/srv/srv0srv.c @@ -999,7 +999,7 @@ retry: fputs( " InnoDB: Error: trying to declare trx to enter InnoDB, but\n" "InnoDB: it already is declared.\n", stderr); - trx_print(stderr, trx); + trx_print(stderr, trx, 0); putc('\n', stderr); os_fast_mutex_unlock(&srv_conc_mutex); diff --git a/innobase/trx/trx0trx.c b/innobase/trx/trx0trx.c index 1681bed9af2..078befb81d2 100644 --- a/innobase/trx/trx0trx.c +++ b/innobase/trx/trx0trx.c @@ -30,8 +30,9 @@ Created 3/26/1996 Heikki Tuuri copy MUST be equal to the one in mysql/sql/ha_innodb.cc ! */ void innobase_mysql_print_thd( - FILE* f, - void* thd); + FILE* f, + void* thd, + uint max_query_len); /* Dummy session used currently in MySQL interface */ sess_t* trx_dummy_sess = NULL; @@ -262,7 +263,7 @@ trx_free( fputs( " InnoDB: Error: Freeing a trx which is declared to be processing\n" "InnoDB: inside InnoDB.\n", stderr); - trx_print(stderr, trx); + trx_print(stderr, trx, 600); putc('\n', stderr); } @@ -277,7 +278,7 @@ trx_free( (ulong)trx->n_mysql_tables_in_use, (ulong)trx->mysql_n_tables_locked); - trx_print(stderr, trx); + trx_print(stderr, trx, 600); ut_print_buf(stderr, (byte*)trx, sizeof(trx_t)); } @@ -1651,16 +1652,18 @@ trx_mark_sql_stat_end( } /************************************************************************** -Prints info about a transaction to the standard output. The caller must -own the kernel mutex and must have called -innobase_mysql_prepare_print_arbitrary_thd(), unless he knows that MySQL or -InnoDB cannot meanwhile change the info printed here. */ +Prints info about a transaction to the given file. The caller must own the +kernel mutex and must have called +innobase_mysql_prepare_print_arbitrary_thd(), unless he knows that MySQL +or InnoDB cannot meanwhile change the info printed here. */ void trx_print( /*======*/ - FILE* f, /* in: output stream */ - trx_t* trx) /* in: transaction */ + FILE* f, /* in: output stream */ + trx_t* trx, /* in: transaction */ + uint max_query_len) /* in: max query length to print, or 0 to + use the default max length */ { ibool newline; @@ -1755,7 +1758,7 @@ trx_print( } if (trx->mysql_thd != NULL) { - innobase_mysql_print_thd(f, trx->mysql_thd); + innobase_mysql_print_thd(f, trx->mysql_thd, max_query_len); } } |