diff options
author | unknown <heikki@hundin.mysql.fi> | 2003-03-15 20:05:03 +0200 |
---|---|---|
committer | unknown <heikki@hundin.mysql.fi> | 2003-03-15 20:05:03 +0200 |
commit | 3ce965da7a598ba56339d497cc07cd27c5c51e24 (patch) | |
tree | 9335b4017952ba3ef3c9f8ec9ff04b247b0ff3c5 /innobase | |
parent | 41bad531ead68ab52ecef24084c7194eb2af8359 (diff) | |
download | mariadb-git-3ce965da7a598ba56339d497cc07cd27c5c51e24.tar.gz |
row0sel.c:
Fix bug number 154: GROUP BY and DISTINCT could treat NULL values inequal
innobase/row/row0sel.c:
Fix bug number 154: GROUP BY and DISTINCT could treat NULL values inequal
Diffstat (limited to 'innobase')
-rw-r--r-- | innobase/row/row0sel.c | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/innobase/row/row0sel.c b/innobase/row/row0sel.c index ef12bd9362a..4bc81ad8a8e 100644 --- a/innobase/row/row0sel.c +++ b/innobase/row/row0sel.c @@ -2130,19 +2130,14 @@ row_sel_store_mysql_rec( extern_field_heap = NULL; } } else { - /* MySQL sometimes seems to copy the 'data' - pointed to by a BLOB field even if the field - has been marked to contain the SQL NULL value. - This caused seg faults reported by two users. - Set the BLOB length to 0 and the data pointer - to NULL to avoid a seg fault. */ - - if (templ->type == DATA_BLOB) { - row_sel_field_store_in_mysql_format( - mysql_rec + templ->mysql_col_offset, - templ->mysql_col_len, NULL, - 0, templ->type, templ->is_unsigned); - } + /* MySQL seems to assume the field for an SQL NULL + value is set to zero. Not taking this into account + caused seg faults with NULL BLOB fields, and + bug number 154 in the MySQL bug database: GROUP BY + and DISTINCT could treat NULL values inequal. */ + + memset(mysql_rec + templ->mysql_col_offset, '\0', + templ->mysql_col_len); if (!templ->mysql_null_bit_mask) { fprintf(stderr, |