Changes to make ALTER TABLE and DELETE FROM TABLE work properly

with BEGIN WORK.
parent aacaaf59
...@@ -141,7 +141,8 @@ int mysql_delete(THD *thd,TABLE_LIST *table_list,COND *conds,ha_rows limit, ...@@ -141,7 +141,8 @@ int mysql_delete(THD *thd,TABLE_LIST *table_list,COND *conds,ha_rows limit,
use_generate_table= (!using_limit && !conds && use_generate_table= (!using_limit && !conds &&
!(specialflag & !(specialflag &
(SPECIAL_NO_NEW_FUNC | SPECIAL_SAFE_MODE)) && (SPECIAL_NO_NEW_FUNC | SPECIAL_SAFE_MODE)) &&
(thd->options & OPTION_AUTO_COMMIT)); (thd->options & OPTION_AUTO_COMMIT) &&
!(thd->options & OPTION_BEGIN));
if (use_generate_table && ! thd->open_tables) if (use_generate_table && ! thd->open_tables)
{ {
error=generate_table(thd,table_list,(TABLE*) 0); error=generate_table(thd,table_list,(TABLE*) 0);
......
...@@ -1150,7 +1150,8 @@ mysql_execute_command(void) ...@@ -1150,7 +1150,8 @@ mysql_execute_command(void)
} }
} }
/* ALTER TABLE ends previous transaction */ /* ALTER TABLE ends previous transaction */
if (!(thd->options & OPTION_AUTO_COMMIT) && ha_commit(thd)) if ((!(thd->options & OPTION_AUTO_COMMIT) ||
(thd->options & OPTION_BEGIN)) && ha_commit(thd))
res= -1; res= -1;
else else
res= mysql_alter_table(thd, lex->db, lex->name, res= mysql_alter_table(thd, lex->db, lex->name,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment