diff options
author | unknown <marko@hundin.mysql.fi> | 2004-04-06 16:14:43 +0300 |
---|---|---|
committer | unknown <marko@hundin.mysql.fi> | 2004-04-06 16:14:43 +0300 |
commit | 80fe399fee3a7752aecdfc888edfcf56a2be7b0a (patch) | |
tree | f7bc427aa7ce4a54802d6e8931ca1dfe64c7bfa8 /innobase/data | |
parent | d809c4413e9f991bde407690aafdaaa3eaae9232 (diff) | |
download | mariadb-git-80fe399fee3a7752aecdfc888edfcf56a2be7b0a.tar.gz |
InnoDB: send diagnostic output to stderr or files
instead of stdout or fixed-size memory buffers
innobase/btr/btr0btr.c:
Output to stderr; quote table and index names
innobase/btr/btr0cur.c:
Output to stderr; quote table and index names
innobase/btr/btr0sea.c:
Output to stderr
innobase/buf/buf0buf.c:
Output to stderr; quote table and index names
innobase/buf/buf0flu.c:
Output to stderr
innobase/buf/buf0lru.c:
Output to stderr
innobase/buf/buf0rea.c:
Output to stderr
innobase/data/data0data.c:
Remove dtuple_validate() unless #ifdef UNIV_DEBUG
Remove unnecessary sprintf() calls
Output to stderr
innobase/data/data0type.c:
Output to stderr
innobase/dict/dict0boot.c:
Remove dummy call to printf()
innobase/dict/dict0crea.c:
Output diagnostic information to stream, not to memory
innobase/dict/dict0dict.c:
Output diagnostics to a file, not to a memory buffer
innobase/dict/dict0load.c:
Output to stderr; quote table and index names
innobase/eval/eval0eval.c:
Output to stderr
innobase/fil/fil0fil.c:
Output to stderr
innobase/fsp/fsp0fsp.c:
Output to stderr
Avoid sprintf()
innobase/fut/fut0lst.c:
Output to stderr
innobase/ha/ha0ha.c:
Output to stream, not to memory buffer
innobase/ibuf/ibuf0ibuf.c:
Output to stderr
Avoid sprintf()
innobase/include/buf0buf.h:
Output to stream, not to memory buffer
innobase/include/buf0buf.ic:
Use %p for displaying pointers
innobase/include/data0data.h:
Remove dtuple_sprintf()
innobase/include/dict0dict.h:
Output to stream, not to memory buffer
innobase/include/ha0ha.h:
Output to stream, not to memory buffer
innobase/include/ibuf0ibuf.h:
Output to stream, not to memory buffer
innobase/include/lock0lock.h:
Output to stream, not to memory buffer
innobase/include/log0log.h:
Output to stream, not to memory buffer
innobase/include/mtr0log.ic:
Output to stderr
Display pointers with %p
innobase/include/os0file.h:
Output to stream, not to memory buffer
innobase/include/rem0rec.h:
Remove rec_sprintf()
innobase/include/rem0rec.ic:
Output to stderr
innobase/include/row0sel.ic:
Output to stderr
innobase/include/row0upd.ic:
Quote table and index names
innobase/include/srv0srv.h:
Remove srv_sprintf_innodb_monitor()
innobase/include/sync0arr.h:
Output to stream, not to memory buffer
innobase/include/sync0sync.h:
Output to stream, not to memory buffer
innobase/include/trx0sys.h:
Output to stderr
innobase/include/trx0trx.h:
Output to stream, not to memory buffer
innobase/include/ut0ut.h:
Remove ut_sprintf_buf()
Add ut_print_name(), ut_print_namel() and ut_copy_file()
innobase/lock/lock0lock.c:
Output to stream, not to memory buffer
innobase/log/log0log.c:
Output to stderr
innobase/log/log0recv.c:
Output to stderr
innobase/mem/mem0dbg.c:
Output to stderr
innobase/mtr/mtr0log.c:
Display pointers with %p
innobase/mtr/mtr0mtr.c:
Output to stderr
innobase/os/os0file.c:
Output to stream, not to memory buffer
innobase/os/os0proc.c:
Output to stderr
innobase/os/os0thread.c:
Output to stderr
innobase/page/page0cur.c:
Output to stderr
innobase/page/page0page.c:
Avoid sprintf()
Output to stderr instead of stdout
innobase/pars/pars0opt.c:
Output to stderr instead of stdout
innobase/rem/rem0rec.c:
Remove rec_sprintf()
Output to stderr instead of stdout
innobase/row/row0ins.c:
Output diagnostics to stream instead of memory buffer
innobase/row/row0mysql.c:
Output to stderr instead of stdout
Quote table and index names
innobase/row/row0purge.c:
Output to stderr instead of stdout
innobase/row/row0row.c:
Quote table and index names
innobase/row/row0sel.c:
Output to stderr instead of stdout
Quote table and index names
innobase/row/row0umod.c:
Avoid sprintf()
Quote table and index names
innobase/row/row0undo.c:
Output to stderr instead of stdout
innobase/row/row0upd.c:
Avoid sprintf()
innobase/srv/srv0srv.c:
Output to stderr instead of stdout
innobase/srv/srv0start.c:
Handle srv_monitor_file
Make some global variables static
innobase/sync/sync0arr.c:
Output to stderr instead of stdout
Output to stream instead of memory buffer
innobase/sync/sync0rw.c:
Output to stderr instead of stdout
innobase/sync/sync0sync.c:
Output to stderr instead of stdout
Output to stream instead of memory buffer
innobase/trx/trx0purge.c:
Output to stderr instead of stdout
innobase/trx/trx0rec.c:
Quote index and table names
Avoid sprintf()
innobase/trx/trx0roll.c:
Quote identifier names
Output to stderr instead of stdout
innobase/trx/trx0sys.c:
Output to stderr instead of stdout
innobase/trx/trx0trx.c:
Output to stream instead of memory buffer
innobase/trx/trx0undo.c:
Output to stderr instead of stdout
innobase/ut/ut0ut.c:
Declare mysql_get_identifier_quote_char()
Remove ut_sprintf_buf()
Add ut_print_name() and ut_print_namel()
Add ut_copy_file()
sql/ha_innodb.cc:
innobase_mysql_print_thd(): output to stream, not to memory buffer
Add mysql_get_identifier_quote_char()
Remove unused function innobase_print_error()
Display pointers with %p
Buffer InnoDB output via files, not via statically allocated memory
Diffstat (limited to 'innobase/data')
-rw-r--r-- | innobase/data/data0data.c | 128 | ||||
-rw-r--r-- | innobase/data/data0type.c | 30 |
2 files changed, 48 insertions, 110 deletions
diff --git a/innobase/data/data0data.c b/innobase/data/data0data.c index 96c15643096..11eb295f033 100644 --- a/innobase/data/data0data.c +++ b/innobase/data/data0data.c @@ -12,7 +12,6 @@ Created 5/30/1994 Heikki Tuuri #include "data0data.ic" #endif -#include "ut0rnd.h" #include "rem0rec.h" #include "rem0cmp.h" #include "page0page.h" @@ -22,8 +21,10 @@ Created 5/30/1994 Heikki Tuuri byte data_error; /* data pointers of tuple fields are initialized to point here for error checking */ +#ifdef UNIV_DEBUG ulint data_dummy; /* this is used to fool the compiler in dtuple_validate */ +#endif /* UNIV_DEBUG */ /* Some non-inlined functions used in the MySQL interface: */ void @@ -210,16 +211,15 @@ dtuple_check_typed_no_assert( { dfield_t* field; ulint i; - char err_buf[1000]; if (dtuple_get_n_fields(tuple) > REC_MAX_N_FIELDS) { fprintf(stderr, "InnoDB: Error: index entry has %lu fields\n", dtuple_get_n_fields(tuple)); - - dtuple_sprintf(err_buf, 900, tuple); - fprintf(stderr, -"InnoDB: Tuple contents: %s\n", err_buf); + dump: + fputs("InnoDB: Tuple contents: ", stderr); + dtuple_print(stderr, tuple); + putc('\n', stderr); return(FALSE); } @@ -229,12 +229,7 @@ dtuple_check_typed_no_assert( field = dtuple_get_nth_field(tuple, i); if (!dfield_check_typed_no_assert(field)) { - - dtuple_sprintf(err_buf, 900, tuple); - fprintf(stderr, -"InnoDB: Tuple contents: %s\n", err_buf); - - return(FALSE); + goto dump; } } @@ -285,6 +280,7 @@ dtuple_check_typed( return(TRUE); } +#ifdef UNIV_DEBUG /************************************************************** Validates the consistency of a tuple which must be complete, i.e, all fields must have been set. */ @@ -332,6 +328,7 @@ dtuple_validate( return(TRUE); } +#endif /* UNIV_DEBUG */ /***************************************************************** Pretty prints a dfield value according to its data type. */ @@ -350,7 +347,7 @@ dfield_print( data = dfield_get_data(dfield); if (len == UNIV_SQL_NULL) { - printf("NULL"); + fputs("NULL", stderr); return; } @@ -360,18 +357,12 @@ dfield_print( if ((mtype == DATA_CHAR) || (mtype == DATA_VARCHAR)) { for (i = 0; i < len; i++) { - - if (isprint((char)(*data))) { - printf("%c", (char)*data); - } else { - printf(" "); - } - - data++; + int c = *data++; + putc(isprint(c) ? c : ' ', stderr); } } else if (mtype == DATA_INT) { ut_a(len == 4); /* only works for 32-bit integers */ - printf("%i", (int)mach_read_from_4(data)); + fprintf(stderr, "%d", (int)mach_read_from_4(data)); } else { ut_error; } @@ -396,7 +387,7 @@ dfield_print_also_hex( data = dfield_get_data(dfield); if (len == UNIV_SQL_NULL) { - printf("NULL"); + fputs("NULL", stderr); return; } @@ -408,15 +399,12 @@ dfield_print_also_hex( print_also_hex = FALSE; for (i = 0; i < len; i++) { - - if (isprint((char)(*data))) { - printf("%c", (char)*data); - } else { + int c = *data++; + if (!isprint(c)) { print_also_hex = TRUE; - printf(" "); + c = ' '; } - - data++; + putc(c, stderr); } if (!print_also_hex) { @@ -424,18 +412,18 @@ dfield_print_also_hex( return; } - printf(" Hex: "); + fputs(" Hex: ", stderr); data = dfield_get_data(dfield); for (i = 0; i < len; i++) { - printf("%02lx", (ulint)*data); + fprintf(stderr, "%02lx", (ulint)*data); data++; } } else if (mtype == DATA_INT) { - ut_a(len == 4); /* inly works for 32-bit integers */ - printf("%i", (int)mach_read_from_4(data)); + ut_a(len == 4); /* only works for 32-bit integers */ + fprintf(stderr, "%d", (int)mach_read_from_4(data)); } else { ut_error; } @@ -447,6 +435,7 @@ The following function prints the contents of a tuple. */ void dtuple_print( /*=========*/ + FILE* f, /* in: output stream */ dtuple_t* tuple) /* in: tuple */ { dfield_t* field; @@ -455,73 +444,24 @@ dtuple_print( n_fields = dtuple_get_n_fields(tuple); - printf("DATA TUPLE: %lu fields;\n", n_fields); - - for (i = 0; i < n_fields; i++) { - printf(" %lu:", i); - - field = dtuple_get_nth_field(tuple, i); - - if (field->len != UNIV_SQL_NULL) { - ut_print_buf(field->data, field->len); - } else { - printf(" SQL NULL"); - } - - printf(";"); - } - - printf("\n"); - - dtuple_validate(tuple); -} - -/************************************************************** -The following function prints the contents of a tuple to a buffer. */ - -ulint -dtuple_sprintf( -/*===========*/ - /* out: printed length in bytes */ - char* buf, /* in: print buffer */ - ulint buf_len,/* in: buf length in bytes */ - dtuple_t* tuple) /* in: tuple */ -{ - dfield_t* field; - ulint n_fields; - ulint len; - ulint i; - - len = 0; - - n_fields = dtuple_get_n_fields(tuple); + fprintf(f, "DATA TUPLE: %lu fields;\n", n_fields); for (i = 0; i < n_fields; i++) { - if (len + 30 > buf_len) { - - return(len); - } - - len += sprintf(buf + len, " %lu:", i); + fprintf(f, " %lu:", i); field = dtuple_get_nth_field(tuple, i); if (field->len != UNIV_SQL_NULL) { - if (5 * field->len + len + 30 > buf_len) { - - return(len); - } - - len += ut_sprintf_buf(buf + len, field->data, - field->len); + ut_print_buf(f, field->data, field->len); } else { - len += sprintf(buf + len, " SQL NULL"); + fputs(" SQL NULL", f); } - len += sprintf(buf + len, ";"); + putc(';', f); } - return(len); + putc('\n', f); + ut_ad(dtuple_validate(tuple)); } /****************************************************************** @@ -555,7 +495,6 @@ dtuple_convert_big_rec( ibool is_externally_stored; ulint i; ulint j; - char err_buf[1000]; ut_a(dtuple_check_typed_no_assert(entry)); @@ -564,10 +503,9 @@ dtuple_convert_big_rec( if (size > 1000000000) { fprintf(stderr, "InnoDB: Warning: tuple size very big: %lu\n", size); - - dtuple_sprintf(err_buf, 900, entry); - fprintf(stderr, -"InnoDB: Tuple contents: %s\n", err_buf); + fputs("InnoDB: Tuple contents: ", stderr); + dtuple_print(stderr, entry); + putc('\n', stderr); } heap = mem_heap_create(size + dtuple_get_n_fields(entry) diff --git a/innobase/data/data0type.c b/innobase/data/data0type.c index df430f06bcb..077012553ba 100644 --- a/innobase/data/data0type.c +++ b/innobase/data/data0type.c @@ -51,19 +51,19 @@ dtype_print( mtype = type->mtype; prtype = type->prtype; if (mtype == DATA_VARCHAR) { - printf("DATA_VARCHAR"); + fputs("DATA_VARCHAR", stderr); } else if (mtype == DATA_CHAR) { - printf("DATA_CHAR"); + fputs("DATA_CHAR", stderr); } else if (mtype == DATA_BINARY) { - printf("DATA_BINARY"); + fputs("DATA_BINARY", stderr); } else if (mtype == DATA_INT) { - printf("DATA_INT"); + fputs("DATA_INT", stderr); } else if (mtype == DATA_MYSQL) { - printf("DATA_MYSQL"); + fputs("DATA_MYSQL", stderr); } else if (mtype == DATA_SYS) { - printf("DATA_SYS"); + fputs("DATA_SYS", stderr); } else { - printf("type %lu", mtype); + fprintf(stderr, "type %lu", mtype); } len = type->len; @@ -71,24 +71,24 @@ dtype_print( if ((type->mtype == DATA_SYS) || (type->mtype == DATA_VARCHAR) || (type->mtype == DATA_CHAR)) { - printf(" "); + putc(' ', stderr); if (prtype == DATA_ROW_ID) { - printf("DATA_ROW_ID"); + fputs("DATA_ROW_ID", stderr); len = DATA_ROW_ID_LEN; } else if (prtype == DATA_ROLL_PTR) { - printf("DATA_ROLL_PTR"); + fputs("DATA_ROLL_PTR", stderr); len = DATA_ROLL_PTR_LEN; } else if (prtype == DATA_TRX_ID) { - printf("DATA_TRX_ID"); + fputs("DATA_TRX_ID", stderr); len = DATA_TRX_ID_LEN; } else if (prtype == DATA_MIX_ID) { - printf("DATA_MIX_ID"); + fputs("DATA_MIX_ID", stderr); } else if (prtype == DATA_ENGLISH) { - printf("DATA_ENGLISH"); + fputs("DATA_ENGLISH", stderr); } else { - printf("prtype %lu", mtype); + fprintf(stderr, "prtype %lu", mtype); } } - printf(" len %lu prec %lu", len, type->prec); + fprintf(stderr, " len %lu prec %lu", len, type->prec); } |