diff options
Diffstat (limited to 'innobase/rem/rem0rec.c')
-rw-r--r-- | innobase/rem/rem0rec.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/innobase/rem/rem0rec.c b/innobase/rem/rem0rec.c index 88009f2f5c9..749e19575bc 100644 --- a/innobase/rem/rem0rec.c +++ b/innobase/rem/rem0rec.c @@ -451,24 +451,31 @@ rec_validate( /* out: TRUE if ok */ rec_t* rec) /* in: physical record */ { - ulint i; byte* data; ulint len; ulint n_fields; ulint len_sum = 0; ulint sum = 0; + ulint i; ut_a(rec); n_fields = rec_get_n_fields(rec); if ((n_fields == 0) || (n_fields > REC_MAX_N_FIELDS)) { - ut_a(0); + fprintf(stderr, "InnoDB: Error: record has %lu fields\n", + n_fields); + return(FALSE); } for (i = 0; i < n_fields; i++) { data = rec_get_nth_field(rec, i, &len); - ut_a((len < UNIV_PAGE_SIZE) || (len == UNIV_SQL_NULL)); + if (!((len < UNIV_PAGE_SIZE) || (len == UNIV_SQL_NULL))) { + fprintf(stderr, + "InnoDB: Error: record field %lu len %lu\n", i, + len); + return(FALSE); + } if (len != UNIV_SQL_NULL) { len_sum += len; @@ -481,7 +488,12 @@ rec_validate( } } - ut_a(len_sum == (ulint)(rec_get_end(rec) - rec)); + if (len_sum != (ulint)(rec_get_end(rec) - rec)) { + fprintf(stderr, + "InnoDB: Error: record len should be %lu, len %lu\n", + len_sum, (ulint)(rec_get_end(rec) - rec)); + return(FALSE); + } rec_dummy = sum; /* This is here only to fool the compiler */ |