diff options
author | unknown <gluh@eagle.intranet.mysql.r18.ru> | 2005-07-27 16:17:05 +0500 |
---|---|---|
committer | unknown <gluh@eagle.intranet.mysql.r18.ru> | 2005-07-27 16:17:05 +0500 |
commit | 983a836f74a3b439a8e90b6e3aaee5a454842396 (patch) | |
tree | f88622d84fe76a53d8622b624dcf46612f8d5ae4 /sql/sql_trigger.cc | |
parent | 663ad3432639410fa5784cfbf5ea968436eeabd5 (diff) | |
download | mariadb-git-983a836f74a3b439a8e90b6e3aaee5a454842396.tar.gz |
Fix for bug#12127 triggers do not show in info_schema before they are used if set to the database(2nd version)
use db name of table which trigger belongs to
instead of thd->db name during trigger body parsing
Diffstat (limited to 'sql/sql_trigger.cc')
-rw-r--r-- | sql/sql_trigger.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc index a7aee95197e..a69ae8064c7 100644 --- a/sql/sql_trigger.cc +++ b/sql/sql_trigger.cc @@ -520,6 +520,7 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db, char path_buff[FN_REFLEN]; LEX_STRING path; File_parser *parser; + LEX_STRING save_db; DBUG_ENTER("Table_triggers_list::check_n_load"); @@ -581,6 +582,10 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db, thd->lex= &lex; + save_db.str= thd->db; + save_db.length= thd->db_length; + thd->db_length= strlen(db); + thd->db= (char *) db; while ((trg_create_str= it++)) { lex_start(thd, (uchar*)trg_create_str->str, trg_create_str->length); @@ -623,6 +628,8 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db, lex_end(&lex); } + thd->db= save_db.str; + thd->db_length= save_db.length; thd->lex= old_lex; DBUG_RETURN(0); @@ -631,6 +638,8 @@ err_with_lex_cleanup: // QQ: anything else ? lex_end(&lex); thd->lex= old_lex; + thd->db= save_db.str; + thd->db_length= save_db.length; DBUG_RETURN(1); } |