| 7833 | |
| 7834 | |
| 7835 | static bool store_trigger(THD *thd, Trigger *trigger, TABLE *table, |
| 7836 | const LEX_CSTRING *db_name, |
| 7837 | const LEX_CSTRING *table_name, bool trigger_priv) |
| 7838 | { |
| 7839 | CHARSET_INFO *cs= system_charset_info; |
| 7840 | LEX_CSTRING sql_mode_rep; |
| 7841 | MYSQL_TIME timestamp; |
| 7842 | char definer_holder[USER_HOST_BUFF_SIZE]; |
| 7843 | LEX_STRING definer_buffer; |
| 7844 | LEX_CSTRING trigger_stmt, trigger_body; |
| 7845 | definer_buffer.str= definer_holder; |
| 7846 | |
| 7847 | trigger->get_trigger_info(&trigger_stmt, &trigger_body, &definer_buffer); |
| 7848 | |
| 7849 | restore_record(table, s->default_values); |
| 7850 | table->field[0]->store(STRING_WITH_LEN("def"), cs); |
| 7851 | table->field[1]->store(db_name->str, db_name->length, cs); |
| 7852 | table->field[2]->store(trigger->name.str, trigger->name.length, cs); |
| 7853 | DBUG_ASSERT(trigger->events < trg2bit(TRG_EVENT_MAX)); |
| 7854 | table->field[3]->store(trg_event_type_names[trigger->events].str, |
| 7855 | trg_event_type_names[trigger->events].length, cs); |
| 7856 | table->field[4]->store(STRING_WITH_LEN("def"), cs); |
| 7857 | table->field[5]->store(db_name->str, db_name->length, cs); |
| 7858 | table->field[6]->store(table_name->str, table_name->length, cs); |
| 7859 | |
| 7860 | StringBuffer<STRING_BUFFER_USUAL_SIZE> buff; |
| 7861 | for (int i=0;i < TRG_EVENT_MAX; i++) |
| 7862 | { |
| 7863 | if (trigger->action_order[i]) |
| 7864 | { |
| 7865 | if (!buff.is_empty()) |
| 7866 | buff.append(','); |
| 7867 | buff.append_longlong(trigger->action_order[i]); |
| 7868 | } |
| 7869 | |
| 7870 | table->field[7]->store(buff.ptr(), buff.length(), cs); |
| 7871 | } |
| 7872 | |
| 7873 | if (trigger_priv) |
| 7874 | { |
| 7875 | table->field[9]->set_notnull(); |
| 7876 | table->field[18]->set_notnull(); |
| 7877 | table->field[9]->store(trigger_body.str, trigger_body.length, cs); |
| 7878 | table->field[18]->store(definer_buffer.str, definer_buffer.length, cs); |
| 7879 | } |
| 7880 | else |
| 7881 | { |
| 7882 | table->field[9]->set_null(); |
| 7883 | table->field[18]->set_null(); |
| 7884 | } |
| 7885 | |
| 7886 | table->field[10]->store(STRING_WITH_LEN("ROW"), cs); |
| 7887 | table->field[11]->store(trg_action_time_type_names[trigger->action_time].str, |
| 7888 | trg_action_time_type_names[trigger->action_time].length, cs); |
| 7889 | table->field[14]->store(STRING_WITH_LEN("OLD"), cs); |
| 7890 | table->field[15]->store(STRING_WITH_LEN("NEW"), cs); |
| 7891 | |
| 7892 | if (trigger->hr_create_time.val) |
no test coverage detected