Merge from mysql-5.1-5.1.29-rc into mysql-5.1-bugteam
This commit is contained in:
commit
be7629e370
@ -1240,4 +1240,16 @@ select (@orig_max_data_length > @changed_max_data_length);
|
|||||||
(@orig_max_data_length > @changed_max_data_length)
|
(@orig_max_data_length > @changed_max_data_length)
|
||||||
1
|
1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1(a INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
b ENUM('a', 'b', 'c') NOT NULL);
|
||||||
|
INSERT INTO t1 (b) VALUES ('a'), ('c'), ('b'), ('b'), ('a');
|
||||||
|
ALTER TABLE t1 MODIFY b ENUM('a', 'z', 'b', 'c') NOT NULL;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
1 a
|
||||||
|
2 c
|
||||||
|
3 b
|
||||||
|
4 b
|
||||||
|
5 a
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
SELECT @@GLOBAL.binlog_format;
|
||||||
|
@@GLOBAL.binlog_format
|
||||||
|
STATEMENT
|
||||||
'#---------------------BS_STVARS_002_01----------------------#'
|
'#---------------------BS_STVARS_002_01----------------------#'
|
||||||
SELECT COUNT(@@GLOBAL.binlog_format);
|
SELECT COUNT(@@GLOBAL.binlog_format);
|
||||||
COUNT(@@GLOBAL.binlog_format)
|
COUNT(@@GLOBAL.binlog_format)
|
||||||
|
@ -977,4 +977,14 @@ select (@orig_max_data_length > @changed_max_data_length);
|
|||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #23113: Different behavior on altering ENUM fields between 5.0 and 5.1
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(a INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
b ENUM('a', 'b', 'c') NOT NULL);
|
||||||
|
INSERT INTO t1 (b) VALUES ('a'), ('c'), ('b'), ('b'), ('a');
|
||||||
|
ALTER TABLE t1 MODIFY b ENUM('a', 'z', 'b', 'c') NOT NULL;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -22,6 +22,13 @@
|
|||||||
# #
|
# #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
|
###################################################################
|
||||||
|
# BUG#39812: Make statement replication default for 5.1 (to match 5.0)
|
||||||
|
# We just verify that the default binlog_format is STATEMENT in 5.1.
|
||||||
|
# In 6.0, it should be MIXED.
|
||||||
|
###################################################################
|
||||||
|
SELECT @@GLOBAL.binlog_format;
|
||||||
|
|
||||||
--echo '#---------------------BS_STVARS_002_01----------------------#'
|
--echo '#---------------------BS_STVARS_002_01----------------------#'
|
||||||
####################################################################
|
####################################################################
|
||||||
# Displaying default value #
|
# Displaying default value #
|
||||||
|
39
sql/field.cc
39
sql/field.cc
@ -8783,28 +8783,43 @@ bool Field::eq_def(Field *field)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@return
|
@return
|
||||||
returns 1 if the fields are equally defined
|
returns 1 if the fields are equally defined
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool Field_enum::eq_def(Field *field)
|
bool Field_enum::eq_def(Field *field)
|
||||||
{
|
{
|
||||||
if (!Field::eq_def(field))
|
if (!Field::eq_def(field))
|
||||||
return 0;
|
return 0;
|
||||||
TYPELIB *from_lib=((Field_enum*) field)->typelib;
|
return compare_enum_values(((Field_enum*) field)->typelib);
|
||||||
|
|
||||||
if (typelib->count < from_lib->count)
|
|
||||||
return 0;
|
|
||||||
for (uint i=0 ; i < from_lib->count ; i++)
|
|
||||||
if (my_strnncoll(field_charset,
|
|
||||||
(const uchar*)typelib->type_names[i],
|
|
||||||
strlen(typelib->type_names[i]),
|
|
||||||
(const uchar*)from_lib->type_names[i],
|
|
||||||
strlen(from_lib->type_names[i])))
|
|
||||||
return 0;
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Field_enum::compare_enum_values(TYPELIB *values)
|
||||||
|
{
|
||||||
|
if (typelib->count != values->count)
|
||||||
|
return FALSE;
|
||||||
|
for (uint i= 0; i < typelib->count; i++)
|
||||||
|
if (my_strnncoll(field_charset,
|
||||||
|
(const uchar*) typelib->type_names[i],
|
||||||
|
typelib->type_lengths[i],
|
||||||
|
(const uchar*) values->type_names[i],
|
||||||
|
values->type_lengths[i]))
|
||||||
|
return FALSE;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint Field_enum::is_equal(Create_field *new_field)
|
||||||
|
{
|
||||||
|
if (!Field_str::is_equal(new_field))
|
||||||
|
return 0;
|
||||||
|
return compare_enum_values(new_field->interval);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@return
|
@return
|
||||||
returns 1 if the fields are equally defined
|
returns 1 if the fields are equally defined
|
||||||
|
@ -1853,6 +1853,8 @@ public:
|
|||||||
CHARSET_INFO *sort_charset(void) const { return &my_charset_bin; }
|
CHARSET_INFO *sort_charset(void) const { return &my_charset_bin; }
|
||||||
private:
|
private:
|
||||||
int do_save_field_metadata(uchar *first_byte);
|
int do_save_field_metadata(uchar *first_byte);
|
||||||
|
bool compare_enum_values(TYPELIB *values);
|
||||||
|
uint is_equal(Create_field *new_field);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user