Commit 368b9239 authored by evgen@sunlight.local's avatar evgen@sunlight.local

Manually merged

parents 139808f0 d0724059
...@@ -1000,20 +1000,23 @@ class Field_datetime :public Field_str { ...@@ -1000,20 +1000,23 @@ class Field_datetime :public Field_str {
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) ...@@ -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;
......
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