summaryrefslogtreecommitdiff
path: root/sql/field_conv.cc
diff options
context:
space:
mode:
authorigor@olga.mysql.com <>2007-06-30 20:49:28 -0700
committerigor@olga.mysql.com <>2007-06-30 20:49:28 -0700
commit259fdbf9ca330d6242cff277bc14871b16aeabb2 (patch)
treeed6bbc6971d75074b67617c9c71dbae1f71a8996 /sql/field_conv.cc
parentfdf2d7c24fa5dfb2c0603ae19782bc306b720ae9 (diff)
parent38deea24964e1acf0920f8dee1a4442531d3ed80 (diff)
downloadmariadb-git-259fdbf9ca330d6242cff277bc14871b16aeabb2.tar.gz
Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into olga.mysql.com:/home/igor/dev-opt/mysql-5.1-opt
Diffstat (limited to 'sql/field_conv.cc')
-rw-r--r--sql/field_conv.cc17
1 files changed, 16 insertions, 1 deletions
diff --git a/sql/field_conv.cc b/sql/field_conv.cc
index 63810c8b113..44aea9acee0 100644
--- a/sql/field_conv.cc
+++ b/sql/field_conv.cc
@@ -307,6 +307,15 @@ static void do_field_string(Copy_field *copy)
}
+static void do_field_enum(Copy_field *copy)
+{
+ if (copy->from_field->val_int() == 0)
+ ((Field_enum *) copy->to_field)->store_type((ulonglong) 0);
+ else
+ do_field_string(copy);
+}
+
+
static void do_field_varbinary_pre50(Copy_field *copy)
{
char buff[MAX_FIELD_WIDTH];
@@ -667,7 +676,13 @@ void (*Copy_field::get_copy_func(Field *to,Field *from))(Copy_field*)
to->real_type() == MYSQL_TYPE_SET)
{
if (!to->eq_def(from))
- return do_field_string;
+ {
+ if (from->real_type() == MYSQL_TYPE_ENUM &&
+ to->real_type() == MYSQL_TYPE_ENUM)
+ return do_field_enum;
+ else
+ return do_field_string;
+ }
}
else if (to->charset() != from->charset())
return do_field_string;