| 2971 | */ |
| 2972 | |
| 2973 | void Table_triggers_list::mark_fields_used(trg_event_type event) |
| 2974 | { |
| 2975 | int action_time; |
| 2976 | DBUG_ENTER("Table_triggers_list::mark_fields_used"); |
| 2977 | |
| 2978 | for (action_time= 0; action_time < (int)TRG_ACTION_MAX; action_time++) |
| 2979 | { |
| 2980 | for (Trigger *trigger= get_trigger(event,action_time); |
| 2981 | trigger ; |
| 2982 | trigger= trigger->next[event]) |
| 2983 | { |
| 2984 | /* |
| 2985 | Skip a trigger that was parsed with an error. |
| 2986 | */ |
| 2987 | if (trigger->body == nullptr) |
| 2988 | continue; |
| 2989 | |
| 2990 | (void)iterate_trigger_fields_and_run_func( |
| 2991 | trigger->body->m_trg_table_fields, |
| 2992 | [this] (Item_trigger_field* trg_field) |
| 2993 | { |
| 2994 | /* We cannot mark fields which does not present in table. */ |
| 2995 | if (trg_field->field_idx != NO_CACHED_FIELD_INDEX) |
| 2996 | { |
| 2997 | DBUG_PRINT("info", ("marking field: %u", (uint) trg_field->field_idx)); |
| 2998 | if (trg_field->get_settable_routine_parameter()) |
| 2999 | bitmap_set_bit(trigger_table->write_set, trg_field->field_idx); |
| 3000 | trigger_table->mark_column_with_deps( |
| 3001 | trigger_table->field[trg_field->field_idx]); |
| 3002 | } |
| 3003 | return false; |
| 3004 | } |
| 3005 | ); |
| 3006 | } |
| 3007 | } |
| 3008 | trigger_table->file->column_bitmaps_signal(false); |
| 3009 | DBUG_VOID_RETURN; |
| 3010 | } |
| 3011 | |
| 3012 | |
| 3013 | /** |
no test coverage detected