diff options
author | Alexander Barkov <bar@mariadb.org> | 2017-10-11 18:13:44 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2017-10-11 18:13:44 +0400 |
commit | 3062445a64ff50c7a29493356a3454777d4dd595 (patch) | |
tree | 79d554031bbb1455e744dc7f3b4db853aaba5ebf /sql/field.cc | |
parent | f9066dc347499ea2fd25f21def4b377a7037760a (diff) | |
download | mariadb-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.cc | 11 |
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(); } /* |