summaryrefslogtreecommitdiff
path: root/sql/field.cc
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.org>2017-10-11 18:13:44 +0400
committerAlexander Barkov <bar@mariadb.org>2017-10-11 18:13:44 +0400
commit3062445a64ff50c7a29493356a3454777d4dd595 (patch)
tree79d554031bbb1455e744dc7f3b4db853aaba5ebf /sql/field.cc
parentf9066dc347499ea2fd25f21def4b377a7037760a (diff)
downloadmariadb-git-3062445a64ff50c7a29493356a3454777d4dd595.tar.gz
MDEV-14038 ALTER TABLE does not exit on error with InnoDB + bad default function
Changing Field::set_default from void to int. It now uses the same return value notation with Field::store*() and Item::save_in_field().
Diffstat (limited to 'sql/field.cc')
-rw-r--r--sql/field.cc11
1 files changed, 6 insertions, 5 deletions
diff --git a/sql/field.cc b/sql/field.cc
index c9cf3c3dcb2..6b3f836048f 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -2335,15 +2335,15 @@ Field *Field::clone(MEM_ROOT *root, my_ptrdiff_t diff)
return tmp;
}
-void Field::set_default()
+int Field::set_default()
{
if (default_value)
{
Query_arena backup_arena;
table->in_use->set_n_backup_active_arena(table->expr_arena, &backup_arena);
- (void) default_value->expr->save_in_field(this, 0);
+ int rc= default_value->expr->save_in_field(this, 0);
table->in_use->restore_active_arena(table->expr_arena, &backup_arena);
- return;
+ return rc;
}
/* Copy constant value stored in s->default_values */
my_ptrdiff_t l_offset= (my_ptrdiff_t) (table->s->default_values -
@@ -2352,6 +2352,7 @@ void Field::set_default()
if (maybe_null_in_table())
*null_ptr= ((*null_ptr & (uchar) ~null_bit) |
(null_ptr[l_offset] & null_bit));
+ return 0;
}
@@ -9665,7 +9666,7 @@ Field_bit::unpack(uchar *to, const uchar *from, const uchar *from_end,
}
-void Field_bit::set_default()
+int Field_bit::set_default()
{
if (bit_len > 0)
{
@@ -9673,7 +9674,7 @@ void Field_bit::set_default()
uchar bits= get_rec_bits(bit_ptr + col_offset, bit_ofs, bit_len);
set_rec_bits(bits, bit_ptr, bit_ofs, bit_len);
}
- Field::set_default();
+ return Field::set_default();
}
/*