MCPcopy Create free account
hub / github.com/MariaDB/server / update_default_fields

Method update_default_fields

sql/table.cc:9503–9541  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9501*/
9502
9503int 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
9543int TABLE::update_generated_fields()
9544{

Callers 4

unpack_rowFunction · 0.80
mysql_alter_tableFunction · 0.80
copy_data_between_tablesFunction · 0.80
fill_recordFunction · 0.80

Calls 5

my_errorFunction · 0.85
has_explicit_valueMethod · 0.80
restore_active_arenaMethod · 0.80
save_in_fieldMethod · 0.45

Tested by

no test coverage detected