Commit 77957ae8 authored by unknown's avatar unknown

row0mysql.c:

  Play safe and set a MySQL 1 - 12 byte BLOB reference to zero except for the length and pointer areas in it


innobase/row/row0mysql.c:
  Play safe and set a MySQL 1 - 12 byte BLOB reference to zero except for the length and pointer areas in it
parent 479aed76
...@@ -66,13 +66,23 @@ row_mysql_store_blob_ref( ...@@ -66,13 +66,23 @@ row_mysql_store_blob_ref(
byte* dest, /* in: where to store */ byte* dest, /* in: where to store */
ulint col_len, /* in: dest buffer size: determines into ulint col_len, /* in: dest buffer size: determines into
how many bytes the BLOB length is stored, how many bytes the BLOB length is stored,
this may vary from 1 to 4 bytes */ the space for the length may vary from 1
byte* data, /* in: BLOB data */ to 4 bytes */
ulint len) /* in: BLOB length */ byte* data, /* in: BLOB data; if the value to store
is SQL NULL this should be NULL pointer */
ulint len) /* in: BLOB length; if the value to store
is SQL NULL this should be 0; remember
also to set the NULL bit in the MySQL record
header! */
{ {
ulint sum = 0; ulint sum = 0;
ulint i; ulint i;
/* MySQL might assume the field is set to zero except the length and
the pointer fields */
memset(dest, '\0', col_len);
/* In dest there are 1 - 4 bytes reserved for the BLOB length, /* In dest there are 1 - 4 bytes reserved for the BLOB length,
and after that 8 bytes reserved for the pointer to the data. and after that 8 bytes reserved for the pointer to the data.
In 32-bit architectures we only use the first 4 bytes of the pointer In 32-bit architectures we only use the first 4 bytes of the pointer
......
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