summaryrefslogtreecommitdiff
path: root/innobase
diff options
context:
space:
mode:
authorunknown <monty@hundin.mysql.fi>2001-12-15 05:12:21 +0200
committerunknown <monty@hundin.mysql.fi>2001-12-15 05:12:21 +0200
commit63e4dec2446382bf0331d2c483daee665064b925 (patch)
tree5b07ad850f8dba78d186135337dd5a151d18a2b8 /innobase
parent6a5f89c9b190b0f26fc0cb12595126cba2659f32 (diff)
parentf8b4629cf728072b230159718994f585145b4ce2 (diff)
downloadmariadb-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.c3
-rw-r--r--innobase/dict/dict0crea.c5
-rw-r--r--innobase/include/rem0rec.ic14
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++) {