diff options
author | Sergei Golubchik <serg@mariadb.org> | 2019-09-02 10:53:46 +0200 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2019-09-03 20:34:30 +0200 |
commit | 17ab02f4b0537de321a281f47dec825a6368d483 (patch) | |
tree | 1ce787d6d66c224336266e55510945666661c814 /sql/table.cc | |
parent | ef00ac4c86daf3294c46a45358da636763fb0049 (diff) | |
download | mariadb-git-17ab02f4b0537de321a281f47dec825a6368d483.tar.gz |
cleanup: on update default now
* remove one level of virtual functions
* remove redundant checks
* remove an if() as the value is always known at compilation time
don't pretend that "DEFAULT expr" and "ON UPDATE DEFAULT NOW"
are "basically the same thing"
Diffstat (limited to 'sql/table.cc')
-rw-r--r-- | sql/table.cc | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/sql/table.cc b/sql/table.cc index 07858ab270a..e39b73b2f4b 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -7736,7 +7736,7 @@ int TABLE::update_virtual_field(Field *vf) ignore_errors == 0. If set then an error was generated. */ -int TABLE::update_default_fields(bool update_command, bool ignore_errors) +int TABLE::update_default_fields(bool ignore_errors) { Query_arena backup_arena; Field **field_ptr; @@ -7756,14 +7756,9 @@ int TABLE::update_default_fields(bool update_command, bool ignore_errors) */ if (!field->has_explicit_value()) { - if (!update_command) - { - if (field->default_value && - (field->default_value->flags || field->flags & BLOB_FLAG)) - res|= (field->default_value->expr->save_in_field(field, 0) < 0); - } - else - res|= field->evaluate_update_default_function(); + if (field->default_value && + (field->default_value->flags || field->flags & BLOB_FLAG)) + res|= (field->default_value->expr->save_in_field(field, 0) < 0); if (!ignore_errors && res) { my_error(ER_CALCULATING_DEFAULT_VALUE, MYF(0), field->field_name); @@ -7776,6 +7771,21 @@ int TABLE::update_default_fields(bool update_command, bool ignore_errors) DBUG_RETURN(res); } +void TABLE::evaluate_update_default_function() +{ + DBUG_ENTER("TABLE::evaluate_update_default_function"); + + if (s->has_update_default_function) + for (Field **field_ptr= default_field; *field_ptr ; field_ptr++) + { + Field *field= (*field_ptr); + if (!field->has_explicit_value() && field->has_update_default_function()) + field->set_time(); + } + DBUG_VOID_RETURN; +} + + /** Reset markers that fields are being updated */ |