summaryrefslogtreecommitdiff
path: root/innobase/data
diff options
context:
space:
mode:
authorunknown <marko@hundin.mysql.fi>2004-04-06 16:14:43 +0300
committerunknown <marko@hundin.mysql.fi>2004-04-06 16:14:43 +0300
commit80fe399fee3a7752aecdfc888edfcf56a2be7b0a (patch)
treef7bc427aa7ce4a54802d6e8931ca1dfe64c7bfa8 /innobase/data
parentd809c4413e9f991bde407690aafdaaa3eaae9232 (diff)
downloadmariadb-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.c128
-rw-r--r--innobase/data/data0type.c30
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);
}