mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge BUG#12997905 from 5.1 to 5.5
This commit is contained in:
17
sql/field.h
17
sql/field.h
@ -2227,6 +2227,23 @@ public:
|
|||||||
uchar *from_null_ptr,*to_null_ptr;
|
uchar *from_null_ptr,*to_null_ptr;
|
||||||
my_bool *null_row;
|
my_bool *null_row;
|
||||||
uint from_bit,to_bit;
|
uint from_bit,to_bit;
|
||||||
|
/**
|
||||||
|
Number of bytes in the fields pointed to by 'from_ptr' and
|
||||||
|
'to_ptr'. Usually this is the number of bytes that are copied from
|
||||||
|
'from_ptr' to 'to_ptr'.
|
||||||
|
|
||||||
|
For variable-length fields (VARCHAR), the first byte(s) describe
|
||||||
|
the actual length of the text. For VARCHARs with length
|
||||||
|
< 256 there is 1 length byte
|
||||||
|
>= 256 there is 2 length bytes
|
||||||
|
Thus, if from_field is VARCHAR(10), from_length (and in most cases
|
||||||
|
to_length) is 11. For VARCHAR(1024), the length is 1026. @see
|
||||||
|
Field_varstring::length_bytes
|
||||||
|
|
||||||
|
Note that for VARCHARs, do_copy() will be do_varstring*() which
|
||||||
|
only copies the length-bytes (1 or 2) + the actual length of the
|
||||||
|
text instead of from/to_length bytes. @see get_copy_func()
|
||||||
|
*/
|
||||||
uint from_length,to_length;
|
uint from_length,to_length;
|
||||||
Field *from_field,*to_field;
|
Field *from_field,*to_field;
|
||||||
String tmp; // For items
|
String tmp; // For items
|
||||||
|
@ -709,7 +709,7 @@ Copy_field::get_copy_func(Field *to,Field *from)
|
|||||||
if (((Field_varstring*) to)->length_bytes !=
|
if (((Field_varstring*) to)->length_bytes !=
|
||||||
((Field_varstring*) from)->length_bytes)
|
((Field_varstring*) from)->length_bytes)
|
||||||
return do_field_string;
|
return do_field_string;
|
||||||
if (to_length != from_length)
|
else
|
||||||
return (((Field_varstring*) to)->length_bytes == 1 ?
|
return (((Field_varstring*) to)->length_bytes == 1 ?
|
||||||
(from->charset()->mbmaxlen == 1 ? do_varstring1 :
|
(from->charset()->mbmaxlen == 1 ? do_varstring1 :
|
||||||
do_varstring1_mb) :
|
do_varstring1_mb) :
|
||||||
|
@ -10894,6 +10894,9 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
|
|||||||
if (open_tmp_table(table))
|
if (open_tmp_table(table))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
|
// Make empty record so random data is not written to disk
|
||||||
|
empty_record(table);
|
||||||
|
|
||||||
thd->mem_root= mem_root_save;
|
thd->mem_root= mem_root_save;
|
||||||
|
|
||||||
DBUG_RETURN(table);
|
DBUG_RETURN(table);
|
||||||
|
Reference in New Issue
Block a user