diff options
author | unknown <monty@mishka.local> | 2004-04-26 15:53:31 +0300 |
---|---|---|
committer | unknown <monty@mishka.local> | 2004-04-26 15:53:31 +0300 |
commit | 1065f2bbd66ac4b1161f5c188171a54cbad5b422 (patch) | |
tree | 25e3315af05fa92d20d2ad1d812882957c400337 /innobase/trx | |
parent | 0ba6cb48d84f1ff951d09871a96be6cdef3f2c3c (diff) | |
parent | 6366a9090c7fc24f0e13b5b9d73d6777dcda9d9e (diff) | |
download | mariadb-git-1065f2bbd66ac4b1161f5c188171a54cbad5b422.tar.gz |
Merge with 4.0
innobase/dict/dict0boot.c:
Auto merged
innobase/dict/dict0load.c:
Auto merged
innobase/dict/dict0mem.c:
Auto merged
innobase/fut/fut0lst.c:
Auto merged
innobase/include/buf0lru.h:
Auto merged
innobase/include/dict0mem.h:
Auto merged
innobase/include/fsp0fsp.h:
Auto merged
innobase/include/ha0ha.h:
Auto merged
innobase/include/ibuf0ibuf.h:
Auto merged
innobase/include/lock0lock.h:
Auto merged
innobase/include/log0log.h:
Auto merged
innobase/include/mem0pool.h:
Auto merged
innobase/include/mtr0mtr.h:
Auto merged
innobase/include/os0file.h:
Auto merged
innobase/include/rem0rec.h:
Auto merged
innobase/include/rem0rec.ic:
Auto merged
innobase/include/srv0srv.h:
Auto merged
innobase/include/sync0sync.h:
Auto merged
innobase/include/trx0sys.h:
Auto merged
innobase/include/ut0byte.h:
Auto merged
innobase/include/ut0ut.h:
Auto merged
innobase/mem/mem0pool.c:
Auto merged
innobase/mtr/mtr0mtr.c:
Auto merged
innobase/os/os0proc.c:
Auto merged
innobase/pars/lexyy.c:
Auto merged
innobase/pars/pars0opt.c:
Auto merged
innobase/row/row0ins.c:
Auto merged
innobase/row/row0purge.c:
Auto merged
innobase/row/row0uins.c:
Auto merged
innobase/row/row0umod.c:
Auto merged
innobase/row/row0undo.c:
Auto merged
innobase/row/row0upd.c:
Auto merged
innobase/trx/trx0purge.c:
Auto merged
innobase/trx/trx0roll.c:
Auto merged
innobase/trx/trx0sys.c:
Auto merged
innobase/trx/trx0undo.c:
Auto merged
innobase/ut/ut0byte.c:
Auto merged
pstack/bucomm.h:
Auto merged
pstack/budbg.h:
Auto merged
sql/item_sum.h:
Auto merged
sql/slave.cc:
Auto merged
sql/sql_db.cc:
Auto merged
support-files/mysql.spec.sh:
Auto merged
tests/insert_test.c:
Auto merged
mysql-test/t/func_group.test:
Merge with 4.0
Put 4.1 tests lasts
sql/ha_innodb.cc:
Merge with 4.0
Added checking of results from my_malloc()
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
Diffstat (limited to 'innobase/trx')
-rw-r--r-- | innobase/trx/trx0purge.c | 10 | ||||
-rw-r--r-- | innobase/trx/trx0rec.c | 118 | ||||
-rw-r--r-- | innobase/trx/trx0roll.c | 22 | ||||
-rw-r--r-- | innobase/trx/trx0sys.c | 9 | ||||
-rw-r--r-- | innobase/trx/trx0trx.c | 101 | ||||
-rw-r--r-- | innobase/trx/trx0undo.c | 11 |
6 files changed, 133 insertions, 138 deletions
diff --git a/innobase/trx/trx0purge.c b/innobase/trx/trx0purge.c index 558a0825fd7..3d5f0d3f03a 100644 --- a/innobase/trx/trx0purge.c +++ b/innobase/trx/trx0purge.c @@ -337,7 +337,7 @@ trx_purge_free_segment( ibool marked = FALSE; mtr_t mtr; -/* printf("Freeing an update undo log segment\n"); */ +/* fputs("Freeing an update undo log segment\n", stderr); */ #ifdef UNIV_SYNC_DEBUG ut_ad(mutex_own(&(purge_sys->mutex))); @@ -918,7 +918,7 @@ trx_purge_fetch_next_rec( trx_purge_truncate_if_arr_empty(); if (srv_print_thread_releases) { - printf( + fprintf(stderr, "Purge: No logs left in the history list; pages handled %lu\n", (ulong) purge_sys->n_pages_handled); } @@ -951,7 +951,7 @@ trx_purge_fetch_next_rec( return(NULL); } -/* printf("Thread %lu purging trx %lu undo record %lu\n", +/* fprintf(stderr, "Thread %lu purging trx %lu undo record %lu\n", os_thread_get_curr_id(), ut_dulint_get_low(purge_sys->purge_trx_no), ut_dulint_get_low(purge_sys->purge_undo_no)); */ @@ -1064,14 +1064,14 @@ trx_purge(void) if (srv_print_thread_releases) { - printf("Starting purge\n"); + fputs("Starting purge\n", stderr); } que_run_threads(thr); if (srv_print_thread_releases) { - printf( + fprintf(stderr, "Purge ends; pages handled %lu\n", (ulong) purge_sys->n_pages_handled); } diff --git a/innobase/trx/trx0rec.c b/innobase/trx/trx0rec.c index bd37a4b506b..7963bec7f33 100644 --- a/innobase/trx/trx0rec.c +++ b/innobase/trx/trx0rec.c @@ -823,18 +823,18 @@ trx_undo_update_rec_get_update( if (field_no >= dict_index_get_n_fields(index)) { fprintf(stderr, - "InnoDB: Error: trying to access update undo rec field %lu in table %s\n" - "InnoDB: index %s, but index has only %lu fields\n", - (ulong) field_no, index->table_name, index->name, - (ulong) dict_index_get_n_fields(index)); - fprintf(stderr, - "InnoDB: Send a detailed bug report to mysql@lists.mysql.com"); - - fprintf(stderr, - "InnoDB: Run also CHECK TABLE on table %s\n", index->table_name); - fprintf(stderr, - "InnoDB: n_fields = %lu, i = %lu, ptr %lx\n", (ulong) n_fields, (ulong) i, - (ulong) ptr); + "InnoDB: Error: trying to access" + " update undo rec field %lu in ", (ulong) field_no); + dict_index_name_print(stderr, index); + fprintf(stderr, "\n" + "InnoDB: but index has only %lu fields\n" + "InnoDB: Send a detailed bug report to mysql@lists.mysql.com\n" + "InnoDB: Run also CHECK TABLE ", + (ulong) dict_index_get_n_fields(index)); + ut_print_name(stderr, index->table_name); + fprintf(stderr, "\n" + "InnoDB: n_fields = %lu, i = %lu, ptr %p\n", + (ulong) n_fields, (ulong) i, ptr); return(NULL); } @@ -1259,8 +1259,6 @@ trx_undo_prev_version_build( byte* buf; ulint err; ulint i; - char err_buf[1000]; - #ifdef UNIV_SYNC_DEBUG ut_ad(rw_lock_own(&(purge_sys->latch), RW_LOCK_SHARED)); #endif /* UNIV_SYNC_DEBUG */ @@ -1269,19 +1267,18 @@ trx_undo_prev_version_build( mtr_memo_contains(index_mtr, buf_block_align(index_rec), MTR_MEMO_PAGE_X_FIX)); if (!(index->type & DICT_CLUSTERED)) { - fprintf(stderr, - "InnoDB: Error: trying to access update undo rec for table %s\n" - "InnoDB: index %s which is not a clustered index\n", - index->table_name, index->name); - fprintf(stderr, - "InnoDB: Send a detailed bug report to mysql@lists.mysql.com"); - - rec_sprintf(err_buf, 900, index_rec); - fprintf(stderr, "InnoDB: index record %s\n", err_buf); - - rec_sprintf(err_buf, 900, rec); - fprintf(stderr, "InnoDB: record version %s\n", err_buf); - + fputs("InnoDB: Error: trying to access" + " update undo rec for non-clustered ", stderr); + dict_index_name_print(stderr, index); + fputs("\n" + "InnoDB: Send a detailed bug report to" + " mysql@lists.mysql.com\n" + "InnoDB: index record ", stderr); + rec_print(stderr, index_rec); + fputs("\n" + "InnoDB: record version ", stderr); + rec_print(stderr, rec); + putc('\n', stderr); return(DB_ERROR); } @@ -1319,56 +1316,49 @@ trx_undo_prev_version_build( if (ut_dulint_cmp(table_id, index->table->id) != 0) { ptr = NULL; - fprintf(stderr, - "InnoDB: Error: trying to access update undo rec for table %s\n" - "InnoDB: but the table id in the undo record is wrong\n", - index->table_name); - fprintf(stderr, - "InnoDB: Send a detailed bug report to mysql@lists.mysql.com\n"); - - fprintf(stderr, - "InnoDB: Run also CHECK TABLE on table %s\n", index->table_name); + fputs("InnoDB: Error: trying to access" + " update undo rec for table ", stderr); + ut_print_name(stderr, index->table_name); + fputs("\n" + "InnoDB: but the table id in the" + " undo record is wrong\n" + "InnoDB: Send a detailed bug report to " + "mysql@lists.mysql.com\n" + "InnoDB: Run also CHECK TABLE ", stderr); + ut_print_name(stderr, index->table_name); + putc('\n', stderr); } if (ptr == NULL) { /* The record was corrupted, return an error; these printfs should catch an elusive bug in row_vers_old_has_index_entry */ - fprintf(stderr, - "InnoDB: Table name %s, index name %s, n_uniq %lu\n", - index->table_name, index->name, - (ulong) dict_index_get_n_unique(index)); - - fprintf(stderr, - "InnoDB: undo rec address %lx, type %lu cmpl_info %lu\n", - (ulong) undo_rec, (ulong) type, - (ulong) cmpl_info); - fprintf(stderr, - "InnoDB: undo rec table id %lu %lu, index table id %lu %lu\n", + fputs("InnoDB: ", stderr); + dict_index_name_print(stderr, index); + fprintf(stderr, ", n_uniq %lu\n" + "InnoDB: undo rec address %p, type %lu cmpl_info %lu\n" + "InnoDB: undo rec table id %lu %lu, index table id %lu %lu\n" + "InnoDB: dump of 150 bytes in undo rec: ", + (ulong) dict_index_get_n_unique(index), + undo_rec, (ulong) type, (ulong) cmpl_info, (ulong) ut_dulint_get_high(table_id), (ulong) ut_dulint_get_low(table_id), (ulong) ut_dulint_get_high(index->table->id), (ulong) ut_dulint_get_low(index->table->id)); - - ut_sprintf_buf(err_buf, undo_rec, 150); - - fprintf(stderr, "InnoDB: dump of 150 bytes in undo rec: %s\n", - err_buf); - rec_sprintf(err_buf, 900, index_rec); - fprintf(stderr, "InnoDB: index record %s\n", err_buf); - - rec_sprintf(err_buf, 900, rec); - fprintf(stderr, "InnoDB: record version %s\n", err_buf); - - fprintf(stderr, - "InnoDB: Record trx id %lu %lu, update rec trx id %lu %lu\n", + ut_print_buf(stderr, undo_rec, 150); + fputs("\n" + "InnoDB: index record ", stderr); + rec_print(stderr, index_rec); + fputs("\n" + "InnoDB: record version ", stderr); + rec_print(stderr, rec); + fprintf(stderr, "\n" + "InnoDB: Record trx id %lu %lu, update rec trx id %lu %lu\n" + "InnoDB: Roll ptr in rec %lu %lu, in update rec %lu %lu\n", (ulong) ut_dulint_get_high(rec_trx_id), (ulong) ut_dulint_get_low(rec_trx_id), (ulong) ut_dulint_get_high(trx_id), - (ulong) ut_dulint_get_low(trx_id)); - - fprintf(stderr, - "InnoDB: Roll ptr in rec %lu %lu, in update rec %lu %lu\n", + (ulong) ut_dulint_get_low(trx_id), (ulong) ut_dulint_get_high(old_roll_ptr), (ulong) ut_dulint_get_low(old_roll_ptr), (ulong) ut_dulint_get_high(roll_ptr), diff --git a/innobase/trx/trx0roll.c b/innobase/trx/trx0roll.c index 6a25304c7ef..5c01a5371aa 100644 --- a/innobase/trx/trx0roll.c +++ b/innobase/trx/trx0roll.c @@ -228,9 +228,9 @@ trx_rollback_to_savepoint_for_mysql( if (trx->conc_state == TRX_NOT_STARTED) { ut_print_timestamp(stderr); - fprintf(stderr, -" InnoDB: Error: transaction has a savepoint %s though it is not started\n", - savep->name); + fputs(" InnoDB: Error: transaction has a savepoint ", stderr); + ut_print_name(stderr, savep->name); + fputs(" though it is not started\n", stderr); return(DB_ERROR); } @@ -301,8 +301,7 @@ trx_savepoint_for_mysql( savep = mem_alloc(sizeof(trx_named_savept_t)); - savep->name = mem_alloc(1 + ut_strlen(savepoint_name)); - ut_memcpy(savep->name, savepoint_name, 1 + ut_strlen(savepoint_name)); + savep->name = mem_strdup(savepoint_name); savep->savept = trx_savept_take(trx); @@ -467,10 +466,11 @@ loop: table = dict_table_get_on_id_low(trx->table_id, trx); if (table) { - fprintf(stderr, -"InnoDB: Table found: dropping table %s in recovery\n", table->name); + fputs("InnoDB: Table found: dropping table ", stderr); + ut_print_name(stderr, table->name); + fputs(" in recovery\n", stderr); - err = row_drop_table_for_mysql(table->name, trx); + err = row_drop_table_for_mysql(table->name, trx, TRUE); ut_a(err == (int) DB_SUCCESS); } @@ -730,7 +730,7 @@ trx_roll_pop_top_rec( undo->top_page_no, mtr); offset = undo->top_offset; -/* printf("Thread %lu undoing trx %lu undo record %lu\n", +/* fprintf(stderr, "Thread %lu undoing trx %lu undo record %lu\n", os_thread_get_curr_id(), ut_dulint_get_low(trx->id), ut_dulint_get_low(undo->top_undo_no)); */ @@ -1140,10 +1140,12 @@ trx_finish_rollback_off_kernel( return; } +#ifdef UNIV_DEBUG if (lock_print_waits) { - printf("Trx %lu rollback finished\n", + fprintf(stderr, "Trx %lu rollback finished\n", (ulong) ut_dulint_get_low(trx->id)); } +#endif /* UNIV_DEBUG */ trx_commit_off_kernel(trx); diff --git a/innobase/trx/trx0sys.c b/innobase/trx/trx0sys.c index 57cfcef7d6f..ef068d8d523 100644 --- a/innobase/trx/trx0sys.c +++ b/innobase/trx/trx0sys.c @@ -596,8 +596,7 @@ trx_sys_update_mysql_binlog_offset( MLOG_4BYTES, mtr); } - if (0 != ut_memcmp(sys_header + field + TRX_SYS_MYSQL_LOG_NAME, - file_name, 1 + ut_strlen(file_name))) { + if (0 != strcmp(sys_header + field + TRX_SYS_MYSQL_LOG_NAME, file_name)) { mlog_write_string(sys_header + field + TRX_SYS_MYSQL_LOG_NAME, @@ -620,8 +619,9 @@ trx_sys_update_mysql_binlog_offset( MLOG_4BYTES, mtr); } +#ifdef UNIV_HOTBACKUP /********************************************************************* -Prints to stdout the MySQL binlog info in the system header if the +Prints to stderr the MySQL binlog info in the system header if the magic number shows it valid. */ void @@ -638,7 +638,7 @@ trx_sys_print_mysql_binlog_offset_from_page( + TRX_SYS_MYSQL_LOG_MAGIC_N_FLD) == TRX_SYS_MYSQL_LOG_MAGIC_N) { - printf( + fprintf(stderr, "ibbackup: Last MySQL binlog file position %lu %lu, file name %s\n", (ulong) mach_read_from_4(sys_header + TRX_SYS_MYSQL_LOG_INFO + TRX_SYS_MYSQL_LOG_OFFSET_HIGH), @@ -647,6 +647,7 @@ trx_sys_print_mysql_binlog_offset_from_page( sys_header + TRX_SYS_MYSQL_LOG_INFO + TRX_SYS_MYSQL_LOG_NAME); } } +#endif /* UNIV_HOTBACKUP */ /********************************************************************* Prints to stderr the MySQL binlog offset info in the trx system header if diff --git a/innobase/trx/trx0trx.c b/innobase/trx/trx0trx.c index 54358ad3d4c..a69b9a96824 100644 --- a/innobase/trx/trx0trx.c +++ b/innobase/trx/trx0trx.c @@ -26,10 +26,10 @@ Created 3/26/1996 Heikki Tuuri #include "os0proc.h" /* Copy of the prototype for innobase_mysql_print_thd: this -copy MUST be equal to the one in mysql/sql/ha_innobase.cc ! */ +copy MUST be equal to the one in mysql/sql/ha_innodb.cc ! */ void innobase_mysql_print_thd( - char* buf, + FILE* f, void* thd); /* Dummy session used currently in MySQL interface */ @@ -239,19 +239,17 @@ trx_free( /*=====*/ trx_t* trx) /* in, own: trx object */ { - char err_buf[1000]; - #ifdef UNIV_SYNC_DEBUG ut_ad(mutex_own(&kernel_mutex)); #endif /* UNIV_SYNC_DEBUG */ if (trx->declared_to_be_inside_innodb) { ut_print_timestamp(stderr); - trx_print(err_buf, trx); - - fprintf(stderr, + fputs( " InnoDB: Error: Freeing a trx which is declared to be processing\n" -"InnoDB: inside InnoDB.\n%s\n", err_buf); +"InnoDB: inside InnoDB.\n", stderr); + trx_print(stderr, trx); + putc('\n', stderr); } ut_a(trx->magic_n == TRX_MAGIC_N); @@ -758,7 +756,8 @@ trx_commit_off_kernel( trx->read_view = NULL; } -/* printf("Trx %lu commit finished\n", ut_dulint_get_low(trx->id)); */ +/* fprintf(stderr, "Trx %lu commit finished\n", + ut_dulint_get_low(trx->id)); */ if (must_flush_log) { @@ -1568,93 +1567,99 @@ own the kernel mutex. */ void trx_print( /*======*/ - char* buf, /* in/out: buffer where to print, must be at least - 800 bytes */ + FILE* f, /* in: output stream */ trx_t* trx) /* in: transaction */ { - char* start_of_line; + ibool newline; - buf += sprintf(buf, "TRANSACTION %lu %lu", + fprintf(f, "TRANSACTION %lu %lu", (ulong) ut_dulint_get_high(trx->id), (ulong) ut_dulint_get_low(trx->id)); switch (trx->conc_state) { - case TRX_NOT_STARTED: buf += sprintf(buf, - ", not started"); break; - case TRX_ACTIVE: buf += sprintf(buf, - ", ACTIVE %lu sec", - (ulong) difftime(time(NULL), trx->start_time)); break; - case TRX_COMMITTED_IN_MEMORY: buf += sprintf(buf, - ", COMMITTED IN MEMORY"); + case TRX_NOT_STARTED: + fputs(", not started", f); + break; + case TRX_ACTIVE: + fprintf(f, ", ACTIVE %lu sec", + (ulong)difftime(time(NULL), trx->start_time)); break; - default: buf += sprintf(buf, " state %lu", (ulong) trx->conc_state); + case TRX_COMMITTED_IN_MEMORY: + fputs(", COMMITTED IN MEMORY", f); + break; + default: + fprintf(f, " state %lu", (ulong) trx->conc_state); } #ifdef UNIV_LINUX - buf += sprintf(buf, ", process no %lu", trx->mysql_process_no); + fprintf(f, ", process no %lu", trx->mysql_process_no); #endif - buf += sprintf(buf, ", OS thread id %lu", + fprintf(f, ", OS thread id %lu", (ulong) os_thread_pf(trx->mysql_thread_id)); - if (ut_strlen(trx->op_info) > 0) { - buf += sprintf(buf, " %s", trx->op_info); + if (*trx->op_info) { + putc(' ', f); + fputs(trx->op_info, f); } if (trx->type != TRX_USER) { - buf += sprintf(buf, " purge trx"); + fputs(" purge trx", f); } if (trx->declared_to_be_inside_innodb) { - buf += sprintf(buf, ", thread declared inside InnoDB %lu", + fprintf(f, ", thread declared inside InnoDB %lu", (ulong) trx->n_tickets_to_enter_innodb); } - buf += sprintf(buf, "\n"); + putc('\n', f); if (trx->n_mysql_tables_in_use > 0 || trx->mysql_n_tables_locked > 0) { - buf += sprintf(buf, "mysql tables in use %lu, locked %lu\n", - (ulong) trx->n_mysql_tables_in_use, - (ulong) trx->mysql_n_tables_locked); + fprintf(f, "mysql tables in use %lu, locked %lu\n", + (ulong) trx->n_mysql_tables_in_use, + (ulong) trx->mysql_n_tables_locked); } - start_of_line = buf; + newline = TRUE; switch (trx->que_state) { - case TRX_QUE_RUNNING: break; - case TRX_QUE_LOCK_WAIT: buf += sprintf(buf, - "LOCK WAIT "); break; - case TRX_QUE_ROLLING_BACK: buf += sprintf(buf, - "ROLLING BACK "); break; - case TRX_QUE_COMMITTING: buf += sprintf(buf, - "COMMITTING "); break; - default: buf += sprintf(buf, "que state %lu", (ulong) trx->que_state); + case TRX_QUE_RUNNING: + newline = FALSE; break; + case TRX_QUE_LOCK_WAIT: + fputs("LOCK WAIT ", f); break; + case TRX_QUE_ROLLING_BACK: + fputs("ROLLING BACK ", f); break; + case TRX_QUE_COMMITTING: + fputs("COMMITTING ", f); break; + default: + fprintf(f, "que state %lu ", (ulong) trx->que_state); } if (0 < UT_LIST_GET_LEN(trx->trx_locks) || mem_heap_get_size(trx->lock_heap) > 400) { + newline = TRUE; - buf += sprintf(buf, -"%lu lock struct(s), heap size %lu", + fprintf(f, "%lu lock struct(s), heap size %lu", (ulong) UT_LIST_GET_LEN(trx->trx_locks), (ulong) mem_heap_get_size(trx->lock_heap)); } if (trx->has_search_latch) { - buf += sprintf(buf, ", holds adaptive hash latch"); + newline = TRUE; + fputs(", holds adaptive hash latch", f); } if (ut_dulint_cmp(trx->undo_no, ut_dulint_zero) != 0) { - buf += sprintf(buf, ", undo log entries %lu", + newline = TRUE; + fprintf(f, ", undo log entries %lu", (ulong) ut_dulint_get_low(trx->undo_no)); } - if (buf != start_of_line) { - - buf += sprintf(buf, "\n"); + if (newline) { + putc('\n', f); } if (trx->mysql_thd != NULL) { - innobase_mysql_print_thd(buf, trx->mysql_thd); + innobase_mysql_print_thd(f, trx->mysql_thd); } } diff --git a/innobase/trx/trx0undo.c b/innobase/trx/trx0undo.c index 0a47134c163..79566fe01c3 100644 --- a/innobase/trx/trx0undo.c +++ b/innobase/trx/trx0undo.c @@ -394,13 +394,10 @@ trx_undo_seg_create( #ifdef UNIV_SYNC_DEBUG ut_ad(mutex_own(&(rseg->mutex))); #endif /* UNIV_SYNC_DEBUG */ -/* - if (type == TRX_UNDO_INSERT) { - printf("Creating insert undo log segment\n"); - } else { - printf("Creating update undo log segment\n"); - } -*/ + +/* fputs(type == TRX_UNDO_INSERT + ? "Creating insert undo log segment\n" + : "Creating update undo log segment\n", stderr); */ slot_no = trx_rsegf_undo_find_free(rseg_hdr, mtr); if (slot_no == ULINT_UNDEFINED) { |