summaryrefslogtreecommitdiff
path: root/sql/sql_trigger.cc
diff options
context:
space:
mode:
authorMichael Widenius <monty@askmonty.org>2010-12-06 10:25:44 +0200
committerMichael Widenius <monty@askmonty.org>2010-12-06 10:25:44 +0200
commitb7b25dc666a8d331d16231f9fb658af8c05ac694 (patch)
tree0c7798c2d187db0da7837a70f306a789afc16521 /sql/sql_trigger.cc
parentab5e4eefd5d25c6e0755c2460dbb433a7a9e913b (diff)
parentb3c72b9a02e570a4a66ca0a64e94fe1116976c85 (diff)
downloadmariadb-git-b7b25dc666a8d331d16231f9fb658af8c05ac694.tar.gz
Merge with 5.1-release.
- Fixed problem with oqgraph and 'make dist' Note that after this merge we have a problem show in join_outer where we examine too many rows in one specific case (related to BUG#57024). This will be fixed when mwl#128 is merged into 5.3.
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 d1e974a2c04..1c4add27e57 100644
--- a/sql/sql_trigger.cc
+++ b/sql/sql_trigger.cc
@@ -1983,6 +1983,7 @@ bool Table_triggers_list::process_triggers(THD *thd,
bool err_status;
Sub_statement_state statement_state;
sp_head *sp_trigger= bodies[event][time_type];
+ SELECT_LEX *save_current_select;
if (sp_trigger == NULL)
return FALSE;
@@ -2006,11 +2007,19 @@ bool Table_triggers_list::process_triggers(THD *thd,
thd->reset_sub_statement_state(&statement_state, SUB_STMT_TRIGGER);
+ /*
+ Reset current_select before call execute_trigger() and
+ restore it after return from one. This way error is set
+ in case of failure during trigger execution.
+ */
+ save_current_select= thd->lex->current_select;
+ thd->lex->current_select= NULL;
err_status=
sp_trigger->execute_trigger(thd,
&trigger_table->s->db,
&trigger_table->s->table_name,
&subject_table_grants[event][time_type]);
+ thd->lex->current_select= save_current_select;
thd->restore_sub_statement_state(&statement_state);