Commit b610c097 authored by igor@rurik.mysql.com's avatar igor@rurik.mysql.com

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

into rurik.mysql.com:/home/igor/dev/mysql-5.0-0
parents 4adc90bd 17d6c734
...@@ -7,7 +7,7 @@ AC_INIT(sql/mysqld.cc) ...@@ -7,7 +7,7 @@ AC_INIT(sql/mysqld.cc)
AC_CANONICAL_SYSTEM AC_CANONICAL_SYSTEM
# The Docs Makefile.am parses this line! # The Docs Makefile.am parses this line!
# remember to also change ndb version below and update version.c in ndb # 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) AM_CONFIG_HEADER(config.h)
PROTOCOL_VERSION=10 PROTOCOL_VERSION=10
...@@ -18,7 +18,7 @@ SHARED_LIB_VERSION=15:0:0 ...@@ -18,7 +18,7 @@ SHARED_LIB_VERSION=15:0:0
# ndb version # ndb version
NDB_VERSION_MAJOR=5 NDB_VERSION_MAJOR=5
NDB_VERSION_MINOR=0 NDB_VERSION_MINOR=0
NDB_VERSION_BUILD=12 NDB_VERSION_BUILD=13
NDB_VERSION_STATUS="beta" NDB_VERSION_STATUS="beta"
# Set all version vars based on $VERSION. How do we do this more elegant ? # Set all version vars based on $VERSION. How do we do this more elegant ?
......
...@@ -3101,16 +3101,16 @@ call p_bug11247(10)| ...@@ -3101,16 +3101,16 @@ call p_bug11247(10)|
drop function f_bug11247| drop function f_bug11247|
drop procedure p_bug11247| drop procedure p_bug11247|
drop procedure if exists bug12168| drop procedure if exists bug12168|
drop table if exists t1, t2| drop table if exists t3, t4|
create table t1 (a int)| create table t3 (a int)|
insert into t1 values (1),(2),(3),(4)| insert into t3 values (1),(2),(3),(4)|
create table t2 (a int)| create table t4 (a int)|
create procedure bug12168(arg1 char(1)) create procedure bug12168(arg1 char(1))
begin begin
declare b, c integer; declare b, c integer;
if arg1 = 'a' then if arg1 = 'a' then
begin 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; declare continue handler for not found set b = 1;
set b = 0; set b = 0;
open c1; open c1;
...@@ -3119,14 +3119,14 @@ fetch c1 into c; ...@@ -3119,14 +3119,14 @@ fetch c1 into c;
if (b = 1) then if (b = 1) then
leave c1_repeat; leave c1_repeat;
end if; end if;
insert into t2 values (c); insert into t4 values (c);
until b = 1 until b = 1
end repeat; end repeat;
end; end;
end if; end if;
if arg1 = 'b' then if arg1 = 'b' then
begin 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; declare continue handler for not found set b = 1;
set b = 0; set b = 0;
open c2; open c2;
...@@ -3135,35 +3135,36 @@ fetch c2 into c; ...@@ -3135,35 +3135,36 @@ fetch c2 into c;
if (b = 1) then if (b = 1) then
leave c2_repeat; leave c2_repeat;
end if; end if;
insert into t2 values (c); insert into t4 values (c);
until b = 1 until b = 1
end repeat; end repeat;
end; end;
end if; end if;
end| end|
call bug12168('a')| call bug12168('a')|
select * from t2| select * from t4|
a a
1 1
3 3
truncate t2| truncate t4|
call bug12168('b')| call bug12168('b')|
select * from t2| select * from t4|
a a
2 2
4 4
truncate t2| truncate t4|
call bug12168('a')| call bug12168('a')|
select * from t2| select * from t4|
a a
1 1
3 3
truncate t2| truncate t4|
call bug12168('b')| call bug12168('b')|
select * from t2| select * from t4|
a a
2 2
4 4
truncate t2| truncate t4|
drop table t3, t4|
drop procedure if exists bug12168| drop procedure if exists bug12168|
drop table t1,t2; drop table t1,t2;
...@@ -3934,20 +3934,20 @@ drop procedure p_bug11247| ...@@ -3934,20 +3934,20 @@ drop procedure p_bug11247|
# #
--disable_warnings --disable_warnings
drop procedure if exists bug12168| drop procedure if exists bug12168|
drop table if exists t1, t2| drop table if exists t3, t4|
--enable_warnings --enable_warnings
create table t1 (a int)| create table t3 (a int)|
insert into t1 values (1),(2),(3),(4)| insert into t3 values (1),(2),(3),(4)|
create table t2 (a int)| create table t4 (a int)|
create procedure bug12168(arg1 char(1)) create procedure bug12168(arg1 char(1))
begin begin
declare b, c integer; declare b, c integer;
if arg1 = 'a' then if arg1 = 'a' then
begin 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; declare continue handler for not found set b = 1;
set b = 0; set b = 0;
open c1; open c1;
...@@ -3957,14 +3957,14 @@ begin ...@@ -3957,14 +3957,14 @@ begin
leave c1_repeat; leave c1_repeat;
end if; end if;
insert into t2 values (c); insert into t4 values (c);
until b = 1 until b = 1
end repeat; end repeat;
end; end;
end if; end if;
if arg1 = 'b' then if arg1 = 'b' then
begin 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; declare continue handler for not found set b = 1;
set b = 0; set b = 0;
open c2; open c2;
...@@ -3974,7 +3974,7 @@ begin ...@@ -3974,7 +3974,7 @@ begin
leave c2_repeat; leave c2_repeat;
end if; end if;
insert into t2 values (c); insert into t4 values (c);
until b = 1 until b = 1
end repeat; end repeat;
end; end;
...@@ -3982,17 +3982,18 @@ begin ...@@ -3982,17 +3982,18 @@ begin
end| end|
call bug12168('a')| call bug12168('a')|
select * from t2| select * from t4|
truncate t2| truncate t4|
call bug12168('b')| call bug12168('b')|
select * from t2| select * from t4|
truncate t2| truncate t4|
call bug12168('a')| call bug12168('a')|
select * from t2| select * from t4|
truncate t2| truncate t4|
call bug12168('b')| call bug12168('b')|
select * from t2| select * from t4|
truncate t2| truncate t4|
drop table t3, t4|
drop procedure if exists bug12168| drop procedure if exists bug12168|
# #
......
...@@ -1328,14 +1328,19 @@ Query_log_event::Query_log_event(const char* buf, uint event_len, ...@@ -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 + if (!(start= data_buf = (char*) my_malloc(catalog_len + 1 +
time_zone_len + 1 + time_zone_len + 1 +
data_len + 1 data_len + 1 +
#if !defined(MYSQL_CLIENT) && defined(HAVE_QUERY_CACHE) QUERY_CACHE_FLAGS_SIZE +
+ QUERY_CACHE_FLAGS_SIZE + db_len + 1,
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 #endif
, MYF(MY_WME))))
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
if (catalog_len) // If catalog is given if (catalog_len) // If catalog is given
{ {
......
...@@ -3763,8 +3763,13 @@ store_top_level_join_columns(THD *thd, TABLE_LIST *table_ref, ...@@ -3763,8 +3763,13 @@ store_top_level_join_columns(THD *thd, TABLE_LIST *table_ref,
TABLE_LIST *left_neighbor, TABLE_LIST *left_neighbor,
TABLE_LIST *right_neighbor) TABLE_LIST *right_neighbor)
{ {
Query_arena *arena, backup;
bool result= TRUE;
DBUG_ENTER("store_top_level_join_columns"); DBUG_ENTER("store_top_level_join_columns");
arena= thd->change_arena_if_needed(&backup);
/* Call the procedure recursively for each nested table reference. */ /* Call the procedure recursively for each nested table reference. */
if (table_ref->nested_join) if (table_ref->nested_join)
{ {
...@@ -3797,7 +3802,7 @@ store_top_level_join_columns(THD *thd, TABLE_LIST *table_ref, ...@@ -3797,7 +3802,7 @@ store_top_level_join_columns(THD *thd, TABLE_LIST *table_ref,
if (cur_table_ref->nested_join && if (cur_table_ref->nested_join &&
store_top_level_join_columns(thd, cur_table_ref, store_top_level_join_columns(thd, cur_table_ref,
cur_left_neighbor, cur_right_neighbor)) cur_left_neighbor, cur_right_neighbor))
DBUG_RETURN(TRUE); goto err;
cur_right_neighbor= cur_table_ref; cur_right_neighbor= cur_table_ref;
} }
} }
...@@ -3829,7 +3834,7 @@ store_top_level_join_columns(THD *thd, TABLE_LIST *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); swap_variables(TABLE_LIST*, table_ref_1, table_ref_2);
if (mark_common_columns(thd, table_ref_1, table_ref_2, if (mark_common_columns(thd, table_ref_1, table_ref_2,
using_fields, &found_using_fields)) using_fields, &found_using_fields))
DBUG_RETURN(TRUE); goto err;
/* /*
Swap the join operands back, so that we pick the columns of the second 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, ...@@ -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, if (store_natural_using_join_columns(thd, table_ref, table_ref_1,
table_ref_2, using_fields, table_ref_2, using_fields,
found_using_fields)) found_using_fields))
DBUG_RETURN(TRUE); goto err;
/* /*
Change NATURAL JOIN to JOIN ... ON. We do this for both operands 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, ...@@ -3872,7 +3877,12 @@ store_top_level_join_columns(THD *thd, TABLE_LIST *table_ref,
else else
table_ref->next_name_resolution_table= NULL; 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);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment