Loading mysql-test/r/sp-error.result +18 −0 Original line number Diff line number Diff line Loading @@ -975,6 +975,24 @@ return 1; END | drop table t1| drop function bug_13627_f| drop function if exists bug12329; create table t1 as select 1 a; create table t2 as select 1 a; create function bug12329() returns int return (select a from t1); prepare stmt1 from 'select bug12329()'; execute stmt1; bug12329() 1 drop function bug12329; create function bug12329() returns int return (select a+100 from t2); select bug12329(); bug12329() 101 execute stmt1; ERROR HY000: Table 't2' was not locked with LOCK TABLES deallocate prepare stmt1; drop function bug12329; drop table t1, t2; create database mysqltest1; use mysqltest1; drop database mysqltest1; Loading mysql-test/r/trigger.result +25 −0 Original line number Diff line number Diff line Loading @@ -738,3 +738,28 @@ f1 1 drop trigger t1_bi; drop tables t1, t2; create table t1 (id int); create table t2 (id int); create trigger t1_bi before insert on t1 for each row insert into t2 values (new.id); prepare stmt1 from "insert into t1 values (10)"; create procedure p1() insert into t1 values (10); call p1(); drop trigger t1_bi; execute stmt1; call p1(); deallocate prepare stmt1; drop procedure p1; create table t3 (id int); create trigger t1_bi after insert on t1 for each row insert into t2 values (new.id); prepare stmt1 from "insert into t1 values (10)"; create procedure p1() insert into t1 values (10); call p1(); drop trigger t1_bi; create trigger t1_bi after insert on t1 for each row insert into t3 values (new.id); execute stmt1; ERROR HY000: Table 't3' was not locked with LOCK TABLES call p1(); ERROR HY000: Table 't3' was not locked with LOCK TABLES deallocate prepare stmt1; drop procedure p1; drop table t1, t2, t3; mysql-test/t/sp-error.test +22 −0 Original line number Diff line number Diff line Loading @@ -1403,6 +1403,28 @@ drop function bug_13627_f| delimiter ;| # BUG#12329: "Bogus error msg when executing PS with stored procedure after # SP was re-created". See also test for related bug#13399 in trigger.test --disable_warnings drop function if exists bug12329; --enable_warnings create table t1 as select 1 a; create table t2 as select 1 a; create function bug12329() returns int return (select a from t1); prepare stmt1 from 'select bug12329()'; execute stmt1; drop function bug12329; create function bug12329() returns int return (select a+100 from t2); select bug12329(); # Until we implement proper mechanism for invalidation of PS/SP when table # or SP's are changed the following statement will fail with 'Table ... was # not locked' error (this mechanism should be based on the new TDC). --error 1100 execute stmt1; deallocate prepare stmt1; drop function bug12329; drop table t1, t2; # # Bug#13514 "server crash when create a stored procedure before choose a # database" and Loading mysql-test/t/trigger.test +39 −0 Original line number Diff line number Diff line Loading @@ -875,3 +875,42 @@ drop function f1; drop view v1; drop table t1, t2, t3; --enable_parsing # # Test for bug #13399 "Crash when executing PS/SP which should activate # trigger which is now dropped". See also test for similar bug for stored # routines in sp-error.test (#12329). create table t1 (id int); create table t2 (id int); create trigger t1_bi before insert on t1 for each row insert into t2 values (new.id); prepare stmt1 from "insert into t1 values (10)"; create procedure p1() insert into t1 values (10); call p1(); # Actually it is enough to do FLUSH TABLES instead of DROP TRIGGER drop trigger t1_bi; # Server should not crash on these two statements execute stmt1; call p1(); deallocate prepare stmt1; drop procedure p1; # Let us test more complex situation when we alter trigger in such way that # it uses different set of tables (or simply add new trigger). create table t3 (id int); create trigger t1_bi after insert on t1 for each row insert into t2 values (new.id); prepare stmt1 from "insert into t1 values (10)"; create procedure p1() insert into t1 values (10); call p1(); # Altering trigger forcing it use different set of tables drop trigger t1_bi; create trigger t1_bi after insert on t1 for each row insert into t3 values (new.id); # Until we implement proper mechanism for invalidation of PS/SP when table # or SP's are changed these two statements will fail with 'Table ... was # not locked' error (this mechanism should be based on the new TDC). --error 1100 execute stmt1; --error 1100 call p1(); deallocate prepare stmt1; drop procedure p1; drop table t1, t2, t3; sql/ha_innodb.cc +27 −7 Original line number Diff line number Diff line Loading @@ -142,15 +142,16 @@ uint innobase_init_flags = 0; ulong innobase_cache_size = 0; ulong innobase_large_page_size = 0; /* The default values for the following, type long, start-up parameters are declared in mysqld.cc: */ /* The default values for the following, type long or longlong, start-up parameters are declared in mysqld.cc: */ long innobase_mirrored_log_groups, innobase_log_files_in_group, innobase_log_file_size, innobase_log_buffer_size, innobase_buffer_pool_awe_mem_mb, innobase_buffer_pool_size, innobase_additional_mem_pool_size, innobase_file_io_threads, innobase_lock_wait_timeout, innobase_force_recovery, innobase_open_files; innobase_log_buffer_size, innobase_buffer_pool_awe_mem_mb, innobase_additional_mem_pool_size, innobase_file_io_threads, innobase_lock_wait_timeout, innobase_force_recovery, innobase_open_files; longlong innobase_buffer_pool_size, innobase_log_file_size; /* The default values for the following char* start-up parameters are determined in innobase_init below: */ Loading Loading @@ -1210,6 +1211,25 @@ innobase_init(void) ut_a(DATA_MYSQL_TRUE_VARCHAR == (ulint)MYSQL_TYPE_VARCHAR); /* Check that values don't overflow on 32-bit systems. */ if (sizeof(ulint) == 4) { if (innobase_buffer_pool_size > UINT_MAX32) { sql_print_error( "innobase_buffer_pool_size can't be over 4GB" " on 32-bit systems"); DBUG_RETURN(0); } if (innobase_log_file_size > UINT_MAX32) { sql_print_error( "innobase_log_file_size can't be over 4GB" " on 32-bit systems"); DBUG_RETURN(0); } } os_innodb_umask = (ulint)my_umask; /* First calculate the default path for innodb_data_home_dir etc., Loading Loading
mysql-test/r/sp-error.result +18 −0 Original line number Diff line number Diff line Loading @@ -975,6 +975,24 @@ return 1; END | drop table t1| drop function bug_13627_f| drop function if exists bug12329; create table t1 as select 1 a; create table t2 as select 1 a; create function bug12329() returns int return (select a from t1); prepare stmt1 from 'select bug12329()'; execute stmt1; bug12329() 1 drop function bug12329; create function bug12329() returns int return (select a+100 from t2); select bug12329(); bug12329() 101 execute stmt1; ERROR HY000: Table 't2' was not locked with LOCK TABLES deallocate prepare stmt1; drop function bug12329; drop table t1, t2; create database mysqltest1; use mysqltest1; drop database mysqltest1; Loading
mysql-test/r/trigger.result +25 −0 Original line number Diff line number Diff line Loading @@ -738,3 +738,28 @@ f1 1 drop trigger t1_bi; drop tables t1, t2; create table t1 (id int); create table t2 (id int); create trigger t1_bi before insert on t1 for each row insert into t2 values (new.id); prepare stmt1 from "insert into t1 values (10)"; create procedure p1() insert into t1 values (10); call p1(); drop trigger t1_bi; execute stmt1; call p1(); deallocate prepare stmt1; drop procedure p1; create table t3 (id int); create trigger t1_bi after insert on t1 for each row insert into t2 values (new.id); prepare stmt1 from "insert into t1 values (10)"; create procedure p1() insert into t1 values (10); call p1(); drop trigger t1_bi; create trigger t1_bi after insert on t1 for each row insert into t3 values (new.id); execute stmt1; ERROR HY000: Table 't3' was not locked with LOCK TABLES call p1(); ERROR HY000: Table 't3' was not locked with LOCK TABLES deallocate prepare stmt1; drop procedure p1; drop table t1, t2, t3;
mysql-test/t/sp-error.test +22 −0 Original line number Diff line number Diff line Loading @@ -1403,6 +1403,28 @@ drop function bug_13627_f| delimiter ;| # BUG#12329: "Bogus error msg when executing PS with stored procedure after # SP was re-created". See also test for related bug#13399 in trigger.test --disable_warnings drop function if exists bug12329; --enable_warnings create table t1 as select 1 a; create table t2 as select 1 a; create function bug12329() returns int return (select a from t1); prepare stmt1 from 'select bug12329()'; execute stmt1; drop function bug12329; create function bug12329() returns int return (select a+100 from t2); select bug12329(); # Until we implement proper mechanism for invalidation of PS/SP when table # or SP's are changed the following statement will fail with 'Table ... was # not locked' error (this mechanism should be based on the new TDC). --error 1100 execute stmt1; deallocate prepare stmt1; drop function bug12329; drop table t1, t2; # # Bug#13514 "server crash when create a stored procedure before choose a # database" and Loading
mysql-test/t/trigger.test +39 −0 Original line number Diff line number Diff line Loading @@ -875,3 +875,42 @@ drop function f1; drop view v1; drop table t1, t2, t3; --enable_parsing # # Test for bug #13399 "Crash when executing PS/SP which should activate # trigger which is now dropped". See also test for similar bug for stored # routines in sp-error.test (#12329). create table t1 (id int); create table t2 (id int); create trigger t1_bi before insert on t1 for each row insert into t2 values (new.id); prepare stmt1 from "insert into t1 values (10)"; create procedure p1() insert into t1 values (10); call p1(); # Actually it is enough to do FLUSH TABLES instead of DROP TRIGGER drop trigger t1_bi; # Server should not crash on these two statements execute stmt1; call p1(); deallocate prepare stmt1; drop procedure p1; # Let us test more complex situation when we alter trigger in such way that # it uses different set of tables (or simply add new trigger). create table t3 (id int); create trigger t1_bi after insert on t1 for each row insert into t2 values (new.id); prepare stmt1 from "insert into t1 values (10)"; create procedure p1() insert into t1 values (10); call p1(); # Altering trigger forcing it use different set of tables drop trigger t1_bi; create trigger t1_bi after insert on t1 for each row insert into t3 values (new.id); # Until we implement proper mechanism for invalidation of PS/SP when table # or SP's are changed these two statements will fail with 'Table ... was # not locked' error (this mechanism should be based on the new TDC). --error 1100 execute stmt1; --error 1100 call p1(); deallocate prepare stmt1; drop procedure p1; drop table t1, t2, t3;
sql/ha_innodb.cc +27 −7 Original line number Diff line number Diff line Loading @@ -142,15 +142,16 @@ uint innobase_init_flags = 0; ulong innobase_cache_size = 0; ulong innobase_large_page_size = 0; /* The default values for the following, type long, start-up parameters are declared in mysqld.cc: */ /* The default values for the following, type long or longlong, start-up parameters are declared in mysqld.cc: */ long innobase_mirrored_log_groups, innobase_log_files_in_group, innobase_log_file_size, innobase_log_buffer_size, innobase_buffer_pool_awe_mem_mb, innobase_buffer_pool_size, innobase_additional_mem_pool_size, innobase_file_io_threads, innobase_lock_wait_timeout, innobase_force_recovery, innobase_open_files; innobase_log_buffer_size, innobase_buffer_pool_awe_mem_mb, innobase_additional_mem_pool_size, innobase_file_io_threads, innobase_lock_wait_timeout, innobase_force_recovery, innobase_open_files; longlong innobase_buffer_pool_size, innobase_log_file_size; /* The default values for the following char* start-up parameters are determined in innobase_init below: */ Loading Loading @@ -1210,6 +1211,25 @@ innobase_init(void) ut_a(DATA_MYSQL_TRUE_VARCHAR == (ulint)MYSQL_TYPE_VARCHAR); /* Check that values don't overflow on 32-bit systems. */ if (sizeof(ulint) == 4) { if (innobase_buffer_pool_size > UINT_MAX32) { sql_print_error( "innobase_buffer_pool_size can't be over 4GB" " on 32-bit systems"); DBUG_RETURN(0); } if (innobase_log_file_size > UINT_MAX32) { sql_print_error( "innobase_log_file_size can't be over 4GB" " on 32-bit systems"); DBUG_RETURN(0); } } os_innodb_umask = (ulint)my_umask; /* First calculate the default path for innodb_data_home_dir etc., Loading