Commit 8eb00d0a authored by unknown's avatar unknown
Browse files

Merge mysql.com:/opt/local/work/mysql-5.0-root

into  mysql.com:/opt/local/work/mysql-5.0-runtime

parents 41b9884d 67fd3c4a
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -237,3 +237,21 @@ deallocate prepare stmt;
drop table t1;
drop view v1, v2, v3;
drop function bug15683;
drop table if exists t1, t2, t3;
drop function if exists bug19634;
create table t1 (id int, data int);
create table t2 (id int);
create table t3 (data int);
create function bug19634() returns int return (select count(*) from t3);
prepare stmt from "delete t1 from t1, t2 where t1.id = t2.id and bug19634()";
execute stmt;
execute stmt;
deallocate prepare stmt;
create trigger t1_bi before delete on t1 for each row insert into t3 values (old.data);
prepare stmt from "delete t1 from t1, t2 where t1.id = t2.id";
execute stmt;
execute stmt;
deallocate prepare stmt;
drop function bug19634;
drop table t1, t2, t3;
End of 5.0 tests
+21 −0
Original line number Diff line number Diff line
@@ -4990,4 +4990,25 @@ CALL bug18037_p2()|
DROP FUNCTION bug18037_f1|
DROP PROCEDURE bug18037_p1|
DROP PROCEDURE bug18037_p2|
drop table if exists t3|
drop procedure if exists bug15217|
create table t3 as select 1|
create procedure bug15217()
begin
declare var1 char(255);
declare cur1 cursor for select * from t3;
open cur1;
fetch cur1 into var1;
select concat('data was: /', var1, '/');
close cur1;
end |
call bug15217()|
concat('data was: /', var1, '/')
data was: /1/
flush tables |
call bug15217()|
concat('data was: /', var1, '/')
data was: /1/
drop table t3|
drop procedure bug15217|
drop table t1,t2;
+31 −0
Original line number Diff line number Diff line
@@ -272,3 +272,34 @@ drop table t1;
drop view v1, v2, v3;
drop function bug15683;


#
# Bug#19634 "Re-execution of multi-delete which involve trigger/stored 
#            function crashes server"
#
--disable_warnings
drop table if exists t1, t2, t3;
drop function if exists bug19634;
--enable_warnings
create table t1 (id int, data int);
create table t2 (id int);
create table t3 (data int);
create function bug19634() returns int return (select count(*) from t3);
prepare stmt from "delete t1 from t1, t2 where t1.id = t2.id and bug19634()";
# This should not crash server
execute stmt;
execute stmt;
deallocate prepare stmt;

create trigger t1_bi before delete on t1 for each row insert into t3 values (old.data);
prepare stmt from "delete t1 from t1, t2 where t1.id = t2.id";

execute stmt;
execute stmt;
deallocate prepare stmt;

drop function bug19634;
drop table t1, t2, t3;


--echo End of 5.0 tests
+27 −0
Original line number Diff line number Diff line
@@ -5888,6 +5888,33 @@ DROP FUNCTION bug18037_f1|
DROP PROCEDURE bug18037_p1|
DROP PROCEDURE bug18037_p2|

#
# Bug#15217 "Using a SP cursor on a table created with PREPARE fails with
#           weird error". Check that the code that is supposed to work at
#           the first execution of a stored procedure actually works for
#           sp_instr_copen.

--disable_warnings
drop table if exists t3|
drop procedure if exists bug15217|
--enable_warnings
create table t3 as select 1|
create procedure bug15217()
begin
  declare var1 char(255);
  declare cur1 cursor for select * from t3;
  open cur1;
  fetch cur1 into var1;
  select concat('data was: /', var1, '/');
  close cur1;
end |
# Returns expected result
call bug15217()|
flush tables |
# Returns error with garbage as column name
call bug15217()|
drop table t3|
drop procedure bug15217|

#
# BUG#NNNN: New bug synopsis
+3 −1
Original line number Diff line number Diff line
@@ -1075,7 +1075,6 @@ sp_head::execute(THD *thd)
    thd->net.no_send_error= 0;
    if (i->free_list)
      cleanup_items(i->free_list);
    i->state= Query_arena::EXECUTED;
    
    /* 
      If we've set thd->user_var_events_alloc to mem_root of this SP
@@ -2210,6 +2209,9 @@ sp_lex_keeper::reset_lex_and_exec_core(THD *thd, uint *nextp,
    m_lex->mark_as_requiring_prelocking(NULL);
  }
  thd->rollback_item_tree_changes();
  /* Update the state of the active arena. */
  thd->stmt_arena->state= Query_arena::EXECUTED;


  /*
    Unlike for PS we should not call Item's destructors for newly created
Loading