Commit 806482c7 authored by unknown's avatar unknown
Browse files

Merge rurik.mysql.com:/home/igor/mysql-5.0

into  rurik.mysql.com:/home/igor/dev/mysql-5.0-2


sql/sql_prepare.cc:
  Auto merged
parents 2e4045e4 57ad6b20
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -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;
+25 −0
Original line number Diff line number Diff line
@@ -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;
+22 −0
Original line number Diff line number Diff line
@@ -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
+39 −0
Original line number Diff line number Diff line
@@ -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;
+27 −7
Original line number Diff line number Diff line
@@ -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: */
@@ -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