Commit be7629e3 authored by Davi Arnaut's avatar Davi Arnaut
Browse files

Merge from mysql-5.1-5.1.29-rc into mysql-5.1-bugteam

parents 15853680 adf630dc
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -1240,4 +1240,16 @@ select (@orig_max_data_length > @changed_max_data_length);
(@orig_max_data_length > @changed_max_data_length)
1
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
+3 −0
Original line number Diff line number Diff line
SELECT @@GLOBAL.binlog_format;
@@GLOBAL.binlog_format
STATEMENT
'#---------------------BS_STVARS_002_01----------------------#'
SELECT COUNT(@@GLOBAL.binlog_format);
COUNT(@@GLOBAL.binlog_format)
+10 −0
Original line number Diff line number Diff line
@@ -977,4 +977,14 @@ select (@orig_max_data_length > @changed_max_data_length);

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
+7 −0
Original line number Diff line number Diff line
@@ -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----------------------#'
####################################################################
#   Displaying default value                                       #
+25 −10
Original line number Diff line number Diff line
@@ -8783,28 +8783,43 @@ bool Field::eq_def(Field *field)
  return 1;
}


/**
  @return
  returns 1 if the fields are equally defined
*/

bool Field_enum::eq_def(Field *field)
{
  if (!Field::eq_def(field))
    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++)

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],
                     strlen(typelib->type_names[i]),
                     (const uchar*)from_lib->type_names[i],
                     strlen(from_lib->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 1;
  return compare_enum_values(new_field->interval);
}


/**
  @return
  returns 1 if the fields are equally defined
Loading