diff --git a/configure.in b/configure.in index 4aef78e5b18..5b3cfad6105 100644 --- a/configure.in +++ b/configure.in @@ -7,7 +7,7 @@ AC_INIT(sql/mysqld.cc) AC_CANONICAL_SYSTEM # The Docs Makefile.am parses this line! # remember to also change ndb version below and update version.c in ndb -AM_INIT_AUTOMAKE(mysql, 5.0.12-beta) +AM_INIT_AUTOMAKE(mysql, 5.0.13-beta) AM_CONFIG_HEADER(config.h) PROTOCOL_VERSION=10 @@ -18,7 +18,7 @@ SHARED_LIB_VERSION=15:0:0 # ndb version NDB_VERSION_MAJOR=5 NDB_VERSION_MINOR=0 -NDB_VERSION_BUILD=12 +NDB_VERSION_BUILD=13 NDB_VERSION_STATUS="beta" # Set all version vars based on $VERSION. How do we do this more elegant ? diff --git a/mysql-test/r/sp.result b/mysql-test/r/sp.result index d1d41035475..423cd546a84 100644 --- a/mysql-test/r/sp.result +++ b/mysql-test/r/sp.result @@ -3101,16 +3101,16 @@ call p_bug11247(10)| drop function f_bug11247| drop procedure p_bug11247| drop procedure if exists bug12168| -drop table if exists t1, t2| -create table t1 (a int)| -insert into t1 values (1),(2),(3),(4)| -create table t2 (a int)| +drop table if exists t3, t4| +create table t3 (a int)| +insert into t3 values (1),(2),(3),(4)| +create table t4 (a int)| create procedure bug12168(arg1 char(1)) begin declare b, c integer; if arg1 = 'a' then begin -declare c1 cursor for select a from t1 where a % 2; +declare c1 cursor for select a from t3 where a % 2; declare continue handler for not found set b = 1; set b = 0; open c1; @@ -3119,14 +3119,14 @@ fetch c1 into c; if (b = 1) then leave c1_repeat; end if; -insert into t2 values (c); +insert into t4 values (c); until b = 1 end repeat; end; end if; if arg1 = 'b' then begin -declare c2 cursor for select a from t1 where not a % 2; +declare c2 cursor for select a from t3 where not a % 2; declare continue handler for not found set b = 1; set b = 0; open c2; @@ -3135,35 +3135,36 @@ fetch c2 into c; if (b = 1) then leave c2_repeat; end if; -insert into t2 values (c); +insert into t4 values (c); until b = 1 end repeat; end; end if; end| call bug12168('a')| -select * from t2| +select * from t4| a 1 3 -truncate t2| +truncate t4| call bug12168('b')| -select * from t2| +select * from t4| a 2 4 -truncate t2| +truncate t4| call bug12168('a')| -select * from t2| +select * from t4| a 1 3 -truncate t2| +truncate t4| call bug12168('b')| -select * from t2| +select * from t4| a 2 4 -truncate t2| +truncate t4| +drop table t3, t4| drop procedure if exists bug12168| drop table t1,t2; diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test index f3e7c3e07a0..abff597405b 100644 --- a/mysql-test/t/sp.test +++ b/mysql-test/t/sp.test @@ -3934,20 +3934,20 @@ drop procedure p_bug11247| # --disable_warnings drop procedure if exists bug12168| -drop table if exists t1, t2| +drop table if exists t3, t4| --enable_warnings -create table t1 (a int)| -insert into t1 values (1),(2),(3),(4)| +create table t3 (a int)| +insert into t3 values (1),(2),(3),(4)| -create table t2 (a int)| +create table t4 (a int)| create procedure bug12168(arg1 char(1)) begin declare b, c integer; if arg1 = 'a' then begin - declare c1 cursor for select a from t1 where a % 2; + declare c1 cursor for select a from t3 where a % 2; declare continue handler for not found set b = 1; set b = 0; open c1; @@ -3957,14 +3957,14 @@ begin leave c1_repeat; end if; - insert into t2 values (c); + insert into t4 values (c); until b = 1 end repeat; end; end if; if arg1 = 'b' then begin - declare c2 cursor for select a from t1 where not a % 2; + declare c2 cursor for select a from t3 where not a % 2; declare continue handler for not found set b = 1; set b = 0; open c2; @@ -3974,7 +3974,7 @@ begin leave c2_repeat; end if; - insert into t2 values (c); + insert into t4 values (c); until b = 1 end repeat; end; @@ -3982,17 +3982,18 @@ begin end| call bug12168('a')| -select * from t2| -truncate t2| +select * from t4| +truncate t4| call bug12168('b')| -select * from t2| -truncate t2| +select * from t4| +truncate t4| call bug12168('a')| -select * from t2| -truncate t2| +select * from t4| +truncate t4| call bug12168('b')| -select * from t2| -truncate t2| +select * from t4| +truncate t4| +drop table t3, t4| drop procedure if exists bug12168| # diff --git a/sql/log_event.cc b/sql/log_event.cc index 9e8c0695b90..c0a06bf5dab 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -1328,14 +1328,19 @@ Query_log_event::Query_log_event(const char* buf, uint event_len, } } +#if !defined(MYSQL_CLIENT) && defined(HAVE_QUERY_CACHE) if (!(start= data_buf = (char*) my_malloc(catalog_len + 1 + time_zone_len + 1 + - data_len + 1 -#if !defined(MYSQL_CLIENT) && defined(HAVE_QUERY_CACHE) - + QUERY_CACHE_FLAGS_SIZE + - db_len + 1 + data_len + 1 + + QUERY_CACHE_FLAGS_SIZE + + db_len + 1, + MYF(MY_WME)))) +#else + if (!(start= data_buf = (char*) my_malloc(catalog_len + 1 + + time_zone_len + 1 + + data_len + 1, + MYF(MY_WME)))) #endif - , MYF(MY_WME)))) DBUG_VOID_RETURN; if (catalog_len) // If catalog is given { diff --git a/sql/sql_base.cc b/sql/sql_base.cc index a7f5fa3ce03..b2ed392d1ac 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -3763,8 +3763,13 @@ store_top_level_join_columns(THD *thd, TABLE_LIST *table_ref, TABLE_LIST *left_neighbor, TABLE_LIST *right_neighbor) { + Query_arena *arena, backup; + bool result= TRUE; + DBUG_ENTER("store_top_level_join_columns"); + arena= thd->change_arena_if_needed(&backup); + /* Call the procedure recursively for each nested table reference. */ if (table_ref->nested_join) { @@ -3797,7 +3802,7 @@ store_top_level_join_columns(THD *thd, TABLE_LIST *table_ref, if (cur_table_ref->nested_join && store_top_level_join_columns(thd, cur_table_ref, cur_left_neighbor, cur_right_neighbor)) - DBUG_RETURN(TRUE); + goto err; cur_right_neighbor= cur_table_ref; } } @@ -3829,7 +3834,7 @@ store_top_level_join_columns(THD *thd, TABLE_LIST *table_ref, swap_variables(TABLE_LIST*, table_ref_1, table_ref_2); if (mark_common_columns(thd, table_ref_1, table_ref_2, using_fields, &found_using_fields)) - DBUG_RETURN(TRUE); + goto err; /* Swap the join operands back, so that we pick the columns of the second @@ -3841,7 +3846,7 @@ store_top_level_join_columns(THD *thd, TABLE_LIST *table_ref, if (store_natural_using_join_columns(thd, table_ref, table_ref_1, table_ref_2, using_fields, found_using_fields)) - DBUG_RETURN(TRUE); + goto err; /* Change NATURAL JOIN to JOIN ... ON. We do this for both operands @@ -3872,7 +3877,12 @@ store_top_level_join_columns(THD *thd, TABLE_LIST *table_ref, else table_ref->next_name_resolution_table= NULL; } - DBUG_RETURN(FALSE); + result= FALSE; /* All is OK. */ + +err: + if (arena) + thd->restore_backup_item_arena(arena, &backup); + DBUG_RETURN(result); }