Manually merged
This commit is contained in:
commit
7042df6228
@ -1000,20 +1000,23 @@ public:
|
|||||||
|
|
||||||
class Field_string :public Field_longstr {
|
class Field_string :public Field_longstr {
|
||||||
public:
|
public:
|
||||||
|
bool can_alter_field_type;
|
||||||
Field_string(char *ptr_arg, uint32 len_arg,uchar *null_ptr_arg,
|
Field_string(char *ptr_arg, uint32 len_arg,uchar *null_ptr_arg,
|
||||||
uchar null_bit_arg,
|
uchar null_bit_arg,
|
||||||
enum utype unireg_check_arg, const char *field_name_arg,
|
enum utype unireg_check_arg, const char *field_name_arg,
|
||||||
CHARSET_INFO *cs)
|
CHARSET_INFO *cs)
|
||||||
:Field_longstr(ptr_arg, len_arg, null_ptr_arg, null_bit_arg,
|
:Field_longstr(ptr_arg, len_arg, null_ptr_arg, null_bit_arg,
|
||||||
unireg_check_arg, field_name_arg, cs) {};
|
unireg_check_arg, field_name_arg, cs),
|
||||||
|
can_alter_field_type(1) {};
|
||||||
Field_string(uint32 len_arg,bool maybe_null_arg, const char *field_name_arg,
|
Field_string(uint32 len_arg,bool maybe_null_arg, const char *field_name_arg,
|
||||||
CHARSET_INFO *cs)
|
CHARSET_INFO *cs)
|
||||||
:Field_longstr((char*) 0, len_arg, maybe_null_arg ? (uchar*) "": 0, 0,
|
:Field_longstr((char*) 0, len_arg, maybe_null_arg ? (uchar*) "": 0, 0,
|
||||||
NONE, field_name_arg, cs) {};
|
NONE, field_name_arg, cs),
|
||||||
|
can_alter_field_type(1) {};
|
||||||
|
|
||||||
enum_field_types type() const
|
enum_field_types type() const
|
||||||
{
|
{
|
||||||
return ((orig_table &&
|
return ((can_alter_field_type && orig_table &&
|
||||||
orig_table->s->db_create_options & HA_OPTION_PACK_RECORD &&
|
orig_table->s->db_create_options & HA_OPTION_PACK_RECORD &&
|
||||||
field_length >= 4) &&
|
field_length >= 4) &&
|
||||||
orig_table->s->frm_version < FRM_VER_TRUE_VARCHAR ?
|
orig_table->s->frm_version < FRM_VER_TRUE_VARCHAR ?
|
||||||
|
@ -1229,6 +1229,11 @@ multi_update::initialize_tables(JOIN *join)
|
|||||||
Field_string offset(table->file->ref_length, 0, "offset",
|
Field_string offset(table->file->ref_length, 0, "offset",
|
||||||
&my_charset_bin);
|
&my_charset_bin);
|
||||||
offset.init(table);
|
offset.init(table);
|
||||||
|
/*
|
||||||
|
The field will be converted to varstring when creating tmp table if
|
||||||
|
table to be updated was created by mysql 4.1. Deny this.
|
||||||
|
*/
|
||||||
|
offset.can_alter_field_type= 0;
|
||||||
if (!(ifield= new Item_field(((Field *) &offset))))
|
if (!(ifield= new Item_field(((Field *) &offset))))
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
ifield->maybe_null= 0;
|
ifield->maybe_null= 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user