mirror of
https://github.com/MariaDB/server.git
synced 2025-07-07 06:01:31 +03:00
Merge gleb.loc:/home/uchum/work/bk/5.0-opt-27352
into gleb.loc:/home/uchum/work/bk/5.0-opt
This commit is contained in:
@ -3995,4 +3995,14 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE f1 index inx inx 10 NULL 7 Using where; Using index
|
1 SIMPLE f1 index inx inx 10 NULL 7 Using where; Using index
|
||||||
1 SIMPLE f2 ref inx inx 5 test.f1.b 1 Using where; Using index
|
1 SIMPLE f2 ref inx inx 5 test.f1.b 1 Using where; Using index
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (c1 INT, c2 INT);
|
||||||
|
INSERT INTO t1 VALUES (1,11), (2,22), (2,22);
|
||||||
|
EXPLAIN SELECT c1 FROM t1 WHERE (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT COUNT(c2)))))))))))))))))))))))))))))))) > 0;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where
|
||||||
|
31 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
|
32 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
|
EXPLAIN SELECT c1 FROM t1 WHERE (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT COUNT(c2))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) > 0;
|
||||||
|
ERROR HY000: Too high level of nesting for select
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -3370,4 +3370,34 @@ EXPLAIN SELECT COUNT(*) FROM t1 f1 INNER JOIN t1 f2
|
|||||||
WHERE 1 AND f1.b NOT IN (100,2232,3343,51111);
|
WHERE 1 AND f1.b NOT IN (100,2232,3343,51111);
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #27352: Incorrect result of nested selects instead of error reporting
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (c1 INT, c2 INT);
|
||||||
|
INSERT INTO t1 VALUES (1,11), (2,22), (2,22);
|
||||||
|
|
||||||
|
let $n= 31;
|
||||||
|
let $q= COUNT(c2);
|
||||||
|
while ($n)
|
||||||
|
{
|
||||||
|
let $q= (SELECT $q);
|
||||||
|
dec $n;
|
||||||
|
}
|
||||||
|
--disable_warnings
|
||||||
|
eval EXPLAIN SELECT c1 FROM t1 WHERE $q > 0;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
let $n= 64;
|
||||||
|
let $q= COUNT(c2);
|
||||||
|
while ($n)
|
||||||
|
{
|
||||||
|
let $q= (SELECT $q);
|
||||||
|
dec $n;
|
||||||
|
}
|
||||||
|
--error ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT
|
||||||
|
eval EXPLAIN SELECT c1 FROM t1 WHERE $q > 0;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
@ -5635,3 +5635,5 @@ ER_NON_INSERTABLE_TABLE
|
|||||||
eng "The target table %-.100s of the %s is not insertable-into"
|
eng "The target table %-.100s of the %s is not insertable-into"
|
||||||
ER_ADMIN_WRONG_MRG_TABLE
|
ER_ADMIN_WRONG_MRG_TABLE
|
||||||
eng "Table '%-.64s' is differently defined or of non-MyISAM type or doesn't exist"
|
eng "Table '%-.64s' is differently defined or of non-MyISAM type or doesn't exist"
|
||||||
|
ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT
|
||||||
|
eng "Too high level of nesting for select"
|
||||||
|
@ -5891,6 +5891,11 @@ mysql_new_select(LEX *lex, bool move_down)
|
|||||||
select_lex->init_query();
|
select_lex->init_query();
|
||||||
select_lex->init_select();
|
select_lex->init_select();
|
||||||
lex->nest_level++;
|
lex->nest_level++;
|
||||||
|
if (lex->nest_level > (int) MAX_SELECT_NESTING)
|
||||||
|
{
|
||||||
|
my_error(ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT,MYF(0),MAX_SELECT_NESTING);
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
select_lex->nest_level= lex->nest_level;
|
select_lex->nest_level= lex->nest_level;
|
||||||
/*
|
/*
|
||||||
Don't evaluate this subquery during statement prepare even if
|
Don't evaluate this subquery during statement prepare even if
|
||||||
|
@ -81,6 +81,8 @@
|
|||||||
RAND_TABLE_BIT)
|
RAND_TABLE_BIT)
|
||||||
#define MAX_FIELDS 4096 /* Limit in the .frm file */
|
#define MAX_FIELDS 4096 /* Limit in the .frm file */
|
||||||
|
|
||||||
|
#define MAX_SELECT_NESTING (sizeof(nesting_map)*8-1)
|
||||||
|
|
||||||
#define MAX_SORT_MEMORY (2048*1024-MALLOC_OVERHEAD)
|
#define MAX_SORT_MEMORY (2048*1024-MALLOC_OVERHEAD)
|
||||||
#define MIN_SORT_MEMORY (32*1024-MALLOC_OVERHEAD)
|
#define MIN_SORT_MEMORY (32*1024-MALLOC_OVERHEAD)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user