Commit 04f7dc92 authored by heikki@donna.mysql.fi's avatar heikki@donna.mysql.fi

rem0rec.ic:

  Remove a theoretical overrun in adaptive hash index building
parent 3c3d967b
...@@ -947,7 +947,8 @@ rec_get_converted_size( ...@@ -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 UNIV_INLINE
ulint ulint
rec_fold( rec_fold(
...@@ -963,6 +964,7 @@ rec_fold( ...@@ -963,6 +964,7 @@ rec_fold(
byte* data; byte* data;
ulint len; ulint len;
ulint fold; ulint fold;
ulint n_fields_rec;
ut_ad(rec_validate(rec)); ut_ad(rec_validate(rec));
ut_ad(n_fields <= rec_get_n_fields(rec)); ut_ad(n_fields <= rec_get_n_fields(rec));
...@@ -971,6 +973,16 @@ rec_fold( ...@@ -971,6 +973,16 @@ rec_fold(
/* Only the page supremum and infimum records have 1 field: */ /* Only the page supremum and infimum records have 1 field: */
ut_ad(rec_get_n_fields(rec) > 1); 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); fold = ut_fold_dulint(tree_id);
for (i = 0; i < n_fields; i++) { for (i = 0; i < n_fields; i++) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment