| 9501 | */ |
| 9502 | |
| 9503 | int TABLE::update_default_fields(bool ignore_errors) |
| 9504 | { |
| 9505 | Query_arena backup_arena; |
| 9506 | Field **field_ptr; |
| 9507 | int res= 0; |
| 9508 | DBUG_ENTER("TABLE::update_default_fields"); |
| 9509 | DBUG_ASSERT(default_field); |
| 9510 | |
| 9511 | /* |
| 9512 | TODO: this may impose memory leak until table flush. |
| 9513 | See comment in |
| 9514 | TABLE::update_virtual_fields(handler *, enum_vcol_update_mode). |
| 9515 | */ |
| 9516 | in_use->set_n_backup_active_arena(expr_arena, &backup_arena); |
| 9517 | |
| 9518 | /* Iterate over fields with default functions in the table */ |
| 9519 | for (field_ptr= default_field; *field_ptr ; field_ptr++) |
| 9520 | { |
| 9521 | Field *field= (*field_ptr); |
| 9522 | /* |
| 9523 | If an explicit default value for a field overrides the default, |
| 9524 | do not update the field with its automatic default value. |
| 9525 | */ |
| 9526 | if (!field->has_explicit_value()) |
| 9527 | { |
| 9528 | if (field->default_value && |
| 9529 | (field->default_value->flags || field->flags & BLOB_FLAG)) |
| 9530 | res|= (field->default_value->expr->save_in_field(field, 0) < 0); |
| 9531 | if (!ignore_errors && res) |
| 9532 | { |
| 9533 | my_error(ER_CALCULATING_DEFAULT_VALUE, MYF(0), field->field_name.str); |
| 9534 | break; |
| 9535 | } |
| 9536 | res= 0; |
| 9537 | } |
| 9538 | } |
| 9539 | in_use->restore_active_arena(expr_arena, &backup_arena); |
| 9540 | DBUG_RETURN(res); |
| 9541 | } |
| 9542 | |
| 9543 | int TABLE::update_generated_fields() |
| 9544 | { |
no test coverage detected