From: Alexey Kopytov
Date: March 7 2008 6:14pm
Subject: bk commit into 5.1 tree (kaa:1.2585) BUG#34650
ListArchive: http://lists.mysql.com/commits/43613
XBug: 34650
MessageId: <20080307181438.84EA0373B@kaamos.local>
Below is the list of changes that have just been committed into a local
5.1 repository of kaa. When kaa does a push these changes
will be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installingsourcetree.html
ChangeSet@stripped, 20080307 21:14:34+03:00, kaa@kaamos.(none) +6 0
Fix for bug #34650: Test suite without cluster fails on Mac OS X
Leopard.
The change_user test failed because results of some statements
depended on platform and server build flags.
subselect_notembedded failure was a result of a bad merge from 5.0.
Fixed the corresponding test cases.
mysqltest/r/change_user.result@stripped, 20080307 21:14:33+03:00, kaa@kaamos.(none) +2 2
Fixed the test case.
mysqltest/r/subselect.result@stripped, 20080307 21:14:33+03:00, kaa@kaamos.(none) +0 35
Fixed the test case.
mysqltest/r/subselect_notembedded.result@stripped, 20080307 21:14:33+03:00, kaa@kaamos.(none) +32 97
Fixed the test case.
mysqltest/t/change_user.test@stripped, 20080307 21:14:33+03:00, kaa@kaamos.(none) +7 0
Fixed the test case.
mysqltest/t/subselect.test@stripped, 20080307 21:14:33+03:00, kaa@kaamos.(none) +0 46
Fixed the test case.
mysqltest/t/subselect_notembedded.test@stripped, 20080307 21:14:33+03:00, kaa@kaamos.(none) +39 87
Fixed the test case.
diff Nrup a/mysqltest/r/change_user.result b/mysqltest/r/change_user.result
 a/mysqltest/r/change_user.result 20071210 10:12:40 +03:00
+++ b/mysqltest/r/change_user.result 20080307 21:14:33 +03:00
@@ 4,14 +4,14 @@ SELECT @@session.sql_big_selects;
1
SELECT @@global.max_join_size;
@@global.max_join_size
18446744073709551615
+HA_POS_ERROR
change_user
SELECT @@session.sql_big_selects;
@@session.sql_big_selects
1
SELECT @@global.max_join_size;
@@global.max_join_size
18446744073709551615
+HA_POS_ERROR
SET @@global.max_join_size = 10000;
SET @@session.max_join_size = default;
change_user
diff Nrup a/mysqltest/r/subselect.result b/mysqltest/r/subselect.result
 a/mysqltest/r/subselect.result 20080228 17:29:13 +03:00
+++ b/mysqltest/r/subselect.result 20080307 21:14:33 +03:00
@@ 4155,41 +4155,6 @@ SELECT ((a1,a2) IN (SELECT * FROM t2 WHE
0
0
DROP TABLE t1, t2;
create table t1(a int,b int,key(a),key(b));
insert into t1(a,b) values (1,2),(2,1),(2,3),(3,4),(5,4),(5,5),
(6,7),(7,4),(5,3);
5
4
3
2
1
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
drop table t1;
CREATE TABLE t1 (s1 BINARY(5), s2 VARBINARY(5));
INSERT INTO t1 VALUES (0x41,0x41), (0x42,0x42), (0x43,0x43);
SELECT s1, s2 FROM t1 WHERE s2 IN (SELECT s1 FROM t1);
diff Nrup a/mysqltest/r/subselect_notembedded.result b/mysqltest/r/subselect_notembedded.result
 a/mysqltest/r/subselect_notembedded.result 20071126 22:21:29 +03:00
+++ b/mysqltest/r/subselect_notembedded.result 20080307 21:14:33 +03:00
@@ 4,101 +4,36 @@ purge master logs before adddate(current
create table t1(a int,b int,key(a),key(b));
insert into t1(a,b) values (1,2),(2,1),(2,3),(3,4),(5,4),(5,5),
(6,7),(7,4),(5,3);
select sum(a),a from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1
)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1)
group by a;
sum(a) a
select sum(a),a from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1)
group by a;
ERROR HY000: Thread stack overrun detected
explain select sum(a),a from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1
)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1)
group by a;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 index a a 5 NULL 9 Using where; Using index
2 SUBQUERY t1 index a b 5 NULL 9 Using where; Using filesort
3 SUBQUERY t1 index a b 5 NULL 9 Using where; Using filesort
4 SUBQUERY t1 index a b 5 NULL 9 Using where; Using filesort
5 SUBQUERY t1 index a b 5 NULL 9 Using where; Using filesort
6 SUBQUERY t1 index a b 5 NULL 9 Using where; Using filesort
7 SUBQUERY t1 index a b 5 NULL 9 Using where; Using filesort
8 SUBQUERY t1 index a b 5 NULL 9 Using where; Using filesort
9 SUBQUERY t1 index a b 5 NULL 9 Using where; Using filesort
10 SUBQUERY t1 index a b 5 NULL 9 Using where; Using filesort
11 SUBQUERY t1 index a b 5 NULL 9 Using where; Using filesort
12 SUBQUERY t1 range a a 5 NULL 1 Using where; Using temporary; Using filesort
13 SUBQUERY t1 index NULL a 5 NULL 9 Using index
explain select sum(a),a from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
select sum(a) from t1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1
)group by b limit 1)group by b limit 1)group by b limit 1)
group by a;
ERROR HY000: Thread stack overrun detected
+5
+4
+3
+2
+1
+26
+25
+24
+23
+22
+21
+20
+19
+18
+17
+16
+15
+14
+13
+12
+11
+10
+9
+8
+7
+6
+5
+4
+3
+2
+1
drop table t1;
+End of 5.1 tests
diff Nrup a/mysqltest/t/change_user.test b/mysqltest/t/change_user.test
 a/mysqltest/t/change_user.test 20071017 23:43:26 +04:00
+++ b/mysqltest/t/change_user.test 20080307 21:14:33 +03:00
@@ 4,17 +4,24 @@
echo Bug#20023
SELECT @@session.sql_big_selects;
+# The exact value depends on the server build flags
+replace_result 4294967295 HA_POS_ERROR 18446744073709551615 HA_POS_ERROR
SELECT @@global.max_join_size;
echo change_user
change_user
SELECT @@session.sql_big_selects;
+# The exact value depends on the server build flags
+replace_result 4294967295 HA_POS_ERROR 18446744073709551615 HA_POS_ERROR
SELECT @@global.max_join_size;
SET @@global.max_join_size = 10000;
SET @@session.max_join_size = default;
echo change_user
change_user
SELECT @@session.sql_big_selects;
+# May produce a warning depending on server build flags
+disable_warnings
SET @@global.max_join_size = 1;
+enable_warnings
SET @@session.max_join_size = default;
echo change_user
change_user
diff Nrup a/mysqltest/t/subselect.test b/mysqltest/t/subselect.test
 a/mysqltest/t/subselect.test 20080228 16:45:52 +03:00
+++ b/mysqltest/t/subselect.test 20080307 21:14:33 +03:00
@@ 3016,52 +3016,6 @@ SELECT ((a1,a2) IN (SELECT * FROM t2 WHE
DROP TABLE t1, t2;
#
# Bug31048: Many nested subqueries may cause server crash.
#
create table t1(a int,b int,key(a),key(b));
insert into t1(a,b) values (1,2),(2,1),(2,3),(3,4),(5,4),(5,5),
 (6,7),(7,4),(5,3);

let $nesting= 26;
let $should_work_nesting= 5;
let $start= select sum(a),a from t1 where a> ( select sum(a) from t1 ;
let $end= )group by a ;
let $start_app= where a> ( select sum(a) from t1 ;
let $end_pre= )group by b limit 1 ;

disable_result_log
disable_query_log
# At least 4 level nesting should work without errors
while ($should_work_nesting)
{
echo $should_work_nesting
 eval $start $end;
 eval explain $start $end;
 let $start= $start
 $start_app;
 let $end= $end_pre
 $end;
 dec $should_work_nesting;
}
# Other may fail with the 'stack overrun error'
while ($nesting)
{
echo $nesting
error 0,1436
 eval $start $end;
error 0,1436
 eval explain $start $end;
 let $start= $start
 $start_app;
 let $end= $end_pre
 $end;
 dec $nesting;
}
enable_result_log
enable_query_log
drop table t1;

#
# Bug #28076: inconsistent binary/varbinary comparison
#
diff Nrup a/mysqltest/t/subselect_notembedded.test b/mysqltest/t/subselect_notembedded.test
 a/mysqltest/t/subselect_notembedded.test 20071126 22:21:36 +03:00
+++ b/mysqltest/t/subselect_notembedded.test 20080307 21:14:33 +03:00
@@ 14,92 +14,44 @@ purge master logs before adddate(current
create table t1(a int,b int,key(a),key(b));
insert into t1(a,b) values (1,2),(2,1),(2,3),(3,4),(5,4),(5,5),
(6,7),(7,4),(5,3);
# test for the stack overflow bug
select sum(a),a from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1
 )group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1)
group by a;
replace_regex /overrun.*$/overrun detected/
error 1436
select sum(a),a from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1)
group by a;
# test for the memory consumption & subquery slowness bug
explain select sum(a),a from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1
 )group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1)
group by a;
replace_regex /overrun.*$/overrun detected/
error 1436
explain select sum(a),a from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
 select sum(a) from t1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1
 )group by b limit 1)group by b limit 1)group by b limit 1)
group by a;
drop table t1;
+let $nesting= 26;
+let $should_work_nesting= 5;
+let $start= select sum(a),a from t1 where a> ( select sum(a) from t1 ;
+let $end= )group by a ;
+let $start_app= where a> ( select sum(a) from t1 ;
+let $end_pre= )group by b limit 1 ;
+
+disable_result_log
+disable_query_log
+# At least 4 level nesting should work without errors
+while ($should_work_nesting)
+{
+echo $should_work_nesting
+ eval $start $end;
+ eval explain $start $end;
+ let $start= $start
+ $start_app;
+ let $end= $end_pre
+ $end;
+ dec $should_work_nesting;
+}
+# Other may fail with the 'stack overrun error'
+while ($nesting)
+{
+echo $nesting
+error 0,1436
+ eval $start $end;
+error 0,1436
+ eval explain $start $end;
+ let $start= $start
+ $start_app;
+ let $end= $end_pre
+ $end;
+ dec $nesting;
+}
+enable_result_log
+enable_query_log
+drop table t1;
+echo End of 5.1 tests