~drizzle-trunk/drizzle/development

1 by brian
clean slate
1
drop table if exists t1,t2;
2
create table t1 (a int not null auto_increment, b int not null, primary key(a));
3
insert into t1 (b) values (2),(3),(5),(5),(5),(6),(7),(9);
4
select SQL_CALC_FOUND_ROWS * from t1;
5
a	b
6
1	2
7
2	3
8
3	5
9
4	5
10
5	5
11
6	6
12
7	7
13
8	9
14
select found_rows();
15
found_rows()
16
8
17
select SQL_CALC_FOUND_ROWS * from t1 limit 1;
18
a	b
19
1	2
20
select found_rows();
21
found_rows()
22
8
23
select SQL_BUFFER_RESULT SQL_CALC_FOUND_ROWS * from t1 limit 1;
24
a	b
25
1	2
26
select found_rows();
27
found_rows()
28
8
29
select SQL_CALC_FOUND_ROWS * from t1 order by b desc limit 1;
30
a	b
31
8	9
32
select found_rows();
33
found_rows()
34
8
35
select SQL_CALC_FOUND_ROWS distinct b from t1 limit 1;
36
b
37
2
38
select found_rows();
39
found_rows()
40
6
41
select SQL_CALC_FOUND_ROWS b,count(*) as c from t1 group by b order by c desc limit 1;
42
b	c
43
5	3
44
select found_rows();
45
found_rows()
46
6
47
select SQL_CALC_FOUND_ROWS * from t1 left join t1 as t2 on (t1.b=t2.a) limit 2,1;
48
a	b	a	b
49
3	5	5	5
50
select found_rows();
51
found_rows()
52
8
53
drop table t1;
54
create table t1 (a int not null primary key);
55
insert into t1 values (1),(2),(3),(4),(5);
56
select sql_calc_found_rows a from t1 where a in (1,2,3) order by a desc limit 0,2;
57
a
58
3
59
2
60
select FOUND_ROWS();
61
FOUND_ROWS()
62
3
63
select sql_calc_found_rows a from t1 where a in (1,2,3) order by a+2 desc limit 0,2;
64
a
65
3
66
2
67
select FOUND_ROWS();
68
FOUND_ROWS()
69
3
70
drop table t1;
71
CREATE TABLE t1 (
673.3.20 by Stewart Smith
fix CREATE TABLE statements in select_found (and bulk load data in txn)
72
`id` int NOT NULL auto_increment,
73
`kid` int NOT NULL default '0',
1 by brian
clean slate
74
PRIMARY KEY (`id`),
75
KEY `kid` (`kid`)
673.3.23 by Stewart Smith
fix select_found test for innodb (and other engines) by adding order by (so that result set is same as myisam)
76
);
1 by brian
clean slate
77
CREATE TABLE t2 (
673.3.20 by Stewart Smith
fix CREATE TABLE statements in select_found (and bulk load data in txn)
78
id int NOT NULL auto_increment,
1 by brian
clean slate
79
name varchar(50) NOT NULL default '',
80
email varchar(50) NOT NULL default '',
81
PRIMARY KEY  (id),
82
UNIQUE KEY e_n (email,name)
673.3.23 by Stewart Smith
fix select_found test for innodb (and other engines) by adding order by (so that result set is same as myisam)
83
);
84
EXPLAIN SELECT SQL_CALC_FOUND_ROWS DISTINCT email FROM t2 LEFT JOIN t1  ON kid = t2.id WHERE t1.id IS NULL ORDER BY t2.email LIMIT 10;
1 by brian
clean slate
85
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
673.3.23 by Stewart Smith
fix select_found test for innodb (and other engines) by adding order by (so that result set is same as myisam)
86
1	SIMPLE	t2	index	NULL	PRIMARY	4	NULL	200	Using temporary; Using filesort
87
1	SIMPLE	t1	ref	kid	kid	4	test.t2.id	1	Using where; Using index; Not exists; Distinct
88
SELECT SQL_CALC_FOUND_ROWS DISTINCT email FROM t2 LEFT JOIN t1  ON kid = t2.id WHERE t1.id IS NULL ORDER BY t2.email  LIMIT 10;
1 by brian
clean slate
89
email
90
email1
91
email10
92
email100
93
email101
94
email102
95
email103
96
email104
97
email105
98
email106
99
email107
100
SELECT FOUND_ROWS();
101
FOUND_ROWS()
102
200
103
SELECT SQL_CALC_FOUND_ROWS DISTINCT email FROM t2 LEFT JOIN t1  ON kid = t2.id WHERE t1.id IS NULL order by email LIMIT 10;
104
email
105
email1
106
email10
107
email100
108
email101
109
email102
110
email103
111
email104
112
email105
113
email106
114
email107
115
SELECT FOUND_ROWS();
116
FOUND_ROWS()
117
200
118
SELECT DISTINCT email FROM t2 LEFT JOIN t1  ON kid = t2.id WHERE t1.id IS NULL LIMIT 10;
119
email
120
email1
121
email2
122
email3
123
email4
124
email5
125
email6
126
email7
127
email8
128
email9
129
email10
130
SELECT DISTINCT email FROM t2 LEFT JOIN t1  ON kid = t2.id WHERE t1.id IS NULL ORDER BY email LIMIT 10;
131
email
132
email1
133
email10
134
email100
135
email101
136
email102
137
email103
138
email104
139
email105
140
email106
141
email107
142
INSERT INTO `t1` (`id`, `kid`) VALUES ('0', '150');
143
SELECT SQL_CALC_FOUND_ROWS DISTINCT email FROM t2 LEFT JOIN t1  ON kid = t2.id WHERE t1.id IS NULL LIMIT 10;
144
email
145
email1
146
email2
147
email3
148
email4
149
email5
150
email6
151
email7
152
email8
153
email9
154
email10
155
SELECT FOUND_ROWS();
156
FOUND_ROWS()
157
199
158
drop table t1,t2;
1063.9.25 by Stewart Smith
select_found.test for MyISAM as temp only
159
CREATE TEMPORARY TABLE `t1` (
1 by brian
clean slate
160
`titre` char(80) NOT NULL default '',
673.3.20 by Stewart Smith
fix CREATE TABLE statements in select_found (and bulk load data in txn)
161
`numeropost` int NOT NULL auto_increment,
162
`maxnumrep` int NOT NULL default '0',
1 by brian
clean slate
163
PRIMARY KEY  (`numeropost`),
164
KEY `maxnumrep` (`maxnumrep`)
165
) ENGINE=MyISAM ROW_FORMAT=FIXED;
166
INSERT INTO t1 (titre,maxnumrep) VALUES
167
('test1','1'),('test2','2'),('test3','3');
168
SELECT SQL_CALC_FOUND_ROWS titre,numeropost,maxnumrep FROM t1 WHERE numeropost IN (1,2) ORDER BY maxnumrep DESC LIMIT 0, 1;
169
titre	numeropost	maxnumrep
170
test2	2	2
171
SELECT FOUND_ROWS();
172
FOUND_ROWS()
173
2
174
SELECT SQL_CALC_FOUND_ROWS 1 FROM (SELECT 1) as a LIMIT 0;
175
1
176
SELECT FOUND_ROWS();
177
FOUND_ROWS()
178
1
179
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE numeropost > 1  LIMIT 0;
180
titre	numeropost	maxnumrep
181
SELECT FOUND_ROWS();
182
FOUND_ROWS()
183
2
184
SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT 0;
185
titre	numeropost	maxnumrep
186
SELECT FOUND_ROWS();
187
FOUND_ROWS()
188
3
189
SELECT SQL_CALC_FOUND_ROWS * FROM t1 ORDER BY numeropost  LIMIT 0;
190
titre	numeropost	maxnumrep
191
SELECT FOUND_ROWS();
192
FOUND_ROWS()
193
3
194
drop table t1;
195
create table t1 (id int, primary key (id));
196
insert into t1 values (1), (2), (3), (4), (5);
197
select SQL_CALC_FOUND_ROWS * from t1 where id > 3 limit 0, 1;
198
id
199
4
200
select FOUND_ROWS();
201
FOUND_ROWS()
202
2
203
select SQL_CALC_FOUND_ROWS * from t1 where id > 3 AND 1=2 limit 0, 1;
204
id
205
select FOUND_ROWS();
206
FOUND_ROWS()
207
0
208
select SQL_CALC_FOUND_ROWS * from t1 where id > 6 limit 0, 1;
209
id
210
select FOUND_ROWS();
211
FOUND_ROWS()
212
0
213
drop table t1;
214
CREATE TABLE t1 ( a int not null, b int not null, KEY ab(a,b) );
215
INSERT INTO t1 VALUES ( 47,    1  );
216
INSERT INTO t1 VALUES ( 70,    1  );
217
SELECT * FROM t1
218
WHERE
219
(
220
( b =1 AND a BETWEEN 14 AND 21 ) OR
221
( b =2 AND a BETWEEN 16 AND 18 ) OR
222
( b =3 AND a BETWEEN 15 AND 19 )
223
);
224
a	b
225
DROP TABLE t1;
226
CREATE TABLE t1 ( a integer, u varchar(15), r integer, key uao_idx( r, a, u));
227
DELETE  FROM t1
228
WHERE (  r = 1 AND a IN ( 1, 2    ) AND ( u = 'w'   OR u LIKE 'w/%'   ) )
229
OR (  r = 1 AND a IN (       3 ) AND ( u = 'w/U' OR u LIKE 'w/U/%' ) )
230
OR (  r = 1 AND a IN ( 1, 2, 3 ) AND ( u = 'w'                     ) );
231
drop table t1;
232
CREATE TABLE t1 (a VARCHAR(16), UNIQUE(a));
233
INSERT INTO t1 VALUES ('1'), ('2'), ('3');
234
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a = '2' LIMIT 0, 1;
235
a
236
2
237
SELECT FOUND_ROWS();
238
FOUND_ROWS()
239
1
240
DROP TABLE t1;
241
CREATE TABLE t1 (a INT);
242
INSERT INTO t1 VALUES (0), (0), (1), (2);
243
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a = 0 GROUP BY a HAVING a > 10;
244
a
245
SELECT FOUND_ROWS();
246
FOUND_ROWS()
247
0
248
DROP TABLE t1;
249
SELECT 'foo';
250
foo
251
foo
252
SELECT FOUND_ROWS();
253
FOUND_ROWS()
254
1
255
SELECT SQL_CALC_FOUND_ROWS 'foo';
256
foo
257
foo
258
SELECT FOUND_ROWS();
259
FOUND_ROWS()
260
1
261
SELECT SQL_CALC_FOUND_ROWS 'foo' limit 0;
262
foo
263
SELECT FOUND_ROWS();
264
FOUND_ROWS()
265
1
266
SELECT FOUND_ROWS();
267
FOUND_ROWS()
268
1
269
SELECT SQL_CALC_FOUND_ROWS 'foo' UNION SELECT 'bar' LIMIT 0;
270
foo
271
SELECT FOUND_ROWS();
272
FOUND_ROWS()
273
2
274
CREATE TABLE t1 (a int, b int);
275
INSERT INTO t1 VALUES (1,2), (1,3), (1,4), (1,5);
276
SELECT SQL_CALC_FOUND_ROWS DISTINCT 'a' FROM t1 GROUP BY b LIMIT 2;
277
a
278
a
279
SELECT FOUND_ROWS();
280
FOUND_ROWS()
281
1
282
DROP TABLE t1;