Loading .bzrignore +1 −0 Original line number Diff line number Diff line Loading @@ -1105,3 +1105,4 @@ vio/test-ssl vio/test-sslclient vio/test-sslserver vio/viotest-ssl acinclude.m4 mysql-test/r/sp.result +24 −0 Original line number Diff line number Diff line Loading @@ -2697,6 +2697,30 @@ call bug7992()| call bug7992()| drop procedure bug7992| drop table t3| drop table t2; drop table t1; drop procedure if exists sp1; create table t1 (a int) engine=innodb| create procedure sp1 () begin truncate table t1; insert t1 values (1); rollback; end | set autocommit=0; insert t1 values (2); call sp1(); ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction commit; set autocommit=1; select * from t1; a 2 call sp1(); select * from t1; a 1 drop table t1; drop procedure sp1; create table t3 ( lpitnumber int(11) default null, lrecordtype int(11) default null Loading mysql-test/t/sp.test +28 −0 Original line number Diff line number Diff line Loading @@ -3276,7 +3276,35 @@ call bug7992()| call bug7992()| drop procedure bug7992| drop table t3| delimiter ;| drop table t2; drop table t1; # # BUG#8850 # --disable_warnings drop procedure if exists sp1; --enable_warnings delimiter |; create table t1 (a int) engine=innodb| create procedure sp1 () begin truncate table t1; insert t1 values (1); rollback; end | delimiter ;| set autocommit=0; insert t1 values (2); --error 1192 call sp1(); commit; set autocommit=1; select * from t1; call sp1(); select * from t1; drop table t1; drop procedure sp1; # # BUG#8849: problem with insert statement with table alias's Loading sql/sql_delete.cc +2 −1 Original line number Diff line number Diff line Loading @@ -749,11 +749,12 @@ bool mysql_truncate(THD *thd, TABLE_LIST *table_list, bool dont_send_ok) table_list->db, table_list->table_name); DBUG_RETURN(TRUE); } if (!ha_supports_generate(table_type)) if (!ha_supports_generate(table_type) || thd->lex->sphead) { /* Probably InnoDB table */ table_list->lock_type= TL_WRITE; ha_enable_transaction(thd, FALSE); mysql_init_select(thd->lex); error= mysql_delete(thd, table_list, (COND*) 0, (SQL_LIST*) 0, HA_POS_ERROR, 0); ha_enable_transaction(thd, TRUE); Loading sql/sql_parse.cc +1 −1 Original line number Diff line number Diff line Loading @@ -3191,7 +3191,7 @@ mysql_execute_command(THD *thd) Don't allow this within a transaction because we want to use re-generate table */ if (thd->locked_tables || thd->active_transaction()) if ((thd->locked_tables && !lex->sphead) || thd->active_transaction()) { my_message(ER_LOCK_OR_ACTIVE_TRANSACTION, ER(ER_LOCK_OR_ACTIVE_TRANSACTION), MYF(0)); Loading Loading
.bzrignore +1 −0 Original line number Diff line number Diff line Loading @@ -1105,3 +1105,4 @@ vio/test-ssl vio/test-sslclient vio/test-sslserver vio/viotest-ssl acinclude.m4
mysql-test/r/sp.result +24 −0 Original line number Diff line number Diff line Loading @@ -2697,6 +2697,30 @@ call bug7992()| call bug7992()| drop procedure bug7992| drop table t3| drop table t2; drop table t1; drop procedure if exists sp1; create table t1 (a int) engine=innodb| create procedure sp1 () begin truncate table t1; insert t1 values (1); rollback; end | set autocommit=0; insert t1 values (2); call sp1(); ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction commit; set autocommit=1; select * from t1; a 2 call sp1(); select * from t1; a 1 drop table t1; drop procedure sp1; create table t3 ( lpitnumber int(11) default null, lrecordtype int(11) default null Loading
mysql-test/t/sp.test +28 −0 Original line number Diff line number Diff line Loading @@ -3276,7 +3276,35 @@ call bug7992()| call bug7992()| drop procedure bug7992| drop table t3| delimiter ;| drop table t2; drop table t1; # # BUG#8850 # --disable_warnings drop procedure if exists sp1; --enable_warnings delimiter |; create table t1 (a int) engine=innodb| create procedure sp1 () begin truncate table t1; insert t1 values (1); rollback; end | delimiter ;| set autocommit=0; insert t1 values (2); --error 1192 call sp1(); commit; set autocommit=1; select * from t1; call sp1(); select * from t1; drop table t1; drop procedure sp1; # # BUG#8849: problem with insert statement with table alias's Loading
sql/sql_delete.cc +2 −1 Original line number Diff line number Diff line Loading @@ -749,11 +749,12 @@ bool mysql_truncate(THD *thd, TABLE_LIST *table_list, bool dont_send_ok) table_list->db, table_list->table_name); DBUG_RETURN(TRUE); } if (!ha_supports_generate(table_type)) if (!ha_supports_generate(table_type) || thd->lex->sphead) { /* Probably InnoDB table */ table_list->lock_type= TL_WRITE; ha_enable_transaction(thd, FALSE); mysql_init_select(thd->lex); error= mysql_delete(thd, table_list, (COND*) 0, (SQL_LIST*) 0, HA_POS_ERROR, 0); ha_enable_transaction(thd, TRUE); Loading
sql/sql_parse.cc +1 −1 Original line number Diff line number Diff line Loading @@ -3191,7 +3191,7 @@ mysql_execute_command(THD *thd) Don't allow this within a transaction because we want to use re-generate table */ if (thd->locked_tables || thd->active_transaction()) if ((thd->locked_tables && !lex->sphead) || thd->active_transaction()) { my_message(ER_LOCK_OR_ACTIVE_TRANSACTION, ER(ER_LOCK_OR_ACTIVE_TRANSACTION), MYF(0)); Loading