mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into moonbone.local:/work/31048-bug-5.0-opt-mysql sql/item_subselect.cc: Auto merged mysql-test/r/subselect.result: Manual merge mysql-test/t/subselect.test: Manual merge
This commit is contained in:
@ -4139,6 +4139,110 @@ SELECT (SELECT SUM(t1.a) FROM t2 WHERE a=1) FROM t1;
|
|||||||
(SELECT SUM(t1.a) FROM t2 WHERE a=1)
|
(SELECT SUM(t1.a) FROM t2 WHERE a=1)
|
||||||
3
|
3
|
||||||
DROP TABLE t1,t2;
|
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);
|
||||||
|
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
|
||||||
|
)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;
|
||||||
|
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 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 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 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||||
|
3 SUBQUERY t1 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||||
|
4 SUBQUERY t1 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||||
|
5 SUBQUERY t1 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||||
|
6 SUBQUERY t1 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||||
|
7 SUBQUERY t1 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||||
|
8 SUBQUERY t1 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||||
|
9 SUBQUERY t1 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||||
|
10 SUBQUERY t1 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||||
|
11 SUBQUERY t1 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||||
|
12 SUBQUERY t1 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||||
|
13 SUBQUERY t1 range a a 5 NULL 1 Using where; Using temporary; Using filesort
|
||||||
|
14 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
|
||||||
|
drop table t1;
|
||||||
CREATE TABLE t1 (a1 INT, a2 INT);
|
CREATE TABLE t1 (a1 INT, a2 INT);
|
||||||
CREATE TABLE t2 (b1 INT, b2 INT);
|
CREATE TABLE t2 (b1 INT, b2 INT);
|
||||||
INSERT INTO t1 VALUES (100, 200);
|
INSERT INTO t1 VALUES (100, 200);
|
||||||
|
@ -2987,6 +2987,102 @@ SELECT (SELECT SUM(t1.a) FROM t2 WHERE a!=0) FROM t1;
|
|||||||
SELECT (SELECT SUM(t1.a) FROM t2 WHERE a=1) FROM t1;
|
SELECT (SELECT SUM(t1.a) FROM t2 WHERE a=1) FROM t1;
|
||||||
DROP TABLE t1,t2;
|
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);
|
||||||
|
# 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 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 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 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 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;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug #31884: Assertion + crash in subquery in the SELECT clause.
|
# Bug #31884: Assertion + crash in subquery in the SELECT clause.
|
||||||
#
|
#
|
||||||
|
@ -1800,7 +1800,9 @@ int subselect_single_select_engine::exec()
|
|||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (select_lex->uncacheable && executed)
|
if (select_lex->uncacheable &&
|
||||||
|
select_lex->uncacheable != UNCACHEABLE_EXPLAIN
|
||||||
|
&& executed)
|
||||||
{
|
{
|
||||||
if (join->reinit())
|
if (join->reinit())
|
||||||
{
|
{
|
||||||
|
@ -1978,12 +1978,18 @@ int SQL_SELECT::test_quick_select(THD *thd, key_map keys_to_use,
|
|||||||
keys_to_use.intersect(head->keys_in_use_for_query);
|
keys_to_use.intersect(head->keys_in_use_for_query);
|
||||||
if (!keys_to_use.is_clear_all())
|
if (!keys_to_use.is_clear_all())
|
||||||
{
|
{
|
||||||
|
#ifndef EMBEDDED_LIBRARY // Avoid compiler warning
|
||||||
|
char buff[STACK_BUFF_ALLOC];
|
||||||
|
#endif
|
||||||
MEM_ROOT alloc;
|
MEM_ROOT alloc;
|
||||||
SEL_TREE *tree= NULL;
|
SEL_TREE *tree= NULL;
|
||||||
KEY_PART *key_parts;
|
KEY_PART *key_parts;
|
||||||
KEY *key_info;
|
KEY *key_info;
|
||||||
PARAM param;
|
PARAM param;
|
||||||
|
|
||||||
|
if (check_stack_overrun(thd, STACK_MIN_SIZE, buff))
|
||||||
|
DBUG_RETURN(0); // Fatal error flag is set
|
||||||
|
|
||||||
/* set up parameter that is passed to all functions */
|
/* set up parameter that is passed to all functions */
|
||||||
param.thd= thd;
|
param.thd= thd;
|
||||||
param.baseflag=head->file->table_flags();
|
param.baseflag=head->file->table_flags();
|
||||||
|
Reference in New Issue
Block a user