summaryrefslogtreecommitdiff
path: root/sql/field_conv.cc
diff options
context:
space:
mode:
authorunknown <igor@olga.mysql.com>2007-06-30 16:24:09 -0700
committerunknown <igor@olga.mysql.com>2007-06-30 16:24:09 -0700
commit8dcd5fca6977a8aafb0dd874b348e0078eafda94 (patch)
tree5c5791f99f377362ada084e6a977b0dd39f605c0 /sql/field_conv.cc
parenta89259fad8ca301d882a26f41104abd4619a127c (diff)
parent7fbf6303d264a84bd225e0113a910459a067e3d0 (diff)
downloadmariadb-git-8dcd5fca6977a8aafb0dd874b348e0078eafda94.tar.gz
Merge olga.mysql.com:/home/igor/mysql-4.1-opt
into olga.mysql.com:/home/igor/mysql-5.0-opt mysql-test/r/type_enum.result: Auto merged mysql-test/t/type_enum.test: Auto merged sql/field_conv.cc: SCCS merged
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 410db357510..a286255ec23 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];
@@ -662,7 +671,13 @@ void (*Copy_field::get_copy_func(Field *to,Field *from))(Copy_field*)
to->real_type() == FIELD_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;