summaryrefslogtreecommitdiff
path: root/sql/sql_trigger.cc
diff options
context:
space:
mode:
authorunknown <gluh@eagle.intranet.mysql.r18.ru>2005-07-27 16:17:05 +0500
committerunknown <gluh@eagle.intranet.mysql.r18.ru>2005-07-27 16:17:05 +0500
commit983a836f74a3b439a8e90b6e3aaee5a454842396 (patch)
treef88622d84fe76a53d8622b624dcf46612f8d5ae4 /sql/sql_trigger.cc
parent663ad3432639410fa5784cfbf5ea968436eeabd5 (diff)
downloadmariadb-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.cc9
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);
}