diff options
author | unknown <monty@hundin.mysql.fi> | 2001-12-15 05:12:21 +0200 |
---|---|---|
committer | unknown <monty@hundin.mysql.fi> | 2001-12-15 05:12:21 +0200 |
commit | 63e4dec2446382bf0331d2c483daee665064b925 (patch) | |
tree | 5b07ad850f8dba78d186135337dd5a151d18a2b8 /innobase | |
parent | 6a5f89c9b190b0f26fc0cb12595126cba2659f32 (diff) | |
parent | f8b4629cf728072b230159718994f585145b4ce2 (diff) | |
download | mariadb-git-63e4dec2446382bf0331d2c483daee665064b925.tar.gz |
Merge with 3.23.47
extra/resolve_stack_dump.c:
Auto merged
include/my_bitmap.h:
Auto merged
innobase/buf/buf0buf.c:
Auto merged
innobase/dict/dict0crea.c:
Auto merged
mysql-test/t/rpl_get_lock.test:
Auto merged
Diffstat (limited to 'innobase')
-rw-r--r-- | innobase/buf/buf0buf.c | 3 | ||||
-rw-r--r-- | innobase/dict/dict0crea.c | 5 | ||||
-rw-r--r-- | innobase/include/rem0rec.ic | 14 |
3 files changed, 20 insertions, 2 deletions
diff --git a/innobase/buf/buf0buf.c b/innobase/buf/buf0buf.c index b9dfa3df82a..adb61bfbb56 100644 --- a/innobase/buf/buf0buf.c +++ b/innobase/buf/buf0buf.c @@ -1158,6 +1158,9 @@ buf_page_init( block->n_hash_helps = 0; block->is_hashed = FALSE; + block->n_fields = 1; + block->n_bytes = 0; + block->side = BTR_SEARCH_LEFT_SIDE; block->file_page_was_freed = FALSE; } diff --git a/innobase/dict/dict0crea.c b/innobase/dict/dict0crea.c index 906683ca643..7b9255b4e27 100644 --- a/innobase/dict/dict0crea.c +++ b/innobase/dict/dict0crea.c @@ -1234,9 +1234,12 @@ loop: que_graph_free(graph); if (error != DB_SUCCESS) { + fprintf(stderr, + "InnoDB: foreign constraint creation failed;\n" + "InnoDB: internal error number %lu\n", error); + ut_a(error == DB_OUT_OF_FILE_SPACE); - fprintf(stderr, "InnoDB: foreign constraint creation failed\n"); fprintf(stderr, "InnoDB: tablespace is full\n"); trx_general_rollback_for_mysql(trx, FALSE, NULL); diff --git a/innobase/include/rem0rec.ic b/innobase/include/rem0rec.ic index 1e9ecb47e2e..6b96e3056fa 100644 --- a/innobase/include/rem0rec.ic +++ b/innobase/include/rem0rec.ic @@ -947,7 +947,8 @@ rec_get_converted_size( } /**************************************************************** -Folds a prefix of a physical record to a ulint. */ +Folds a prefix of a physical record to a ulint. Folds only existing fields, +that is, checks that we do not run out of the record. */ UNIV_INLINE ulint rec_fold( @@ -963,6 +964,7 @@ rec_fold( byte* data; ulint len; ulint fold; + ulint n_fields_rec; ut_ad(rec_validate(rec)); ut_ad(n_fields <= rec_get_n_fields(rec)); @@ -971,6 +973,16 @@ rec_fold( /* Only the page supremum and infimum records have 1 field: */ ut_ad(rec_get_n_fields(rec) > 1); + n_fields_rec = rec_get_n_fields(rec); + + if (n_fields > n_fields_rec) { + n_fields = n_fields_rec; + } + + if (n_fields == n_fields_rec) { + n_bytes = 0; + } + fold = ut_fold_dulint(tree_id); for (i = 0; i < n_fields; i++) { |