~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/derived.test

  • Committer: Monty Taylor
  • Date: 2008-11-16 06:29:53 UTC
  • mto: (584.1.9 devel)
  • mto: This revision was merged to the branch mainline in revision 589.
  • Revision ID: monty@inaugust.com-20081116062953-ivdltjmfe009b5fr
Moved stuff into item/

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
CREATE TABLE t3 (a int not null, b char (10) not null);
18
18
insert into t3 values (3,'f'),(4,'y'),(5,'z'),(6,'c');
19
19
select t1.a,t4.y from t1,(select t2.a as y from t2,(select t3.b from t3 where t3.a>3) as t5  where t2.b=t5.b) as t4  where t1.a = t4.y;
20
 
--error ER_BAD_FIELD_ERROR
 
20
--error 1054
21
21
SELECT a FROM (SELECT 1 FROM (SELECT 1) a HAVING a=1) b;
22
 
--error ER_NON_UNIQ_ERROR
 
22
--error 1052
23
23
SELECT a,b as a FROM (SELECT '1' as a,'2' as b) b  HAVING a=1;
24
24
SELECT a,2 as a FROM (SELECT '1' as a) b HAVING a=2;
25
25
SELECT a,2 as a FROM (SELECT '1' as a) b HAVING a=1;
26
 
--error ER_BAD_FIELD_ERROR
 
26
--error 1054
27
27
SELECT 1 FROM (SELECT 1) a WHERE a=2;
28
 
--error ER_BAD_FIELD_ERROR
 
28
--error 1054
29
29
SELECT (SELECT 1) as a FROM (SELECT 1 FROM t1  HAVING a=1) as a;
30
 
--sort_result
31
30
select * from t1 as x1, (select * from t1) as x2;
32
31
explain select * from t1 as x1, (select * from t1) as x2;
33
32
drop table if exists  t2,t3;
47
46
drop table t1, t2;
48
47
create table t1(a int not null, t char(8), index(a));
49
48
disable_query_log;
50
 
begin;
51
49
let $1 = 10000;
52
50
while ($1)
53
51
 {
54
52
  eval insert into t1 values ($1,'$1'); 
55
53
  dec $1;
56
54
 }
57
 
commit;
58
55
enable_query_log;
59
56
SELECT * FROM (SELECT * FROM t1) as b ORDER BY a  ASC LIMIT 0,20;
60
 
--replace_column 9 X
61
57
explain select count(*) from t1 as tt1, (select * from t1) as tt2;
62
58
drop table t1;
63
59
SELECT * FROM (SELECT (SELECT * FROM (SELECT 1 as a) as a )) as b;
64
60
select * from (select 1 as a) b  left join (select 2 as a) c using(a);
65
 
--error ER_BAD_FIELD_ERROR
 
61
--error 1054
66
62
SELECT * FROM (SELECT 1 UNION SELECT a) b;
67
 
--error ER_BAD_FIELD_ERROR
 
63
--error 1054
68
64
SELECT 1 as a FROM (SELECT a UNION SELECT 1) b;
69
 
--error ER_BAD_FIELD_ERROR
 
65
--error 1054
70
66
SELECT 1 as a FROM (SELECT 1 UNION SELECT a) b;
71
 
--error ER_BAD_FIELD_ERROR
 
67
--error 1054
72
68
select 1 from  (select 2) a order by 0;
73
69
 
74
70
#
83
79
#
84
80
# test->used_keys test for derived tables
85
81
#
86
 
create table t1 (mat_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, matintnum CHAR(6) NOT NULL, test INT NULL);
87
 
create table t2 (mat_id INT NOT NULL, pla_id INT NOT NULL);
 
82
create table t1 (mat_id MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY, matintnum CHAR(6) NOT NULL, test MEDIUMINT NULL);
 
83
create table t2 (mat_id MEDIUMINT NOT NULL, pla_id MEDIUMINT NOT NULL);
88
84
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);
89
85
insert into t2 values (1, 100), (1, 101), (1, 102), (2, 100), (2, 103), (2, 104), (3, 101), (3, 102), (3, 105);
90
86
 
105
101
#
106
102
create table t1 (a int);
107
103
insert into t1 values (1),(2),(3);
 
104
-- error 1288
 
105
update (select * from t1) as t1 set a = 5;
108
106
-- error 1064
109
107
delete from (select * from t1);
110
108
-- error 1064
117
115
create table t1 (E1 INTEGER NOT NULL, E2 INTEGER NOT NULL, E3 INTEGER NOT NULL, PRIMARY KEY(E1)
118
116
);
119
117
insert into t1 VALUES(1,1,1), (2,2,1);
120
 
--sort_result
121
118
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;
122
119
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;
123
120
drop table t1;
124
121
 
125
122
create table t1 (a int);
126
123
insert into t1 values (1),(2);
127
 
--sort_result
128
124
select * from ( select * from t1 union select * from t1) a,(select * from t1 union select * from t1) b;
129
125
explain select * from ( select * from t1 union select * from t1) a,(select * from t1 union select * from t1) b;
130
126
drop table t1;
131
127
 
132
128
#
 
129
# multi-update & multi-delete with derived tables
 
130
#
 
131
CREATE TABLE `t1` (
 
132
  `N` int(11) NOT NULL default '0',
 
133
  `M` int(1) default '0'
 
134
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
135
INSERT INTO `t1` (N, M) VALUES (1, 0),(1, 0),(1, 0),(2, 0),(2, 0),(3, 0);
 
136
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;
 
137
select * from t1;
 
138
-- error 1288
 
139
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;
 
140
-- error 1054
 
141
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;
 
142
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;
 
143
select * from t1;
 
144
--replace_result P2 p2
 
145
--error ER_NON_UPDATABLE_TABLE
 
146
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;
 
147
-- error 1054
 
148
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;
 
149
drop table t1;
 
150
 
 
151
#
133
152
# correct lex->current_select
134
153
#
135
 
CREATE TEMPORARY TABLE t1 (
136
 
  OBJECTID int NOT NULL default 0,
137
 
  SORTORDER int NOT NULL auto_increment,
 
154
CREATE TABLE t1 (
 
155
  OBJECTID int(11) NOT NULL default '0',
 
156
  SORTORDER int(11) NOT NULL auto_increment,
138
157
  KEY t1_SortIndex (SORTORDER),
139
158
  KEY t1_IdIndex (OBJECTID)
140
 
) ENGINE=MyISAM;
141
 
CREATE TEMPORARY TABLE t2 (
142
 
  ID int default NULL,
143
 
  PARID int default NULL,
 
159
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
160
CREATE TABLE t2 (
 
161
  ID int(11) default NULL,
 
162
  PARID int(11) default NULL,
144
163
  UNIQUE KEY t2_ID_IDX (ID),
145
164
  KEY t2_PARID_IDX (PARID)
146
 
) engine=MyISAM;
 
165
) engine=MyISAM DEFAULT CHARSET=latin1;
147
166
INSERT INTO t2 VALUES (1000,0),(1001,0),(1002,0),(1003,0),(1008,1),(1009,1),(1010,1),(1011,1),(1016,2);
148
 
CREATE TEMPORARY TABLE t3 (
149
 
  ID int default NULL,
 
167
CREATE TABLE t3 (
 
168
  ID int(11) default NULL,
150
169
  DATA decimal(10,2) default NULL,
151
170
  UNIQUE KEY t3_ID_IDX (ID)
152
 
) engine=MyISAM;
 
171
) engine=MyISAM DEFAULT CHARSET=latin1;
153
172
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);
154
173
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;
155
174
drop table t1, t2, t3;
157
176
#
158
177
# explain derived
159
178
#
160
 
CREATE TABLE t1 (name char(1) default NULL, val int default NULL);
 
179
CREATE TABLE t1 (name char(1) default NULL, val int(5) default NULL);
161
180
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);
162
181
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;
163
182
explain 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;
175
194
#
176
195
# select list counter
177
196
#
178
 
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_`));
 
197
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_`));
179
198
insert into t1 values (128, 'rozn', 2, curdate(), 10),
180
199
  (128, 'rozn', 1, curdate(), 10);
181
200
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;
200
219
#
201
220
CREATE TABLE t1 (a char(10), b char(10));
202
221
INSERT INTO t1 VALUES ('root','localhost'), ('root','%');
203
 
--error ER_SUBQUERY_NO_1_ROW
 
222
--error 1242
204
223
SELECT * FROM (SELECT (SELECT a.a FROM t1 AS a WHERE a.a = b.a) FROM t1 AS b) AS c;
205
224
DROP TABLE t1;
206
225
#
221
240
#
222
241
create table t1 (a int);
223
242
create table t2 (a int);
 
243
--error 1060
224
244
select * from (select * from t1,t2) foo;
225
245
drop table t1,t2;
226
246
 
237
257
select t2.* from (select * from t1) as A inner join t2 on A.ID = t2.FID;
238
258
drop table t1, t2;
239
259
 
 
260
disconnect con1;
 
261
connection default;
 
262
drop user mysqltest_1;
 
263
 
 
264
# End of 4.1 tests