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

Function store_trigger

sql/sql_show.cc:7835–7910  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7833
7834
7835static 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)

Callers 1

Calls 14

trg2bitFunction · 0.85
get_trigger_infoMethod · 0.80
append_longlongMethod · 0.80
set_notnullMethod · 0.80
gmt_sec_to_TIMEMethod · 0.80
storeMethod · 0.45
is_emptyMethod · 0.45
appendMethod · 0.45
ptrMethod · 0.45
lengthMethod · 0.45

Tested by

no test coverage detected