Commit 536b8405 authored by serg@serg.mylan's avatar serg@serg.mylan

Merge bk-internal:/home/bk/mysql-4.1/

into serg.mylan:/usr/home/serg/Abk/mysql-4.1
parents 90bd948e 503e7c93
...@@ -2170,7 +2170,7 @@ row_sel_store_mysql_rec( ...@@ -2170,7 +2170,7 @@ row_sel_store_mysql_rec(
ulint len; ulint len;
byte* blob_buf; byte* blob_buf;
ulint i; ulint i;
ut_ad(prebuilt->mysql_template); ut_ad(prebuilt->mysql_template);
if (prebuilt->blob_heap != NULL) { if (prebuilt->blob_heap != NULL) {
...@@ -2178,9 +2178,9 @@ row_sel_store_mysql_rec( ...@@ -2178,9 +2178,9 @@ row_sel_store_mysql_rec(
prebuilt->blob_heap = NULL; prebuilt->blob_heap = NULL;
} }
/* Mark all columns as not SQL NULL */ /* Mark all columns as SQL NULL */
memset(mysql_rec, '\0', prebuilt->null_bitmap_len); memset(mysql_rec, 255, prebuilt->null_bitmap_len);
for (i = 0; i < prebuilt->n_template; i++) { for (i = 0; i < prebuilt->n_template; i++) {
...@@ -2235,16 +2235,21 @@ row_sel_store_mysql_rec( ...@@ -2235,16 +2235,21 @@ row_sel_store_mysql_rec(
data = blob_buf; data = blob_buf;
} }
row_sel_field_store_in_mysql_format( row_sel_field_store_in_mysql_format(
mysql_rec + templ->mysql_col_offset, mysql_rec + templ->mysql_col_offset,
templ->mysql_col_len, data, len, templ->mysql_col_len, data, len,
templ->type, templ->is_unsigned); templ->type, templ->is_unsigned);
if (extern_field_heap) { if (extern_field_heap) {
mem_heap_free(extern_field_heap); mem_heap_free(extern_field_heap);
extern_field_heap = NULL; extern_field_heap = NULL;
} }
if (templ->mysql_null_bit_mask) {
mysql_rec[templ->mysql_null_byte_offset] &=
~(byte) (templ->mysql_null_bit_mask);
}
} else { } else {
/* MySQL seems to assume the field for an SQL NULL /* MySQL seems to assume the field for an SQL NULL
value is set to zero. Not taking this into account value is set to zero. Not taking this into account
...@@ -2252,19 +2257,13 @@ row_sel_store_mysql_rec( ...@@ -2252,19 +2257,13 @@ row_sel_store_mysql_rec(
bug number 154 in the MySQL bug database: GROUP BY bug number 154 in the MySQL bug database: GROUP BY
and DISTINCT could treat NULL values inequal. */ and DISTINCT could treat NULL values inequal. */
memset(mysql_rec + templ->mysql_col_offset, '\0', memset(mysql_rec + templ->mysql_col_offset,
((templ->type == DATA_VARCHAR ||
templ->type == DATA_VARMYSQL ||
templ->type == DATA_BINARY) ? ' ' : '\0'),
templ->mysql_col_len); templ->mysql_col_len);
if (!templ->mysql_null_bit_mask) {
fprintf(stderr,
"InnoDB: Error: trying to return an SQL NULL field in a non-null\n"
"innoDB: column! Table name %s\n", prebuilt->table->name);
} else {
mysql_rec[templ->mysql_null_byte_offset] |=
(byte) (templ->mysql_null_bit_mask);
}
} }
} }
return(TRUE); return(TRUE);
} }
......
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