~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/r/derived.result

  • Committer: Brian Aker
  • Date: 2008-12-24 19:41:08 UTC
  • mfrom: (722.2.32 devel)
  • Revision ID: brian@tangent.org-20081224194108-4140ku9dgjkyk97m
Merge from Monty.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
drop table if exists t1,t2,t3;
2
 
select * from (select 2 from DUAL) b;
 
2
Warnings:
 
3
Note    1051    Unknown table 't1'
 
4
Note    1051    Unknown table 't2'
 
5
Note    1051    Unknown table 't3'
 
6
select * from (select 2) b;
3
7
2
4
8
2
5
9
SELECT 1 as a FROM (SELECT 1 UNION SELECT a) b;
114
118
explain select * from (select t1.*, t2.a as t2a from t1,t2 where t1.a=t2.a) t1;
115
119
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
116
120
1       PRIMARY <derived2>      system  NULL    NULL    NULL    NULL    1       
117
 
2       DERIVED t2      system  NULL    NULL    NULL    NULL    1       
118
 
2       DERIVED t1      ALL     NULL    NULL    NULL    NULL    4       Using where
 
121
2       DERIVED t2      ALL     NULL    NULL    NULL    NULL    1       
 
122
2       DERIVED t1      ALL     NULL    NULL    NULL    NULL    4       Using where; Using join buffer
119
123
drop table t1, t2;
120
124
create table t1(a int not null, t char(8), index(a));
121
125
SELECT * FROM (SELECT * FROM t1) as b ORDER BY a  ASC LIMIT 0,20;
142
146
20      20
143
147
explain select count(*) from t1 as tt1, (select * from t1) as tt2;
144
148
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
145
 
1       PRIMARY NULL    NULL    NULL    NULL    NULL    NULL    NULL    Select tables optimized away
146
 
2       DERIVED t1      ALL     NULL    NULL    NULL    NULL    10000   
 
149
1       PRIMARY tt1     index   NULL    a       4       NULL    X       Using index
 
150
1       PRIMARY <derived2>      ALL     NULL    NULL    NULL    NULL    X       Using join buffer
 
151
2       DERIVED t1      ALL     NULL    NULL    NULL    NULL    X       
147
152
drop table t1;
148
153
SELECT * FROM (SELECT (SELECT * FROM (SELECT 1 as a) as a )) as b;
149
154
(SELECT * FROM (SELECT 1 as a) as a )
166
171
1       PRIMARY <derived2>      ALL     NULL    NULL    NULL    NULL    3       
167
172
2       DERIVED t1      ALL     NULL    NULL    NULL    NULL    3       Using temporary; Using filesort
168
173
drop table t1;
169
 
create table t1 (mat_id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, matintnum CHAR(6) NOT NULL, test MEDIUMINT UNSIGNED NULL);
170
 
create table t2 (mat_id MEDIUMINT UNSIGNED NOT NULL, pla_id MEDIUMINT UNSIGNED NOT NULL);
 
174
create table t1 (mat_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, matintnum CHAR(6) NOT NULL, test INT NULL);
 
175
create table t2 (mat_id INT NOT NULL, pla_id INT NOT NULL);
171
176
insert into t1 values (NULL, 'a', 1), (NULL, 'b', 2), (NULL, 'c', 3), (NULL, 'd', 4), (NULL, 'e', 5), (NULL, 'f', 6), (NULL, 'g', 7), (NULL, 'h', 8), (NULL, 'i', 9);
172
177
insert into t2 values (1, 100), (1, 101), (1, 102), (2, 100), (2, 103), (2, 104), (3, 101), (3, 102), (3, 105);
173
178
SELECT STRAIGHT_JOIN d.pla_id, m2.mat_id FROM t1 m2 INNER JOIN (SELECT mp.pla_id, MIN(m1.matintnum) AS matintnum FROM t2 mp INNER JOIN t1 m1 ON mp.mat_id=m1.mat_id GROUP BY mp.pla_id) d ON d.matintnum=m2.matintnum;
191
196
1       PRIMARY m2      ALL     NULL    NULL    NULL    NULL    9       
192
197
1       PRIMARY <derived2>      ALL     NULL    NULL    NULL    NULL    6       Using where; Using join buffer
193
198
2       DERIVED mp      ALL     NULL    NULL    NULL    NULL    9       Using temporary; Using filesort
194
 
2       DERIVED m1      eq_ref  PRIMARY PRIMARY 3       test.mp.mat_id  1       
 
199
2       DERIVED m1      eq_ref  PRIMARY PRIMARY 4       test.mp.mat_id  1       
195
200
explain SELECT STRAIGHT_JOIN d.pla_id, m2.test FROM t1 m2  INNER JOIN (SELECT mp.pla_id, MIN(m1.matintnum) AS matintnum FROM t2 mp INNER JOIN t1 m1 ON mp.mat_id=m1.mat_id GROUP BY mp.pla_id) d ON d.matintnum=m2.matintnum;
196
201
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
197
202
1       PRIMARY m2      ALL     NULL    NULL    NULL    NULL    9       
198
203
1       PRIMARY <derived2>      ALL     NULL    NULL    NULL    NULL    6       Using where; Using join buffer
199
204
2       DERIVED mp      ALL     NULL    NULL    NULL    NULL    9       Using temporary; Using filesort
200
 
2       DERIVED m1      eq_ref  PRIMARY PRIMARY 3       test.mp.mat_id  1       
 
205
2       DERIVED m1      eq_ref  PRIMARY PRIMARY 4       test.mp.mat_id  1       
201
206
drop table t1,t2;
202
207
SELECT a.x FROM (SELECT 1 AS x) AS a HAVING a.x = 1;
203
208
x
204
209
1
205
 
create user mysqltest_1;
206
 
create table t1 select 1 as a;
207
 
select 2 as a from (select * from t1) b;
208
 
ERROR 3D000: No database selected
209
 
use test;
210
 
select 2 as a from (select * from t1) b;
211
 
a
212
 
2
213
 
drop table t1;
214
 
select mail_id,  if(folder.f_description!='', folder.f_description, folder.f_name) as folder_name,  date, address_id, phrase, address,  subject from folder, (select  mail.mail_id as mail_id,  date_format(mail.h_date, '%b %e, %Y %h:%i') as date,  mail.folder_id,  sender.address_id as address_id,  sender.phrase as phrase, sender.address as address,    mail.h_subject as subject from    mail left join mxa as mxa_sender on mail.mail_id=mxa_sender.mail_id and mxa_sender.type='from' left join address as sender on mxa_sender.address_id=sender.address_id  mxa as mxa_recipient,   address as recipient, where 1     and mail.mail_id=mxa_recipient.mail_id   and mxa_recipient.address_id=recipient.address_id   and mxa_recipient.type='to'  and  match(sender.phrase, sender.address, sender.comment) against ('jeremy' in boolean mode)   and  match(recipient.phrase, recipient.address, recipient.comment) against ('monty' in boolean mode) order by mail.h_date desc limit 0, 25 ) as query where query.folder_id=folder.folder_id;
215
 
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mxa as mxa_recipient,   address as recipient, where 1     and mail.mail_id=mxa_r' at line 1
216
210
create table t1 (a int);
217
211
insert into t1 values (1),(2),(3);
218
212
update (select * from t1) as t1 set a = 5;
219
213
ERROR HY000: The target table t1 of the UPDATE is not updatable
220
214
delete from (select * from t1);
221
 
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(select * from t1)' at line 1
 
215
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your Drizzle server version for the right syntax to use near '(select * from t1)' at line 1
222
216
insert into  (select * from t1) values (5);
223
 
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(select * from t1) values (5)' at line 1
 
217
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your Drizzle server version for the right syntax to use near '(select * from t1) values (5)' at line 1
224
218
drop table t1;
225
 
create table t1 (E1 INTEGER UNSIGNED NOT NULL, E2 INTEGER UNSIGNED NOT NULL, E3 INTEGER UNSIGNED NOT NULL, PRIMARY KEY(E1)
 
219
create table t1 (E1 INTEGER NOT NULL, E2 INTEGER NOT NULL, E3 INTEGER NOT NULL, PRIMARY KEY(E1)
226
220
);
227
221
insert into t1 VALUES(1,1,1), (2,2,1);
228
222
select count(*) from t1 INNER JOIN (SELECT A.E1, A.E2, A.E3 FROM t1 AS A WHERE A.E3 = (SELECT MAX(B.E3) FROM t1 AS B WHERE A.E2 = B.E2)) AS THEMAX ON t1.E1 = THEMAX.E2 AND t1.E1 = t1.E2;
230
224
2
231
225
explain select count(*) from t1 INNER JOIN (SELECT A.E1, A.E2, A.E3 FROM t1 AS A WHERE A.E3 = (SELECT MAX(B.E3) FROM t1 AS B WHERE A.E2 = B.E2)) AS THEMAX ON t1.E1 = THEMAX.E2 AND t1.E1 = t1.E2;
232
226
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
233
 
1       PRIMARY <derived2>      ALL     NULL    NULL    NULL    NULL    2       
234
 
1       PRIMARY t1      eq_ref  PRIMARY PRIMARY 4       THEMAX.E2       1       Using where
 
227
1       PRIMARY t1      ALL     PRIMARY NULL    NULL    NULL    2       Using where
 
228
1       PRIMARY <derived2>      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer
235
229
2       DERIVED A       ALL     NULL    NULL    NULL    NULL    2       Using where
236
230
3       DEPENDENT SUBQUERY      B       ALL     NULL    NULL    NULL    NULL    2       Using where
237
231
drop table t1;
255
249
NULL    UNION RESULT    <union2,3>      ALL     NULL    NULL    NULL    NULL    NULL    
256
250
drop table t1;
257
251
CREATE TABLE `t1` (
258
 
`N` int(11) unsigned NOT NULL default '0',
259
 
`M` tinyint(1) default '0'
260
 
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
252
`N` int NOT NULL default '0',
 
253
`M` int default '0'
 
254
) ENGINE=MyISAM;
261
255
INSERT INTO `t1` (N, M) VALUES (1, 0),(1, 0),(1, 0),(2, 0),(2, 0),(3, 0);
262
256
UPDATE `t1` AS P1 INNER JOIN (SELECT N FROM `t1` GROUP BY N HAVING Count(M) > 1) AS P2 ON P1.N = P2.N SET P1.M = 2;
263
257
select * from t1;
268
262
2       2
269
263
2       2
270
264
3       0
271
 
UPDATE `t1` AS P1 INNER JOIN (SELECT N FROM `t1` GROUP BY N HAVING Count(M) > 1) AS P2 ON P1.N = P2.N SET P1.M = 2, P2.N = 2;
272
 
ERROR HY000: The target table P2 of the UPDATE is not updatable
273
265
UPDATE `t1` AS P1 INNER JOIN (SELECT aaaa FROM `t1` GROUP BY N HAVING Count(M) > 1) AS P2 ON P1.N = P2.N SET P1.M = 2;
274
266
ERROR 42S22: Unknown column 'aaaa' in 'field list'
275
267
delete P1.* from `t1` AS P1 INNER JOIN (SELECT N FROM `t1` GROUP BY N HAVING Count(M) > 1) AS P2 ON P1.N = P2.N;
276
268
select * from t1;
277
269
N       M
278
270
3       0
279
 
delete P1.*,p2.* from `t1` AS P1 INNER JOIN (SELECT N FROM `t1` GROUP BY N HAVING Count(M) > 1) AS p2 ON P1.N = p2.N;
280
 
ERROR HY000: The target table p2 of the DELETE is not updatable
281
 
delete P1.* from `t1` AS P1 INNER JOIN (SELECT aaa FROM `t1` GROUP BY N HAVING Count(M) > 1) AS P2 ON P1.N = P2.N;
 
271
delete P1.* from `t1` AS P1 INNER JOIN (SELECT aaa FROM `t1` GROUP BY N HAVING Count(M) > 1) AS p2 ON P1.N = p2.N;
282
272
ERROR 42S22: Unknown column 'aaa' in 'field list'
283
273
drop table t1;
284
274
CREATE TABLE t1 (
285
 
OBJECTID int(11) NOT NULL default '0',
286
 
SORTORDER int(11) NOT NULL auto_increment,
 
275
OBJECTID int NOT NULL default 0,
 
276
SORTORDER int NOT NULL auto_increment,
287
277
KEY t1_SortIndex (SORTORDER),
288
278
KEY t1_IdIndex (OBJECTID)
289
 
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
279
) ENGINE=MyISAM;
290
280
CREATE TABLE t2 (
291
 
ID int(11) default NULL,
292
 
PARID int(11) default NULL,
 
281
ID int default NULL,
 
282
PARID int default NULL,
293
283
UNIQUE KEY t2_ID_IDX (ID),
294
284
KEY t2_PARID_IDX (PARID)
295
 
) engine=MyISAM DEFAULT CHARSET=latin1;
 
285
) engine=MyISAM;
296
286
INSERT INTO t2 VALUES (1000,0),(1001,0),(1002,0),(1003,0),(1008,1),(1009,1),(1010,1),(1011,1),(1016,2);
297
287
CREATE TABLE t3 (
298
 
ID int(11) default NULL,
 
288
ID int default NULL,
299
289
DATA decimal(10,2) default NULL,
300
290
UNIQUE KEY t3_ID_IDX (ID)
301
 
) engine=MyISAM DEFAULT CHARSET=latin1;
 
291
) engine=MyISAM;
302
292
INSERT INTO t3 VALUES (1000,0.00),(1001,0.25),(1002,0.50),(1003,0.75),(1008,1.00),(1009,1.25),(1010,1.50),(1011,1.75);
303
293
select 497, TMP.ID, NULL from (select 497 as ID, MAX(t3.DATA) as DATA      from t1 join t2 on (t1.ObjectID = t2.ID) join t3 on (t1.ObjectID = t3.ID) group by t2.ParID order by DATA DESC) as TMP;
304
294
497     ID      NULL
305
295
drop table t1, t2, t3;
306
 
CREATE TABLE t1 (name char(1) default NULL, val int(5) default NULL);
 
296
CREATE TABLE t1 (name char(1) default NULL, val int default NULL);
307
297
INSERT INTO t1 VALUES ('a',1),  ('a',2),  ('a',2),  ('a',2),  ('a',3),  ('a',6), ('a',7), ('a',11), ('a',11), ('a',12), ('a',13), ('a',13), ('a',20), ('b',2), ('b',3), ('b',4), ('b',5);
308
298
SELECT s.name, AVG(s.val) AS median FROM (SELECT x.name, x.val FROM t1 x, t1 y WHERE x.name=y.name GROUP BY x.name, x.val HAVING SUM(y.val <= x.val) >= COUNT(*)/2 AND SUM(y.val >= x.val) >= COUNT(*)/2) AS s GROUP BY s.name;
309
299
name    median
319
309
insert into t2 values (1,7),(2,7);
320
310
explain select a from t2 where a>1;
321
311
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
322
 
1       SIMPLE  t2      index   PRIMARY PRIMARY 4       NULL    2       Using where; Using index
 
312
1       SIMPLE  t2      range   PRIMARY PRIMARY 4       NULL    1       Using where; Using index
323
313
explain select a from (select a from t2 where a>1) tt;
324
314
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
325
315
1       PRIMARY <derived2>      system  NULL    NULL    NULL    NULL    1       
326
 
2       DERIVED t2      index   PRIMARY PRIMARY 4       NULL    2       Using where; Using index
 
316
2       DERIVED t2      range   PRIMARY PRIMARY 4       NULL    1       Using where; Using index
327
317
drop table t2;
328
 
CREATE TABLE `t1` ( `itemid` int(11) NOT NULL default '0', `grpid` varchar(15) NOT NULL default '', `vendor` int(11) NOT NULL default '0', `date_` date NOT NULL default '0000-00-00', `price` decimal(12,2) NOT NULL default '0.00', PRIMARY KEY  (`itemid`,`grpid`,`vendor`,`date_`), KEY `itemid` (`itemid`,`vendor`), KEY `itemid_2` (`itemid`,`date_`));
 
318
CREATE TABLE `t1` ( `itemid` int NOT NULL default 0, `grpid` varchar(15) NOT NULL default '', `vendor` int NOT NULL default 0, `date_` date NOT NULL default '1900-01-01', `price` decimal(12,2) NOT NULL default '0.00', PRIMARY KEY  (`itemid`,`grpid`,`vendor`,`date_`), KEY `itemid` (`itemid`,`vendor`), KEY `itemid_2` (`itemid`,`date_`));
329
319
insert into t1 values (128, 'rozn', 2, curdate(), 10),
330
320
(128, 'rozn', 1, curdate(), 10);
331
321
SELECT MIN(price) min, MAX(price) max, AVG(price) avg FROM (SELECT SUBSTRING( MAX(concat(date_,";",price)), 12) price FROM t1 WHERE itemid=128 AND  grpid='rozn' GROUP BY itemid, grpid, vendor) lastprices;
368
358
create table t1 (a int);
369
359
create table t2 (a int);
370
360
select * from (select * from t1,t2) foo;
371
 
ERROR 42S21: Duplicate column name 'a'
 
361
a       a
372
362
drop table t1,t2;
373
 
create table t1 (ID int unsigned not null auto_increment,
 
363
create table t1 (ID int not null auto_increment,
374
364
DATA varchar(5) not null, primary key (ID));
375
 
create table t2 (ID int unsigned not null auto_increment,
376
 
DATA varchar(5) not null, FID int unsigned not null,
 
365
create table t2 (ID int not null auto_increment,
 
366
DATA varchar(5) not null, FID int not null,
377
367
primary key (ID));
378
368
select A.* from (t1 inner join (select * from t2) as A on t1.ID = A.FID);
379
369
ID      DATA    FID
382
372
select t2.* from (select * from t1) as A inner join t2 on A.ID = t2.FID;
383
373
ID      DATA    FID
384
374
drop table t1, t2;
385
 
drop user mysqltest_1;