summaryrefslogtreecommitdiff
path: root/innobase
diff options
context:
space:
mode:
authorheikki@hundin.mysql.fi <>2003-03-15 20:05:03 +0200
committerheikki@hundin.mysql.fi <>2003-03-15 20:05:03 +0200
commitc4370278a0b990140c12e879494cdcee76b2ae93 (patch)
tree9335b4017952ba3ef3c9f8ec9ff04b247b0ff3c5 /innobase
parentefbb9d45c1b82288efb404b2f865d00db504a28f (diff)
downloadmariadb-git-c4370278a0b990140c12e879494cdcee76b2ae93.tar.gz
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.c21
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,