summaryrefslogtreecommitdiff
path: root/sql/item.cc
diff options
context:
space:
mode:
authorunknown <cmiller@zippy.cornsilk.net>2007-02-14 10:47:39 -0500
committerunknown <cmiller@zippy.cornsilk.net>2007-02-14 10:47:39 -0500
commit9d66be72b0ee079cecc39e09d4f4c0f7e1849dbc (patch)
tree86681ff03d4f437135ad77156d2c1ec5ec5d33b1 /sql/item.cc
parent035062b2a7506bfa159bfc67ed710a19beee2114 (diff)
parentc039eed82cb21d75965fd9b2e936396e0282e0cb (diff)
downloadmariadb-git-9d66be72b0ee079cecc39e09d4f4c0f7e1849dbc.tar.gz
Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-maint sql/mysql_priv.h: Auto merged
Diffstat (limited to 'sql/item.cc')
-rw-r--r--sql/item.cc28
1 files changed, 12 insertions, 16 deletions
diff --git a/sql/item.cc b/sql/item.cc
index 9a55eb25e2c..b4a7820eabf 100644
--- a/sql/item.cc
+++ b/sql/item.cc
@@ -4245,18 +4245,19 @@ void Item_field::save_org_in_field(Field *to)
int Item_field::save_in_field(Field *to, bool no_conversions)
{
+ int res;
if (result_field->is_null())
{
null_value=1;
- return set_field_to_null_with_conversions(to, no_conversions);
+ res= set_field_to_null_with_conversions(to, no_conversions);
}
else
{
to->set_notnull();
- field_conv(to,result_field);
+ res= field_conv(to,result_field);
null_value=0;
}
- return 0;
+ return res;
}
@@ -5276,18 +5277,7 @@ my_decimal *Item_ref::val_decimal(my_decimal *decimal_value)
int Item_ref::save_in_field(Field *to, bool no_conversions)
{
int res;
- if (result_field)
- {
- if (result_field->is_null())
- {
- null_value= 1;
- return set_field_to_null_with_conversions(to, no_conversions);
- }
- to->set_notnull();
- field_conv(to, result_field);
- null_value= 0;
- return 0;
- }
+ DBUG_ASSERT(!result_field);
res= (*ref)->save_in_field(to, no_conversions);
null_value= (*ref)->null_value;
return res;
@@ -5505,6 +5495,13 @@ int Item_default_value::save_in_field(Field *field_arg, bool no_conversions)
{
if (field_arg->flags & NO_DEFAULT_VALUE_FLAG)
{
+ if (field_arg->reset())
+ {
+ my_message(ER_CANT_CREATE_GEOMETRY_OBJECT,
+ ER(ER_CANT_CREATE_GEOMETRY_OBJECT), MYF(0));
+ return -1;
+ }
+
if (context->error_processor == &view_error_processor)
{
TABLE_LIST *view= cached_table->top_table();
@@ -5523,7 +5520,6 @@ int Item_default_value::save_in_field(Field *field_arg, bool no_conversions)
ER(ER_NO_DEFAULT_FOR_FIELD),
field_arg->field_name);
}
- field_arg->set_default();
return 1;
}
field_arg->set_default();