Commit 00ffb08d authored by Marko Mäkelä's avatar Marko Mäkelä

Add Valgrind diagnostics to track down Bug #38999.

parent cacc9bbb
...@@ -2452,6 +2452,7 @@ row_sel_field_store_in_mysql_format( ...@@ -2452,6 +2452,7 @@ row_sel_field_store_in_mysql_format(
byte* pad_ptr; byte* pad_ptr;
ut_ad(len != UNIV_SQL_NULL); ut_ad(len != UNIV_SQL_NULL);
UNIV_MEM_ASSERT_RW(data, len);
if (templ->type == DATA_INT) { if (templ->type == DATA_INT) {
/* Convert integer data from Innobase to a little-endian /* Convert integer data from Innobase to a little-endian
...@@ -2687,6 +2688,9 @@ row_sel_store_mysql_rec( ...@@ -2687,6 +2688,9 @@ row_sel_store_mysql_rec(
/* MySQL assumes that the field for an SQL /* MySQL assumes that the field for an SQL
NULL value is set to the default value. */ NULL value is set to the default value. */
UNIV_MEM_ASSERT_RW(prebuilt->default_rec
+ templ->mysql_col_offset,
templ->mysql_col_len);
mysql_rec[templ->mysql_null_byte_offset] mysql_rec[templ->mysql_null_byte_offset]
|= (byte) templ->mysql_null_bit_mask; |= (byte) templ->mysql_null_bit_mask;
memcpy(mysql_rec + templ->mysql_col_offset, memcpy(mysql_rec + templ->mysql_col_offset,
...@@ -3007,6 +3011,11 @@ row_sel_pop_cached_row_for_mysql( ...@@ -3007,6 +3011,11 @@ row_sel_pop_cached_row_for_mysql(
for (i = 0; i < prebuilt->n_template; i++) { for (i = 0; i < prebuilt->n_template; i++) {
templ = prebuilt->mysql_template + i; templ = prebuilt->mysql_template + i;
#if 0 /* Some of the cached_rec may legitimately be uninitialized. */
UNIV_MEM_ASSERT_RW(cached_rec
+ templ->mysql_col_offset,
templ->mysql_col_len);
#endif
ut_memcpy(buf + templ->mysql_col_offset, ut_memcpy(buf + templ->mysql_col_offset,
cached_rec + templ->mysql_col_offset, cached_rec + templ->mysql_col_offset,
templ->mysql_col_len); templ->mysql_col_len);
...@@ -3021,6 +3030,11 @@ row_sel_pop_cached_row_for_mysql( ...@@ -3021,6 +3030,11 @@ row_sel_pop_cached_row_for_mysql(
} }
} }
else { else {
#if 0 /* Some of the cached_rec may legitimately be uninitialized. */
UNIV_MEM_ASSERT_RW(prebuilt->fetch_cache
[prebuilt->fetch_cache_first],
prebuilt->mysql_prefix_len);
#endif
ut_memcpy(buf, ut_memcpy(buf,
prebuilt->fetch_cache[prebuilt->fetch_cache_first], prebuilt->fetch_cache[prebuilt->fetch_cache_first],
prebuilt->mysql_prefix_len); prebuilt->mysql_prefix_len);
...@@ -3070,6 +3084,8 @@ row_sel_push_cache_row_for_mysql( ...@@ -3070,6 +3084,8 @@ row_sel_push_cache_row_for_mysql(
} }
ut_ad(prebuilt->fetch_cache_first == 0); ut_ad(prebuilt->fetch_cache_first == 0);
UNIV_MEM_INVALID(prebuilt->fetch_cache[prebuilt->n_fetch_cached],
prebuilt->mysql_row_len);
if (UNIV_UNLIKELY(!row_sel_store_mysql_rec( if (UNIV_UNLIKELY(!row_sel_store_mysql_rec(
prebuilt->fetch_cache[ prebuilt->fetch_cache[
......
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