mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge MDEV-415 -> 10.0-base.
This commit is contained in:
@@ -4,7 +4,7 @@ SET @old_debug= @@session.debug;
|
||||
#
|
||||
CREATE TABLE t1(f0 int auto_increment primary key, f1 int);
|
||||
INSERT INTO t1(f1) VALUES (0),(1),(2),(3),(4),(5);
|
||||
SET session debug_dbug= '+d,make_sort_keys_alloc_fail';
|
||||
SET session debug_dbug= '+d,alloc_sort_buffer_fail';
|
||||
CALL mtr.add_suppression("Out of sort memory");
|
||||
SELECT * FROM t1 ORDER BY f1 ASC, f0;
|
||||
ERROR HY001: Out of sort memory, consider increasing server sort buffer size
|
||||
|
@@ -2149,3 +2149,48 @@ f1 MIN(f2) MAX(f2)
|
||||
4 00:25:00 00:25:00
|
||||
DROP TABLE t1;
|
||||
#End of test#49771
|
||||
#
|
||||
# Bug #58782
|
||||
# Missing rows with SELECT .. WHERE .. IN subquery
|
||||
# with full GROUP BY and no aggr
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
pk INT NOT NULL,
|
||||
col_int_nokey INT,
|
||||
PRIMARY KEY (pk)
|
||||
);
|
||||
INSERT INTO t1 VALUES (10,7);
|
||||
INSERT INTO t1 VALUES (11,1);
|
||||
INSERT INTO t1 VALUES (12,5);
|
||||
INSERT INTO t1 VALUES (13,3);
|
||||
SELECT pk AS field1, col_int_nokey AS field2
|
||||
FROM t1
|
||||
WHERE col_int_nokey > 0
|
||||
GROUP BY field1, field2;
|
||||
field1 field2
|
||||
10 7
|
||||
11 1
|
||||
12 5
|
||||
13 3
|
||||
CREATE TABLE where_subselect
|
||||
SELECT pk AS field1, col_int_nokey AS field2
|
||||
FROM t1
|
||||
WHERE col_int_nokey > 0
|
||||
GROUP BY field1, field2
|
||||
;
|
||||
SELECT *
|
||||
FROM where_subselect
|
||||
WHERE (field1, field2) IN (
|
||||
SELECT pk AS field1, col_int_nokey AS field2
|
||||
FROM t1
|
||||
WHERE col_int_nokey > 0
|
||||
GROUP BY field1, field2
|
||||
);
|
||||
field1 field2
|
||||
10 7
|
||||
11 1
|
||||
12 5
|
||||
13 3
|
||||
DROP TABLE t1;
|
||||
DROP TABLE where_subselect;
|
||||
# End of Bug #58782
|
||||
|
@@ -1439,6 +1439,7 @@ CALL mtr.add_suppression("Out of sort memory");
|
||||
select * from t1 order by b;
|
||||
ERROR HY001: Out of sort memory, consider increasing server sort buffer size
|
||||
drop table t1;
|
||||
set session sort_buffer_size= 30000;
|
||||
#
|
||||
# Bug #39844: Query Crash Mysql Server 5.0.67
|
||||
#
|
||||
@@ -1533,6 +1534,890 @@ ppfcz1 DE ppfcz1 14 8 57.5
|
||||
ppfcz1 DE ppfcz1 14 9 59.5
|
||||
ppfcz1 DE ppfcz1 14 10 61.5
|
||||
DROP TABLE t1,t2,t3;
|
||||
#
|
||||
# WL#1393 - Optimizing filesort with small limit
|
||||
#
|
||||
CREATE TABLE t1(f0 int auto_increment primary key, f1 int, f2 varchar(200));
|
||||
INSERT INTO t1(f1, f2) VALUES
|
||||
(0,"0"),(1,"1"),(2,"2"),(3,"3"),(4,"4"),(5,"5"),
|
||||
(6,"6"),(7,"7"),(8,"8"),(9,"9"),(10,"10"),
|
||||
(11,"11"),(12,"12"),(13,"13"),(14,"14"),(15,"15"),
|
||||
(16,"16"),(17,"17"),(18,"18"),(19,"19"),(20,"20"),
|
||||
(21,"21"),(22,"22"),(23,"23"),(24,"24"),(25,"25"),
|
||||
(26,"26"),(27,"27"),(28,"28"),(29,"29"),(30,"30"),
|
||||
(31,"31"),(32,"32"),(33,"33"),(34,"34"),(35,"35"),
|
||||
(36,"36"),(37,"37"),(38,"38"),(39,"39"),(40,"40"),
|
||||
(41,"41"),(42,"42"),(43,"43"),(44,"44"),(45,"45"),
|
||||
(46,"46"),(47,"47"),(48,"48"),(49,"49"),(50,"50"),
|
||||
(51,"51"),(52,"52"),(53,"53"),(54,"54"),(55,"55"),
|
||||
(56,"56"),(57,"57"),(58,"58"),(59,"59"),(60,"60"),
|
||||
(61,"61"),(62,"62"),(63,"63"),(64,"64"),(65,"65"),
|
||||
(66,"66"),(67,"67"),(68,"68"),(69,"69"),(70,"70"),
|
||||
(71,"71"),(72,"72"),(73,"73"),(74,"74"),(75,"75"),
|
||||
(76,"76"),(77,"77"),(78,"78"),(79,"79"),(80,"80"),
|
||||
(81,"81"),(82,"82"),(83,"83"),(84,"84"),(85,"85"),
|
||||
(86,"86"),(87,"87"),(88,"88"),(89,"89"),(90,"90"),
|
||||
(91,"91"),(92,"92"),(93,"93"),(94,"94"),(95,"95"),
|
||||
(96,"96"),(97,"97"),(98,"98"),(99,"99");
|
||||
SELECT * FROM t1 ORDER BY f1 ASC, f0 LIMIT 100;
|
||||
f0 f1 f2
|
||||
1 0 0
|
||||
2 1 1
|
||||
3 2 2
|
||||
4 3 3
|
||||
5 4 4
|
||||
6 5 5
|
||||
7 6 6
|
||||
8 7 7
|
||||
9 8 8
|
||||
10 9 9
|
||||
11 10 10
|
||||
12 11 11
|
||||
13 12 12
|
||||
14 13 13
|
||||
15 14 14
|
||||
16 15 15
|
||||
17 16 16
|
||||
18 17 17
|
||||
19 18 18
|
||||
20 19 19
|
||||
21 20 20
|
||||
22 21 21
|
||||
23 22 22
|
||||
24 23 23
|
||||
25 24 24
|
||||
26 25 25
|
||||
27 26 26
|
||||
28 27 27
|
||||
29 28 28
|
||||
30 29 29
|
||||
31 30 30
|
||||
32 31 31
|
||||
33 32 32
|
||||
34 33 33
|
||||
35 34 34
|
||||
36 35 35
|
||||
37 36 36
|
||||
38 37 37
|
||||
39 38 38
|
||||
40 39 39
|
||||
41 40 40
|
||||
42 41 41
|
||||
43 42 42
|
||||
44 43 43
|
||||
45 44 44
|
||||
46 45 45
|
||||
47 46 46
|
||||
48 47 47
|
||||
49 48 48
|
||||
50 49 49
|
||||
51 50 50
|
||||
52 51 51
|
||||
53 52 52
|
||||
54 53 53
|
||||
55 54 54
|
||||
56 55 55
|
||||
57 56 56
|
||||
58 57 57
|
||||
59 58 58
|
||||
60 59 59
|
||||
61 60 60
|
||||
62 61 61
|
||||
63 62 62
|
||||
64 63 63
|
||||
65 64 64
|
||||
66 65 65
|
||||
67 66 66
|
||||
68 67 67
|
||||
69 68 68
|
||||
70 69 69
|
||||
71 70 70
|
||||
72 71 71
|
||||
73 72 72
|
||||
74 73 73
|
||||
75 74 74
|
||||
76 75 75
|
||||
77 76 76
|
||||
78 77 77
|
||||
79 78 78
|
||||
80 79 79
|
||||
81 80 80
|
||||
82 81 81
|
||||
83 82 82
|
||||
84 83 83
|
||||
85 84 84
|
||||
86 85 85
|
||||
87 86 86
|
||||
88 87 87
|
||||
89 88 88
|
||||
90 89 89
|
||||
91 90 90
|
||||
92 91 91
|
||||
93 92 92
|
||||
94 93 93
|
||||
95 94 94
|
||||
96 95 95
|
||||
97 96 96
|
||||
98 97 97
|
||||
99 98 98
|
||||
100 99 99
|
||||
SELECT * FROM t1 ORDER BY f1 ASC, f0 LIMIT 30;
|
||||
f0 f1 f2
|
||||
1 0 0
|
||||
2 1 1
|
||||
3 2 2
|
||||
4 3 3
|
||||
5 4 4
|
||||
6 5 5
|
||||
7 6 6
|
||||
8 7 7
|
||||
9 8 8
|
||||
10 9 9
|
||||
11 10 10
|
||||
12 11 11
|
||||
13 12 12
|
||||
14 13 13
|
||||
15 14 14
|
||||
16 15 15
|
||||
17 16 16
|
||||
18 17 17
|
||||
19 18 18
|
||||
20 19 19
|
||||
21 20 20
|
||||
22 21 21
|
||||
23 22 22
|
||||
24 23 23
|
||||
25 24 24
|
||||
26 25 25
|
||||
27 26 26
|
||||
28 27 27
|
||||
29 28 28
|
||||
30 29 29
|
||||
SELECT * FROM t1 ORDER BY f1 ASC, f0 LIMIT 0;
|
||||
f0 f1 f2
|
||||
SELECT * FROM t1 ORDER BY f2 DESC, f0 LIMIT 30;
|
||||
f0 f1 f2
|
||||
100 99 99
|
||||
99 98 98
|
||||
98 97 97
|
||||
97 96 96
|
||||
96 95 95
|
||||
95 94 94
|
||||
94 93 93
|
||||
93 92 92
|
||||
92 91 91
|
||||
91 90 90
|
||||
10 9 9
|
||||
90 89 89
|
||||
89 88 88
|
||||
88 87 87
|
||||
87 86 86
|
||||
86 85 85
|
||||
85 84 84
|
||||
84 83 83
|
||||
83 82 82
|
||||
82 81 81
|
||||
81 80 80
|
||||
9 8 8
|
||||
80 79 79
|
||||
79 78 78
|
||||
78 77 77
|
||||
77 76 76
|
||||
76 75 75
|
||||
75 74 74
|
||||
74 73 73
|
||||
73 72 72
|
||||
SELECT * FROM t1 ORDER BY f2 DESC, f0 LIMIT 0;
|
||||
f0 f1 f2
|
||||
SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 20;
|
||||
f0 f1 f2
|
||||
12 11 11
|
||||
13 12 12
|
||||
14 13 13
|
||||
15 14 14
|
||||
16 15 15
|
||||
17 16 16
|
||||
18 17 17
|
||||
19 18 18
|
||||
20 19 19
|
||||
21 20 20
|
||||
22 21 21
|
||||
23 22 22
|
||||
24 23 23
|
||||
25 24 24
|
||||
26 25 25
|
||||
27 26 26
|
||||
28 27 27
|
||||
29 28 28
|
||||
30 29 29
|
||||
31 30 30
|
||||
SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 0;
|
||||
f0 f1 f2
|
||||
SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 10 OFFSET 10;
|
||||
f0 f1 f2
|
||||
22 21 21
|
||||
23 22 22
|
||||
24 23 23
|
||||
25 24 24
|
||||
26 25 25
|
||||
27 26 26
|
||||
28 27 27
|
||||
29 28 28
|
||||
30 29 29
|
||||
31 30 30
|
||||
SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 0 OFFSET 10;
|
||||
f0 f1 f2
|
||||
set sort_buffer_size= 32768;
|
||||
CREATE TEMPORARY TABLE tmp (f1 int, f2 varchar(20));
|
||||
INSERT INTO tmp SELECT f1, f2 FROM t1;
|
||||
INSERT INTO t1(f1, f2) SELECT * FROM tmp;
|
||||
INSERT INTO tmp SELECT f1, f2 FROM t1;
|
||||
INSERT INTO t1(f1, f2) SELECT * FROM tmp;
|
||||
SELECT * FROM t1 ORDER BY f1 ASC, f0 LIMIT 30;
|
||||
f0 f1 f2
|
||||
1 0 0
|
||||
101 0 0
|
||||
201 0 0
|
||||
301 0 0
|
||||
401 0 0
|
||||
2 1 1
|
||||
102 1 1
|
||||
202 1 1
|
||||
302 1 1
|
||||
402 1 1
|
||||
3 2 2
|
||||
103 2 2
|
||||
203 2 2
|
||||
303 2 2
|
||||
403 2 2
|
||||
4 3 3
|
||||
104 3 3
|
||||
204 3 3
|
||||
304 3 3
|
||||
404 3 3
|
||||
5 4 4
|
||||
105 4 4
|
||||
205 4 4
|
||||
305 4 4
|
||||
405 4 4
|
||||
6 5 5
|
||||
106 5 5
|
||||
206 5 5
|
||||
306 5 5
|
||||
406 5 5
|
||||
SELECT * FROM t1 ORDER BY f1 ASC, f0 LIMIT 0;
|
||||
f0 f1 f2
|
||||
SELECT * FROM t1 ORDER BY f2 DESC, f0 LIMIT 30;
|
||||
f0 f1 f2
|
||||
100 99 99
|
||||
200 99 99
|
||||
300 99 99
|
||||
400 99 99
|
||||
500 99 99
|
||||
99 98 98
|
||||
199 98 98
|
||||
299 98 98
|
||||
399 98 98
|
||||
499 98 98
|
||||
98 97 97
|
||||
198 97 97
|
||||
298 97 97
|
||||
398 97 97
|
||||
498 97 97
|
||||
97 96 96
|
||||
197 96 96
|
||||
297 96 96
|
||||
397 96 96
|
||||
497 96 96
|
||||
96 95 95
|
||||
196 95 95
|
||||
296 95 95
|
||||
396 95 95
|
||||
496 95 95
|
||||
95 94 94
|
||||
195 94 94
|
||||
295 94 94
|
||||
395 94 94
|
||||
495 94 94
|
||||
SELECT * FROM t1 ORDER BY f2 DESC, f0 LIMIT 0;
|
||||
f0 f1 f2
|
||||
SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 20;
|
||||
f0 f1 f2
|
||||
12 11 11
|
||||
112 11 11
|
||||
212 11 11
|
||||
312 11 11
|
||||
412 11 11
|
||||
13 12 12
|
||||
113 12 12
|
||||
213 12 12
|
||||
313 12 12
|
||||
413 12 12
|
||||
14 13 13
|
||||
114 13 13
|
||||
214 13 13
|
||||
314 13 13
|
||||
414 13 13
|
||||
15 14 14
|
||||
115 14 14
|
||||
215 14 14
|
||||
315 14 14
|
||||
415 14 14
|
||||
SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 0;
|
||||
f0 f1 f2
|
||||
SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 10 OFFSET 10;
|
||||
f0 f1 f2
|
||||
14 13 13
|
||||
114 13 13
|
||||
214 13 13
|
||||
314 13 13
|
||||
414 13 13
|
||||
15 14 14
|
||||
115 14 14
|
||||
215 14 14
|
||||
315 14 14
|
||||
415 14 14
|
||||
SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 0 OFFSET 10;
|
||||
f0 f1 f2
|
||||
set sort_buffer_size= 32768;
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1
|
||||
ORDER BY f1, f0 LIMIT 30;
|
||||
f0 f1 f2
|
||||
1 0 0
|
||||
101 0 0
|
||||
201 0 0
|
||||
301 0 0
|
||||
401 0 0
|
||||
2 1 1
|
||||
102 1 1
|
||||
202 1 1
|
||||
302 1 1
|
||||
402 1 1
|
||||
3 2 2
|
||||
103 2 2
|
||||
203 2 2
|
||||
303 2 2
|
||||
403 2 2
|
||||
4 3 3
|
||||
104 3 3
|
||||
204 3 3
|
||||
304 3 3
|
||||
404 3 3
|
||||
5 4 4
|
||||
105 4 4
|
||||
205 4 4
|
||||
305 4 4
|
||||
405 4 4
|
||||
6 5 5
|
||||
106 5 5
|
||||
206 5 5
|
||||
306 5 5
|
||||
406 5 5
|
||||
SELECT FOUND_ROWS();
|
||||
FOUND_ROWS()
|
||||
500
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1
|
||||
ORDER BY f1, f0 LIMIT 0;
|
||||
f0 f1 f2
|
||||
SELECT FOUND_ROWS();
|
||||
FOUND_ROWS()
|
||||
500
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE f1>10
|
||||
ORDER BY f2, f0 LIMIT 20;
|
||||
f0 f1 f2
|
||||
12 11 11
|
||||
112 11 11
|
||||
212 11 11
|
||||
312 11 11
|
||||
412 11 11
|
||||
13 12 12
|
||||
113 12 12
|
||||
213 12 12
|
||||
313 12 12
|
||||
413 12 12
|
||||
14 13 13
|
||||
114 13 13
|
||||
214 13 13
|
||||
314 13 13
|
||||
414 13 13
|
||||
15 14 14
|
||||
115 14 14
|
||||
215 14 14
|
||||
315 14 14
|
||||
415 14 14
|
||||
SELECT FOUND_ROWS();
|
||||
FOUND_ROWS()
|
||||
445
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE f1>10
|
||||
ORDER BY f2, f0 LIMIT 0;
|
||||
f0 f1 f2
|
||||
SELECT FOUND_ROWS();
|
||||
FOUND_ROWS()
|
||||
445
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE f1>10
|
||||
ORDER BY f2, f0 LIMIT 10 OFFSET 10;
|
||||
f0 f1 f2
|
||||
14 13 13
|
||||
114 13 13
|
||||
214 13 13
|
||||
314 13 13
|
||||
414 13 13
|
||||
15 14 14
|
||||
115 14 14
|
||||
215 14 14
|
||||
315 14 14
|
||||
415 14 14
|
||||
SELECT FOUND_ROWS();
|
||||
FOUND_ROWS()
|
||||
445
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE f1>10
|
||||
ORDER BY f2, f0 LIMIT 0 OFFSET 10;
|
||||
f0 f1 f2
|
||||
SELECT FOUND_ROWS();
|
||||
FOUND_ROWS()
|
||||
445
|
||||
set sort_buffer_size= 327680;
|
||||
SELECT * FROM t1 JOIN tmp on t1.f2=tmp.f2
|
||||
ORDER BY tmp.f1, f0 LIMIT 30;
|
||||
f0 f1 f2 f1 f2
|
||||
1 0 0 0 0
|
||||
1 0 0 0 0
|
||||
1 0 0 0 0
|
||||
101 0 0 0 0
|
||||
101 0 0 0 0
|
||||
101 0 0 0 0
|
||||
201 0 0 0 0
|
||||
201 0 0 0 0
|
||||
201 0 0 0 0
|
||||
301 0 0 0 0
|
||||
301 0 0 0 0
|
||||
301 0 0 0 0
|
||||
401 0 0 0 0
|
||||
401 0 0 0 0
|
||||
401 0 0 0 0
|
||||
2 1 1 1 1
|
||||
2 1 1 1 1
|
||||
2 1 1 1 1
|
||||
102 1 1 1 1
|
||||
102 1 1 1 1
|
||||
102 1 1 1 1
|
||||
202 1 1 1 1
|
||||
202 1 1 1 1
|
||||
202 1 1 1 1
|
||||
302 1 1 1 1
|
||||
302 1 1 1 1
|
||||
302 1 1 1 1
|
||||
402 1 1 1 1
|
||||
402 1 1 1 1
|
||||
402 1 1 1 1
|
||||
SELECT * FROM t1 JOIN tmp on t1.f2=tmp.f2
|
||||
ORDER BY tmp.f1, f0 LIMIT 30 OFFSET 30;
|
||||
f0 f1 f2 f1 f2
|
||||
3 2 2 2 2
|
||||
3 2 2 2 2
|
||||
3 2 2 2 2
|
||||
103 2 2 2 2
|
||||
103 2 2 2 2
|
||||
103 2 2 2 2
|
||||
203 2 2 2 2
|
||||
203 2 2 2 2
|
||||
203 2 2 2 2
|
||||
303 2 2 2 2
|
||||
303 2 2 2 2
|
||||
303 2 2 2 2
|
||||
403 2 2 2 2
|
||||
403 2 2 2 2
|
||||
403 2 2 2 2
|
||||
4 3 3 3 3
|
||||
4 3 3 3 3
|
||||
4 3 3 3 3
|
||||
104 3 3 3 3
|
||||
104 3 3 3 3
|
||||
104 3 3 3 3
|
||||
204 3 3 3 3
|
||||
204 3 3 3 3
|
||||
204 3 3 3 3
|
||||
304 3 3 3 3
|
||||
304 3 3 3 3
|
||||
304 3 3 3 3
|
||||
404 3 3 3 3
|
||||
404 3 3 3 3
|
||||
404 3 3 3 3
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 JOIN tmp on t1.f2=tmp.f2
|
||||
ORDER BY tmp.f1, f0 LIMIT 30 OFFSET 30;
|
||||
f0 f1 f2 f1 f2
|
||||
3 2 2 2 2
|
||||
3 2 2 2 2
|
||||
3 2 2 2 2
|
||||
103 2 2 2 2
|
||||
103 2 2 2 2
|
||||
103 2 2 2 2
|
||||
203 2 2 2 2
|
||||
203 2 2 2 2
|
||||
203 2 2 2 2
|
||||
303 2 2 2 2
|
||||
303 2 2 2 2
|
||||
303 2 2 2 2
|
||||
403 2 2 2 2
|
||||
403 2 2 2 2
|
||||
403 2 2 2 2
|
||||
4 3 3 3 3
|
||||
4 3 3 3 3
|
||||
4 3 3 3 3
|
||||
104 3 3 3 3
|
||||
104 3 3 3 3
|
||||
104 3 3 3 3
|
||||
204 3 3 3 3
|
||||
204 3 3 3 3
|
||||
204 3 3 3 3
|
||||
304 3 3 3 3
|
||||
304 3 3 3 3
|
||||
304 3 3 3 3
|
||||
404 3 3 3 3
|
||||
404 3 3 3 3
|
||||
404 3 3 3 3
|
||||
SELECT FOUND_ROWS();
|
||||
FOUND_ROWS()
|
||||
1500
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 JOIN tmp on t1.f2=tmp.f2
|
||||
WHERE t1.f2>20
|
||||
ORDER BY tmp.f1, f0 LIMIT 30 OFFSET 30;
|
||||
f0 f1 f2 f1 f2
|
||||
24 23 23 23 23
|
||||
24 23 23 23 23
|
||||
24 23 23 23 23
|
||||
124 23 23 23 23
|
||||
124 23 23 23 23
|
||||
124 23 23 23 23
|
||||
224 23 23 23 23
|
||||
224 23 23 23 23
|
||||
224 23 23 23 23
|
||||
324 23 23 23 23
|
||||
324 23 23 23 23
|
||||
324 23 23 23 23
|
||||
424 23 23 23 23
|
||||
424 23 23 23 23
|
||||
424 23 23 23 23
|
||||
25 24 24 24 24
|
||||
25 24 24 24 24
|
||||
25 24 24 24 24
|
||||
125 24 24 24 24
|
||||
125 24 24 24 24
|
||||
125 24 24 24 24
|
||||
225 24 24 24 24
|
||||
225 24 24 24 24
|
||||
225 24 24 24 24
|
||||
325 24 24 24 24
|
||||
325 24 24 24 24
|
||||
325 24 24 24 24
|
||||
425 24 24 24 24
|
||||
425 24 24 24 24
|
||||
425 24 24 24 24
|
||||
SELECT FOUND_ROWS();
|
||||
FOUND_ROWS()
|
||||
1185
|
||||
CREATE VIEW v1 as SELECT * FROM t1 ORDER BY f1, f0 LIMIT 30;
|
||||
SELECT * FROM v1;
|
||||
f0 f1 f2
|
||||
1 0 0
|
||||
101 0 0
|
||||
201 0 0
|
||||
301 0 0
|
||||
401 0 0
|
||||
2 1 1
|
||||
102 1 1
|
||||
202 1 1
|
||||
302 1 1
|
||||
402 1 1
|
||||
3 2 2
|
||||
103 2 2
|
||||
203 2 2
|
||||
303 2 2
|
||||
403 2 2
|
||||
4 3 3
|
||||
104 3 3
|
||||
204 3 3
|
||||
304 3 3
|
||||
404 3 3
|
||||
5 4 4
|
||||
105 4 4
|
||||
205 4 4
|
||||
305 4 4
|
||||
405 4 4
|
||||
6 5 5
|
||||
106 5 5
|
||||
206 5 5
|
||||
306 5 5
|
||||
406 5 5
|
||||
drop view v1;
|
||||
CREATE VIEW v1 as SELECT * FROM t1 ORDER BY f1, f0 LIMIT 100;
|
||||
SELECT * FROM v1 ORDER BY f2, f0 LIMIT 30;
|
||||
f0 f1 f2
|
||||
1 0 0
|
||||
101 0 0
|
||||
201 0 0
|
||||
301 0 0
|
||||
401 0 0
|
||||
2 1 1
|
||||
102 1 1
|
||||
202 1 1
|
||||
302 1 1
|
||||
402 1 1
|
||||
11 10 10
|
||||
111 10 10
|
||||
211 10 10
|
||||
311 10 10
|
||||
411 10 10
|
||||
12 11 11
|
||||
112 11 11
|
||||
212 11 11
|
||||
312 11 11
|
||||
412 11 11
|
||||
13 12 12
|
||||
113 12 12
|
||||
213 12 12
|
||||
313 12 12
|
||||
413 12 12
|
||||
14 13 13
|
||||
114 13 13
|
||||
214 13 13
|
||||
314 13 13
|
||||
414 13 13
|
||||
CREATE VIEW v2 as SELECT * FROM t1 ORDER BY f2, f0 LIMIT 100;
|
||||
SELECT * FROM v1 JOIN v2 on v1.f1=v2.f1 ORDER BY v1.f2,v1.f0,v2.f0
|
||||
LIMIT 30;
|
||||
f0 f1 f2 f0 f1 f2
|
||||
1 0 0 1 0 0
|
||||
1 0 0 101 0 0
|
||||
1 0 0 201 0 0
|
||||
1 0 0 301 0 0
|
||||
1 0 0 401 0 0
|
||||
101 0 0 1 0 0
|
||||
101 0 0 101 0 0
|
||||
101 0 0 201 0 0
|
||||
101 0 0 301 0 0
|
||||
101 0 0 401 0 0
|
||||
201 0 0 1 0 0
|
||||
201 0 0 101 0 0
|
||||
201 0 0 201 0 0
|
||||
201 0 0 301 0 0
|
||||
201 0 0 401 0 0
|
||||
301 0 0 1 0 0
|
||||
301 0 0 101 0 0
|
||||
301 0 0 201 0 0
|
||||
301 0 0 301 0 0
|
||||
301 0 0 401 0 0
|
||||
401 0 0 1 0 0
|
||||
401 0 0 101 0 0
|
||||
401 0 0 201 0 0
|
||||
401 0 0 301 0 0
|
||||
401 0 0 401 0 0
|
||||
2 1 1 2 1 1
|
||||
2 1 1 102 1 1
|
||||
2 1 1 202 1 1
|
||||
2 1 1 302 1 1
|
||||
2 1 1 402 1 1
|
||||
SELECT floor(f1/10) f3, count(f2) FROM t1
|
||||
GROUP BY 1 ORDER BY 2,1 LIMIT 5;
|
||||
f3 count(f2)
|
||||
0 50
|
||||
1 50
|
||||
2 50
|
||||
3 50
|
||||
4 50
|
||||
SELECT floor(f1/10) f3, count(f2) FROM t1
|
||||
GROUP BY 1 ORDER BY 2,1 LIMIT 0;
|
||||
f3 count(f2)
|
||||
CREATE PROCEDURE wl1393_sp_test()
|
||||
BEGIN
|
||||
SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 30;
|
||||
SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 15 OFFSET 15;
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE f1>10
|
||||
ORDER BY f2, f0 LIMIT 15 OFFSET 15;
|
||||
SELECT FOUND_ROWS();
|
||||
SELECT * FROM v1 ORDER BY f2, f0 LIMIT 30;
|
||||
END|
|
||||
CALL wl1393_sp_test()|
|
||||
f0 f1 f2
|
||||
12 11 11
|
||||
112 11 11
|
||||
212 11 11
|
||||
312 11 11
|
||||
412 11 11
|
||||
13 12 12
|
||||
113 12 12
|
||||
213 12 12
|
||||
313 12 12
|
||||
413 12 12
|
||||
14 13 13
|
||||
114 13 13
|
||||
214 13 13
|
||||
314 13 13
|
||||
414 13 13
|
||||
15 14 14
|
||||
115 14 14
|
||||
215 14 14
|
||||
315 14 14
|
||||
415 14 14
|
||||
16 15 15
|
||||
116 15 15
|
||||
216 15 15
|
||||
316 15 15
|
||||
416 15 15
|
||||
17 16 16
|
||||
117 16 16
|
||||
217 16 16
|
||||
317 16 16
|
||||
417 16 16
|
||||
f0 f1 f2
|
||||
15 14 14
|
||||
115 14 14
|
||||
215 14 14
|
||||
315 14 14
|
||||
415 14 14
|
||||
16 15 15
|
||||
116 15 15
|
||||
216 15 15
|
||||
316 15 15
|
||||
416 15 15
|
||||
17 16 16
|
||||
117 16 16
|
||||
217 16 16
|
||||
317 16 16
|
||||
417 16 16
|
||||
f0 f1 f2
|
||||
15 14 14
|
||||
115 14 14
|
||||
215 14 14
|
||||
315 14 14
|
||||
415 14 14
|
||||
16 15 15
|
||||
116 15 15
|
||||
216 15 15
|
||||
316 15 15
|
||||
416 15 15
|
||||
17 16 16
|
||||
117 16 16
|
||||
217 16 16
|
||||
317 16 16
|
||||
417 16 16
|
||||
FOUND_ROWS()
|
||||
445
|
||||
f0 f1 f2
|
||||
1 0 0
|
||||
101 0 0
|
||||
201 0 0
|
||||
301 0 0
|
||||
401 0 0
|
||||
2 1 1
|
||||
102 1 1
|
||||
202 1 1
|
||||
302 1 1
|
||||
402 1 1
|
||||
11 10 10
|
||||
111 10 10
|
||||
211 10 10
|
||||
311 10 10
|
||||
411 10 10
|
||||
12 11 11
|
||||
112 11 11
|
||||
212 11 11
|
||||
312 11 11
|
||||
412 11 11
|
||||
13 12 12
|
||||
113 12 12
|
||||
213 12 12
|
||||
313 12 12
|
||||
413 12 12
|
||||
14 13 13
|
||||
114 13 13
|
||||
214 13 13
|
||||
314 13 13
|
||||
414 13 13
|
||||
DROP PROCEDURE wl1393_sp_test|
|
||||
SELECT d1.f1, d1.f2 FROM t1
|
||||
LEFT JOIN (SELECT * FROM t1 ORDER BY f1 LIMIT 30) d1 on t1.f1=d1.f1
|
||||
ORDER BY d1.f2 DESC LIMIT 30;
|
||||
f1 f2
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
5 5
|
||||
4 4
|
||||
4 4
|
||||
4 4
|
||||
4 4
|
||||
4 4
|
||||
SELECT * FROM t1 WHERE f1 = (SELECT f1 FROM t1 ORDER BY 1 LIMIT 1);
|
||||
f0 f1 f2
|
||||
1 0 0
|
||||
101 0 0
|
||||
201 0 0
|
||||
301 0 0
|
||||
401 0 0
|
||||
SELECT * FROM t1 WHERE f1 = (SELECT f1 FROM t1 ORDER BY 1 LIMIT 2);
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
DROP TABLE t1, tmp;
|
||||
DROP VIEW v1, v2;
|
||||
# end of WL#1393 - Optimizing filesort with small limit
|
||||
#
|
||||
# Bug #58761
|
||||
# Crash in Field::is_null in field.h on subquery in WHERE clause
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
pk INT NOT NULL AUTO_INCREMENT,
|
||||
col_int_key INT DEFAULT NULL,
|
||||
col_varchar_key VARCHAR(1) DEFAULT NULL,
|
||||
PRIMARY KEY (pk),
|
||||
KEY col_varchar_key (col_varchar_key,col_int_key)
|
||||
);
|
||||
INSERT INTO t1 VALUES (27,7,'x');
|
||||
INSERT INTO t1 VALUES (28,6,'m');
|
||||
INSERT INTO t1 VALUES (29,4,'c');
|
||||
CREATE TABLE where_subselect
|
||||
SELECT DISTINCT `pk` AS field1 , `pk` AS field2
|
||||
FROM t1 AS alias1
|
||||
WHERE alias1 . `col_int_key` > 229
|
||||
OR alias1 . `col_varchar_key` IS NOT NULL
|
||||
GROUP BY field1, field2
|
||||
;
|
||||
SELECT *
|
||||
FROM where_subselect
|
||||
WHERE (field1, field2) IN (
|
||||
SELECT DISTINCT `pk` AS field1 , `pk` AS field2
|
||||
FROM t1 AS alias1
|
||||
WHERE alias1 . `col_int_key` > 229
|
||||
OR alias1 . `col_varchar_key` IS NOT NULL
|
||||
GROUP BY field1, field2
|
||||
);
|
||||
field1 field2
|
||||
27 27
|
||||
28 28
|
||||
29 29
|
||||
DROP TABLE t1;
|
||||
DROP TABLE where_subselect;
|
||||
# End of Bug #58761
|
||||
CREATE TABLE t1 (
|
||||
id1 INT NULL,
|
||||
id2 INT NOT NULL,
|
||||
|
159
mysql-test/r/order_by_sortkey.result
Normal file
159
mysql-test/r/order_by_sortkey.result
Normal file
@@ -0,0 +1,159 @@
|
||||
CREATE TABLE t1(
|
||||
f0 int auto_increment PRIMARY KEY,
|
||||
f1 int,
|
||||
f2 varchar(200)
|
||||
);
|
||||
INSERT INTO t1(f1, f2) VALUES
|
||||
(0,"0"),(1,"1"),(2,"2"),(3,"3"),(4,"4"),(5,"5"),
|
||||
(6,"6"),(7,"7"),(8,"8"),(9,"9"),(10,"10"),
|
||||
(11,"11"),(12,"12"),(13,"13"),(14,"14"),(15,"15"),
|
||||
(16,"16"),(17,"17"),(18,"18"),(19,"19"),(20,"20"),
|
||||
(21,"21"),(22,"22"),(23,"23"),(24,"24"),(25,"25"),
|
||||
(26,"26"),(27,"27"),(28,"28"),(29,"29"),(30,"30"),
|
||||
(31,"31"),(32,"32"),(33,"33"),(34,"34"),(35,"35"),
|
||||
(36,"36"),(37,"37"),(38,"38"),(39,"39"),(40,"40"),
|
||||
(41,"41"),(42,"42"),(43,"43"),(44,"44"),(45,"45"),
|
||||
(46,"46"),(47,"47"),(48,"48"),(49,"49"),(50,"50"),
|
||||
(51,"51"),(52,"52"),(53,"53"),(54,"54"),(55,"55"),
|
||||
(56,"56"),(57,"57"),(58,"58"),(59,"59"),(60,"60"),
|
||||
(61,"61"),(62,"62"),(63,"63"),(64,"64"),(65,"65"),
|
||||
(66,"66"),(67,"67"),(68,"68"),(69,"69"),(70,"70"),
|
||||
(71,"71"),(72,"72"),(73,"73"),(74,"74"),(75,"75"),
|
||||
(76,"76"),(77,"77"),(78,"78"),(79,"79"),(80,"80"),
|
||||
(81,"81"),(82,"82"),(83,"83"),(84,"84"),(85,"85"),
|
||||
(86,"86"),(87,"87"),(88,"88"),(89,"89"),(90,"90"),
|
||||
(91,"91"),(92,"92"),(93,"93"),(94,"94"),(95,"95"),
|
||||
(96,"96"),(97,"97"),(98,"98"),(99,"99");
|
||||
CREATE TEMPORARY TABLE tmp (f1 int, f2 varchar(20));
|
||||
INSERT INTO tmp SELECT f1,f2 FROM t1;
|
||||
INSERT INTO t1(f1,f2) SELECT * FROM tmp;
|
||||
INSERT INTO tmp SELECT f1,f2 FROM t1;
|
||||
INSERT INTO t1(f1,f2) SELECT * FROM tmp;
|
||||
INSERT INTO t1(f1,f2) SELECT * FROM tmp;
|
||||
INSERT INTO tmp SELECT f1,f2 FROM t1;
|
||||
INSERT INTO t1(f1,f2) SELECT * FROM tmp;
|
||||
INSERT INTO tmp SELECT f1,f2 FROM t1;
|
||||
INSERT INTO t1(f1,f2) SELECT * FROM tmp;
|
||||
INSERT INTO tmp SELECT f1,f2 FROM t1;
|
||||
INSERT INTO t1(f1,f2) SELECT * FROM tmp;
|
||||
INSERT INTO tmp SELECT f1,f2 FROM t1;
|
||||
INSERT INTO t1(f1,f2) SELECT * FROM tmp;
|
||||
INSERT INTO tmp SELECT f1,f2 FROM t1;
|
||||
INSERT INTO t1(f1,f2) SELECT * FROM tmp;
|
||||
set sort_buffer_size= 32768;
|
||||
FLUSH STATUS;
|
||||
SHOW SESSION STATUS LIKE 'Sort%';
|
||||
Variable_name Value
|
||||
Sort_merge_passes 0
|
||||
Sort_range 0
|
||||
Sort_rows 0
|
||||
Sort_scan 0
|
||||
SELECT * FROM t1 ORDER BY f2 LIMIT 100;
|
||||
f0 f1 f2
|
||||
1 0 0
|
||||
101 0 0
|
||||
201 0 0
|
||||
301 0 0
|
||||
401 0 0
|
||||
501 0 0
|
||||
601 0 0
|
||||
701 0 0
|
||||
801 0 0
|
||||
901 0 0
|
||||
1001 0 0
|
||||
1101 0 0
|
||||
1201 0 0
|
||||
1301 0 0
|
||||
1401 0 0
|
||||
1501 0 0
|
||||
1601 0 0
|
||||
1701 0 0
|
||||
1801 0 0
|
||||
1901 0 0
|
||||
2001 0 0
|
||||
2101 0 0
|
||||
2201 0 0
|
||||
2301 0 0
|
||||
2401 0 0
|
||||
2501 0 0
|
||||
2601 0 0
|
||||
2701 0 0
|
||||
2801 0 0
|
||||
2901 0 0
|
||||
3001 0 0
|
||||
3101 0 0
|
||||
3201 0 0
|
||||
3301 0 0
|
||||
3401 0 0
|
||||
3501 0 0
|
||||
3601 0 0
|
||||
3701 0 0
|
||||
3801 0 0
|
||||
3901 0 0
|
||||
4001 0 0
|
||||
4101 0 0
|
||||
4201 0 0
|
||||
4301 0 0
|
||||
4401 0 0
|
||||
4501 0 0
|
||||
4601 0 0
|
||||
4701 0 0
|
||||
4801 0 0
|
||||
4901 0 0
|
||||
5001 0 0
|
||||
5101 0 0
|
||||
5201 0 0
|
||||
5301 0 0
|
||||
5401 0 0
|
||||
5501 0 0
|
||||
5601 0 0
|
||||
5701 0 0
|
||||
5801 0 0
|
||||
5901 0 0
|
||||
6001 0 0
|
||||
6101 0 0
|
||||
6201 0 0
|
||||
6301 0 0
|
||||
6401 0 0
|
||||
6501 0 0
|
||||
6601 0 0
|
||||
6701 0 0
|
||||
6801 0 0
|
||||
6901 0 0
|
||||
7001 0 0
|
||||
7101 0 0
|
||||
7201 0 0
|
||||
7301 0 0
|
||||
7401 0 0
|
||||
7501 0 0
|
||||
7601 0 0
|
||||
7701 0 0
|
||||
7801 0 0
|
||||
7901 0 0
|
||||
8001 0 0
|
||||
8101 0 0
|
||||
8201 0 0
|
||||
8301 0 0
|
||||
8401 0 0
|
||||
8501 0 0
|
||||
8601 0 0
|
||||
8701 0 0
|
||||
8801 0 0
|
||||
8901 0 0
|
||||
9001 0 0
|
||||
9101 0 0
|
||||
9201 0 0
|
||||
9301 0 0
|
||||
9401 0 0
|
||||
9501 0 0
|
||||
9601 0 0
|
||||
9701 0 0
|
||||
9801 0 0
|
||||
9901 0 0
|
||||
SHOW SESSION STATUS LIKE 'Sort%';
|
||||
Variable_name Value
|
||||
Sort_merge_passes 0
|
||||
Sort_range 0
|
||||
Sort_rows 100
|
||||
Sort_scan 1
|
||||
DROP TABLE t1, tmp;
|
@@ -248,6 +248,47 @@ NULL
|
||||
drop procedure p1;
|
||||
drop tables t1,t2,t3;
|
||||
#
|
||||
# Bug #58756
|
||||
# Crash in heap_rrnd on query with HAVING ... IN (subquery) + LIMIT
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
col_time_key time DEFAULT NULL,
|
||||
col_datetime_key datetime DEFAULT NULL,
|
||||
col_varchar_nokey varchar(1) DEFAULT NULL,
|
||||
KEY col_time_key (col_time_key),
|
||||
KEY col_datetime_key (col_datetime_key)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
INSERT INTO t1 VALUES ('17:53:30','2005-11-10 12:40:29','h');
|
||||
INSERT INTO t1 VALUES ('11:35:49','2009-04-25 00:00:00','b');
|
||||
INSERT INTO t1 VALUES (NULL,'2002-11-27 00:00:00','s');
|
||||
INSERT INTO t1 VALUES ('06:01:40','2004-01-26 20:32:32','e');
|
||||
INSERT INTO t1 VALUES ('05:45:11','2007-10-26 11:41:40','j');
|
||||
INSERT INTO t1 VALUES ('00:00:00','2005-10-07 00:00:00','e');
|
||||
INSERT INTO t1 VALUES ('00:00:00','2000-07-15 05:00:34','f');
|
||||
INSERT INTO t1 VALUES ('06:11:01','2000-04-03 16:33:32','v');
|
||||
INSERT INTO t1 VALUES ('13:02:46',NULL,'x');
|
||||
INSERT INTO t1 VALUES ('21:44:25','2001-04-25 01:26:12','m');
|
||||
INSERT INTO t1 VALUES ('22:43:58','2000-12-27 00:00:00','c');
|
||||
CREATE TABLE t2 (
|
||||
col_time_key time DEFAULT NULL,
|
||||
col_datetime_key datetime DEFAULT NULL,
|
||||
col_varchar_nokey varchar(1) DEFAULT NULL,
|
||||
KEY col_time_key (col_time_key),
|
||||
KEY col_datetime_key (col_datetime_key)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
INSERT INTO t2 VALUES ('11:28:45','2004-10-11 18:13:16','w');
|
||||
SELECT col_time_key, col_datetime_key
|
||||
FROM
|
||||
( SELECT * FROM t1 ) AS table1
|
||||
HAVING ( 'r' , 'e' ) IN
|
||||
( SELECT col_varchar_nokey , col_varchar_nokey FROM t2 )
|
||||
ORDER BY col_datetime_key
|
||||
LIMIT 10;
|
||||
col_time_key col_datetime_key
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
# End of Bug #58756
|
||||
#
|
||||
# Bug#60085 crash in Item::save_in_field() with time data type
|
||||
#
|
||||
CREATE TABLE t1(a date, b int, unique(b), unique(a), key(b)) engine=innodb;
|
||||
|
@@ -11,7 +11,7 @@ SET @old_debug= @@session.debug;
|
||||
CREATE TABLE t1(f0 int auto_increment primary key, f1 int);
|
||||
INSERT INTO t1(f1) VALUES (0),(1),(2),(3),(4),(5);
|
||||
|
||||
SET session debug_dbug= '+d,make_sort_keys_alloc_fail';
|
||||
SET session debug_dbug= '+d,alloc_sort_buffer_fail';
|
||||
CALL mtr.add_suppression("Out of sort memory");
|
||||
--error ER_OUT_OF_SORTMEMORY
|
||||
SELECT * FROM t1 ORDER BY f1 ASC, f0;
|
||||
|
@@ -1493,3 +1493,52 @@ SELECT f1,MIN(f2),MAX(f2) FROM t1 GROUP BY 1;
|
||||
|
||||
DROP TABLE t1;
|
||||
--echo #End of test#49771
|
||||
|
||||
--echo #
|
||||
--echo # Bug #58782
|
||||
--echo # Missing rows with SELECT .. WHERE .. IN subquery
|
||||
--echo # with full GROUP BY and no aggr
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (
|
||||
pk INT NOT NULL,
|
||||
col_int_nokey INT,
|
||||
PRIMARY KEY (pk)
|
||||
);
|
||||
|
||||
INSERT INTO t1 VALUES (10,7);
|
||||
INSERT INTO t1 VALUES (11,1);
|
||||
INSERT INTO t1 VALUES (12,5);
|
||||
INSERT INTO t1 VALUES (13,3);
|
||||
|
||||
## original query:
|
||||
|
||||
SELECT pk AS field1, col_int_nokey AS field2
|
||||
FROM t1
|
||||
WHERE col_int_nokey > 0
|
||||
GROUP BY field1, field2;
|
||||
|
||||
## store query results in a new table:
|
||||
|
||||
CREATE TABLE where_subselect
|
||||
SELECT pk AS field1, col_int_nokey AS field2
|
||||
FROM t1
|
||||
WHERE col_int_nokey > 0
|
||||
GROUP BY field1, field2
|
||||
;
|
||||
|
||||
## query the new table and compare to original using WHERE ... IN():
|
||||
|
||||
SELECT *
|
||||
FROM where_subselect
|
||||
WHERE (field1, field2) IN (
|
||||
SELECT pk AS field1, col_int_nokey AS field2
|
||||
FROM t1
|
||||
WHERE col_int_nokey > 0
|
||||
GROUP BY field1, field2
|
||||
);
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP TABLE where_subselect;
|
||||
|
||||
--echo # End of Bug #58782
|
||||
|
@@ -865,6 +865,7 @@ CALL mtr.add_suppression("Out of sort memory");
|
||||
--error ER_OUT_OF_SORTMEMORY
|
||||
select * from t1 order by b;
|
||||
drop table t1;
|
||||
set session sort_buffer_size= 30000;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #39844: Query Crash Mysql Server 5.0.67
|
||||
@@ -1391,7 +1392,205 @@ ORDER BY t2.c LIMIT 5;
|
||||
DROP TABLE t1,t2,t3;
|
||||
|
||||
|
||||
#
|
||||
--echo #
|
||||
--echo # WL#1393 - Optimizing filesort with small limit
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1(f0 int auto_increment primary key, f1 int, f2 varchar(200));
|
||||
INSERT INTO t1(f1, f2) VALUES
|
||||
(0,"0"),(1,"1"),(2,"2"),(3,"3"),(4,"4"),(5,"5"),
|
||||
(6,"6"),(7,"7"),(8,"8"),(9,"9"),(10,"10"),
|
||||
(11,"11"),(12,"12"),(13,"13"),(14,"14"),(15,"15"),
|
||||
(16,"16"),(17,"17"),(18,"18"),(19,"19"),(20,"20"),
|
||||
(21,"21"),(22,"22"),(23,"23"),(24,"24"),(25,"25"),
|
||||
(26,"26"),(27,"27"),(28,"28"),(29,"29"),(30,"30"),
|
||||
(31,"31"),(32,"32"),(33,"33"),(34,"34"),(35,"35"),
|
||||
(36,"36"),(37,"37"),(38,"38"),(39,"39"),(40,"40"),
|
||||
(41,"41"),(42,"42"),(43,"43"),(44,"44"),(45,"45"),
|
||||
(46,"46"),(47,"47"),(48,"48"),(49,"49"),(50,"50"),
|
||||
(51,"51"),(52,"52"),(53,"53"),(54,"54"),(55,"55"),
|
||||
(56,"56"),(57,"57"),(58,"58"),(59,"59"),(60,"60"),
|
||||
(61,"61"),(62,"62"),(63,"63"),(64,"64"),(65,"65"),
|
||||
(66,"66"),(67,"67"),(68,"68"),(69,"69"),(70,"70"),
|
||||
(71,"71"),(72,"72"),(73,"73"),(74,"74"),(75,"75"),
|
||||
(76,"76"),(77,"77"),(78,"78"),(79,"79"),(80,"80"),
|
||||
(81,"81"),(82,"82"),(83,"83"),(84,"84"),(85,"85"),
|
||||
(86,"86"),(87,"87"),(88,"88"),(89,"89"),(90,"90"),
|
||||
(91,"91"),(92,"92"),(93,"93"),(94,"94"),(95,"95"),
|
||||
(96,"96"),(97,"97"),(98,"98"),(99,"99");
|
||||
|
||||
################
|
||||
## Test sort when source data fits in memory
|
||||
|
||||
SELECT * FROM t1 ORDER BY f1 ASC, f0 LIMIT 100;
|
||||
SELECT * FROM t1 ORDER BY f1 ASC, f0 LIMIT 30;
|
||||
SELECT * FROM t1 ORDER BY f1 ASC, f0 LIMIT 0;
|
||||
SELECT * FROM t1 ORDER BY f2 DESC, f0 LIMIT 30;
|
||||
SELECT * FROM t1 ORDER BY f2 DESC, f0 LIMIT 0;
|
||||
SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 20;
|
||||
SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 0;
|
||||
SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 10 OFFSET 10;
|
||||
SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 0 OFFSET 10;
|
||||
|
||||
################
|
||||
## Test sort when source data does not fit in memory
|
||||
set sort_buffer_size= 32768;
|
||||
CREATE TEMPORARY TABLE tmp (f1 int, f2 varchar(20));
|
||||
INSERT INTO tmp SELECT f1, f2 FROM t1;
|
||||
INSERT INTO t1(f1, f2) SELECT * FROM tmp;
|
||||
INSERT INTO tmp SELECT f1, f2 FROM t1;
|
||||
INSERT INTO t1(f1, f2) SELECT * FROM tmp;
|
||||
|
||||
SELECT * FROM t1 ORDER BY f1 ASC, f0 LIMIT 30;
|
||||
SELECT * FROM t1 ORDER BY f1 ASC, f0 LIMIT 0;
|
||||
SELECT * FROM t1 ORDER BY f2 DESC, f0 LIMIT 30;
|
||||
SELECT * FROM t1 ORDER BY f2 DESC, f0 LIMIT 0;
|
||||
SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 20;
|
||||
SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 0;
|
||||
SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 10 OFFSET 10;
|
||||
SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 0 OFFSET 10;
|
||||
|
||||
################
|
||||
## Test with SQL_CALC_FOUND_ROWS
|
||||
set sort_buffer_size= 32768;
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1
|
||||
ORDER BY f1, f0 LIMIT 30;
|
||||
SELECT FOUND_ROWS();
|
||||
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1
|
||||
ORDER BY f1, f0 LIMIT 0;
|
||||
SELECT FOUND_ROWS();
|
||||
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE f1>10
|
||||
ORDER BY f2, f0 LIMIT 20;
|
||||
SELECT FOUND_ROWS();
|
||||
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE f1>10
|
||||
ORDER BY f2, f0 LIMIT 0;
|
||||
SELECT FOUND_ROWS();
|
||||
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE f1>10
|
||||
ORDER BY f2, f0 LIMIT 10 OFFSET 10;
|
||||
SELECT FOUND_ROWS();
|
||||
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE f1>10
|
||||
ORDER BY f2, f0 LIMIT 0 OFFSET 10;
|
||||
SELECT FOUND_ROWS();
|
||||
|
||||
################
|
||||
## Test sorting with join
|
||||
## These are re-written to use PQ during execution.
|
||||
set sort_buffer_size= 327680;
|
||||
|
||||
SELECT * FROM t1 JOIN tmp on t1.f2=tmp.f2
|
||||
ORDER BY tmp.f1, f0 LIMIT 30;
|
||||
|
||||
SELECT * FROM t1 JOIN tmp on t1.f2=tmp.f2
|
||||
ORDER BY tmp.f1, f0 LIMIT 30 OFFSET 30;
|
||||
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 JOIN tmp on t1.f2=tmp.f2
|
||||
ORDER BY tmp.f1, f0 LIMIT 30 OFFSET 30;
|
||||
SELECT FOUND_ROWS();
|
||||
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 JOIN tmp on t1.f2=tmp.f2
|
||||
WHERE t1.f2>20
|
||||
ORDER BY tmp.f1, f0 LIMIT 30 OFFSET 30;
|
||||
SELECT FOUND_ROWS();
|
||||
|
||||
################
|
||||
## Test views
|
||||
CREATE VIEW v1 as SELECT * FROM t1 ORDER BY f1, f0 LIMIT 30;
|
||||
SELECT * FROM v1;
|
||||
drop view v1;
|
||||
|
||||
CREATE VIEW v1 as SELECT * FROM t1 ORDER BY f1, f0 LIMIT 100;
|
||||
SELECT * FROM v1 ORDER BY f2, f0 LIMIT 30;
|
||||
|
||||
CREATE VIEW v2 as SELECT * FROM t1 ORDER BY f2, f0 LIMIT 100;
|
||||
SELECT * FROM v1 JOIN v2 on v1.f1=v2.f1 ORDER BY v1.f2,v1.f0,v2.f0
|
||||
LIMIT 30;
|
||||
|
||||
################
|
||||
## Test group & having
|
||||
SELECT floor(f1/10) f3, count(f2) FROM t1
|
||||
GROUP BY 1 ORDER BY 2,1 LIMIT 5;
|
||||
|
||||
SELECT floor(f1/10) f3, count(f2) FROM t1
|
||||
GROUP BY 1 ORDER BY 2,1 LIMIT 0;
|
||||
|
||||
################
|
||||
## Test SP
|
||||
delimiter |;
|
||||
CREATE PROCEDURE wl1393_sp_test()
|
||||
BEGIN
|
||||
SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 30;
|
||||
SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 15 OFFSET 15;
|
||||
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE f1>10
|
||||
ORDER BY f2, f0 LIMIT 15 OFFSET 15;
|
||||
SELECT FOUND_ROWS();
|
||||
SELECT * FROM v1 ORDER BY f2, f0 LIMIT 30;
|
||||
END|
|
||||
CALL wl1393_sp_test()|
|
||||
DROP PROCEDURE wl1393_sp_test|
|
||||
delimiter ;|
|
||||
|
||||
################
|
||||
## Test with subqueries
|
||||
SELECT d1.f1, d1.f2 FROM t1
|
||||
LEFT JOIN (SELECT * FROM t1 ORDER BY f1 LIMIT 30) d1 on t1.f1=d1.f1
|
||||
ORDER BY d1.f2 DESC LIMIT 30;
|
||||
|
||||
SELECT * FROM t1 WHERE f1 = (SELECT f1 FROM t1 ORDER BY 1 LIMIT 1);
|
||||
|
||||
--error ER_SUBQUERY_NO_1_ROW
|
||||
SELECT * FROM t1 WHERE f1 = (SELECT f1 FROM t1 ORDER BY 1 LIMIT 2);
|
||||
|
||||
DROP TABLE t1, tmp;
|
||||
DROP VIEW v1, v2;
|
||||
|
||||
--echo # end of WL#1393 - Optimizing filesort with small limit
|
||||
|
||||
--echo #
|
||||
--echo # Bug #58761
|
||||
--echo # Crash in Field::is_null in field.h on subquery in WHERE clause
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (
|
||||
pk INT NOT NULL AUTO_INCREMENT,
|
||||
col_int_key INT DEFAULT NULL,
|
||||
col_varchar_key VARCHAR(1) DEFAULT NULL,
|
||||
PRIMARY KEY (pk),
|
||||
KEY col_varchar_key (col_varchar_key,col_int_key)
|
||||
);
|
||||
|
||||
INSERT INTO t1 VALUES (27,7,'x');
|
||||
INSERT INTO t1 VALUES (28,6,'m');
|
||||
INSERT INTO t1 VALUES (29,4,'c');
|
||||
|
||||
CREATE TABLE where_subselect
|
||||
SELECT DISTINCT `pk` AS field1 , `pk` AS field2
|
||||
FROM t1 AS alias1
|
||||
WHERE alias1 . `col_int_key` > 229
|
||||
OR alias1 . `col_varchar_key` IS NOT NULL
|
||||
GROUP BY field1, field2
|
||||
;
|
||||
|
||||
SELECT *
|
||||
FROM where_subselect
|
||||
WHERE (field1, field2) IN (
|
||||
SELECT DISTINCT `pk` AS field1 , `pk` AS field2
|
||||
FROM t1 AS alias1
|
||||
WHERE alias1 . `col_int_key` > 229
|
||||
OR alias1 . `col_varchar_key` IS NOT NULL
|
||||
GROUP BY field1, field2
|
||||
);
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP TABLE where_subselect;
|
||||
|
||||
--echo # End of Bug #58761
|
||||
|
||||
##
|
||||
# Bug#35844: Covering index for ref access not compatible with ORDER BY list
|
||||
#
|
||||
|
||||
|
64
mysql-test/t/order_by_sortkey.test
Normal file
64
mysql-test/t/order_by_sortkey.test
Normal file
@@ -0,0 +1,64 @@
|
||||
#
|
||||
# WL#1393 - ORDER BY with LIMIT tests
|
||||
#
|
||||
# A big test in a separate file, so that we can run the original
|
||||
# order_by test with --debug without timeout.
|
||||
#
|
||||
# All the sort keys fit in memory, but the addon fields do not.
|
||||
#
|
||||
CREATE TABLE t1(
|
||||
f0 int auto_increment PRIMARY KEY,
|
||||
f1 int,
|
||||
f2 varchar(200)
|
||||
);
|
||||
|
||||
INSERT INTO t1(f1, f2) VALUES
|
||||
(0,"0"),(1,"1"),(2,"2"),(3,"3"),(4,"4"),(5,"5"),
|
||||
(6,"6"),(7,"7"),(8,"8"),(9,"9"),(10,"10"),
|
||||
(11,"11"),(12,"12"),(13,"13"),(14,"14"),(15,"15"),
|
||||
(16,"16"),(17,"17"),(18,"18"),(19,"19"),(20,"20"),
|
||||
(21,"21"),(22,"22"),(23,"23"),(24,"24"),(25,"25"),
|
||||
(26,"26"),(27,"27"),(28,"28"),(29,"29"),(30,"30"),
|
||||
(31,"31"),(32,"32"),(33,"33"),(34,"34"),(35,"35"),
|
||||
(36,"36"),(37,"37"),(38,"38"),(39,"39"),(40,"40"),
|
||||
(41,"41"),(42,"42"),(43,"43"),(44,"44"),(45,"45"),
|
||||
(46,"46"),(47,"47"),(48,"48"),(49,"49"),(50,"50"),
|
||||
(51,"51"),(52,"52"),(53,"53"),(54,"54"),(55,"55"),
|
||||
(56,"56"),(57,"57"),(58,"58"),(59,"59"),(60,"60"),
|
||||
(61,"61"),(62,"62"),(63,"63"),(64,"64"),(65,"65"),
|
||||
(66,"66"),(67,"67"),(68,"68"),(69,"69"),(70,"70"),
|
||||
(71,"71"),(72,"72"),(73,"73"),(74,"74"),(75,"75"),
|
||||
(76,"76"),(77,"77"),(78,"78"),(79,"79"),(80,"80"),
|
||||
(81,"81"),(82,"82"),(83,"83"),(84,"84"),(85,"85"),
|
||||
(86,"86"),(87,"87"),(88,"88"),(89,"89"),(90,"90"),
|
||||
(91,"91"),(92,"92"),(93,"93"),(94,"94"),(95,"95"),
|
||||
(96,"96"),(97,"97"),(98,"98"),(99,"99");
|
||||
|
||||
CREATE TEMPORARY TABLE tmp (f1 int, f2 varchar(20));
|
||||
INSERT INTO tmp SELECT f1,f2 FROM t1;
|
||||
INSERT INTO t1(f1,f2) SELECT * FROM tmp;
|
||||
INSERT INTO tmp SELECT f1,f2 FROM t1;
|
||||
INSERT INTO t1(f1,f2) SELECT * FROM tmp;
|
||||
INSERT INTO t1(f1,f2) SELECT * FROM tmp;
|
||||
INSERT INTO tmp SELECT f1,f2 FROM t1;
|
||||
INSERT INTO t1(f1,f2) SELECT * FROM tmp;
|
||||
INSERT INTO tmp SELECT f1,f2 FROM t1;
|
||||
INSERT INTO t1(f1,f2) SELECT * FROM tmp;
|
||||
INSERT INTO tmp SELECT f1,f2 FROM t1;
|
||||
INSERT INTO t1(f1,f2) SELECT * FROM tmp;
|
||||
INSERT INTO tmp SELECT f1,f2 FROM t1;
|
||||
INSERT INTO t1(f1,f2) SELECT * FROM tmp;
|
||||
INSERT INTO tmp SELECT f1,f2 FROM t1;
|
||||
INSERT INTO t1(f1,f2) SELECT * FROM tmp;
|
||||
|
||||
# Test when only sortkeys fits to memory
|
||||
set sort_buffer_size= 32768;
|
||||
|
||||
FLUSH STATUS;
|
||||
SHOW SESSION STATUS LIKE 'Sort%';
|
||||
|
||||
SELECT * FROM t1 ORDER BY f2 LIMIT 100;
|
||||
|
||||
SHOW SESSION STATUS LIKE 'Sort%';
|
||||
|
||||
DROP TABLE t1, tmp;
|
@@ -243,6 +243,54 @@ call p1();
|
||||
drop procedure p1;
|
||||
drop tables t1,t2,t3;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #58756
|
||||
--echo # Crash in heap_rrnd on query with HAVING ... IN (subquery) + LIMIT
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (
|
||||
col_time_key time DEFAULT NULL,
|
||||
col_datetime_key datetime DEFAULT NULL,
|
||||
col_varchar_nokey varchar(1) DEFAULT NULL,
|
||||
KEY col_time_key (col_time_key),
|
||||
KEY col_datetime_key (col_datetime_key)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
|
||||
INSERT INTO t1 VALUES ('17:53:30','2005-11-10 12:40:29','h');
|
||||
INSERT INTO t1 VALUES ('11:35:49','2009-04-25 00:00:00','b');
|
||||
INSERT INTO t1 VALUES (NULL,'2002-11-27 00:00:00','s');
|
||||
INSERT INTO t1 VALUES ('06:01:40','2004-01-26 20:32:32','e');
|
||||
INSERT INTO t1 VALUES ('05:45:11','2007-10-26 11:41:40','j');
|
||||
INSERT INTO t1 VALUES ('00:00:00','2005-10-07 00:00:00','e');
|
||||
INSERT INTO t1 VALUES ('00:00:00','2000-07-15 05:00:34','f');
|
||||
INSERT INTO t1 VALUES ('06:11:01','2000-04-03 16:33:32','v');
|
||||
INSERT INTO t1 VALUES ('13:02:46',NULL,'x');
|
||||
INSERT INTO t1 VALUES ('21:44:25','2001-04-25 01:26:12','m');
|
||||
INSERT INTO t1 VALUES ('22:43:58','2000-12-27 00:00:00','c');
|
||||
|
||||
CREATE TABLE t2 (
|
||||
col_time_key time DEFAULT NULL,
|
||||
col_datetime_key datetime DEFAULT NULL,
|
||||
col_varchar_nokey varchar(1) DEFAULT NULL,
|
||||
KEY col_time_key (col_time_key),
|
||||
KEY col_datetime_key (col_datetime_key)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
|
||||
INSERT INTO t2 VALUES ('11:28:45','2004-10-11 18:13:16','w');
|
||||
|
||||
SELECT col_time_key, col_datetime_key
|
||||
FROM
|
||||
( SELECT * FROM t1 ) AS table1
|
||||
HAVING ( 'r' , 'e' ) IN
|
||||
( SELECT col_varchar_nokey , col_varchar_nokey FROM t2 )
|
||||
ORDER BY col_datetime_key
|
||||
LIMIT 10;
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
|
||||
--echo # End of Bug #58756
|
||||
|
||||
--echo #
|
||||
--echo # Bug#60085 crash in Item::save_in_field() with time data type
|
||||
--echo #
|
||||
|
Reference in New Issue
Block a user