~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/derived.test

  • Committer: Stewart Smith
  • Date: 2009-06-16 03:02:59 UTC
  • mto: This revision was merged to the branch mainline in revision 1065.
  • Revision ID: stewart@flamingspork.com-20090616030259-tn2thqrajk6cappd
ER_NISAMCHK is unused, mark it as so. Thanks to Paul DuBois for researching this for MySQL.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# Initialize
2
 
--disable_warnings
3
2
drop table if exists t1,t2,t3;
4
 
--enable_warnings
5
3
 
6
4
select * from (select 2) b;
7
5
-- error 1054
46
44
drop table t1, t2;
47
45
create table t1(a int not null, t char(8), index(a));
48
46
disable_query_log;
 
47
begin;
49
48
let $1 = 10000;
50
49
while ($1)
51
50
 {
52
51
  eval insert into t1 values ($1,'$1'); 
53
52
  dec $1;
54
53
 }
 
54
commit;
55
55
enable_query_log;
56
56
SELECT * FROM (SELECT * FROM t1) as b ORDER BY a  ASC LIMIT 0,20;
 
57
--replace_column 9 X
57
58
explain select count(*) from t1 as tt1, (select * from t1) as tt2;
58
59
drop table t1;
59
60
SELECT * FROM (SELECT (SELECT * FROM (SELECT 1 as a) as a )) as b;
79
80
#
80
81
# test->used_keys test for derived tables
81
82
#
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);
 
83
create table t1 (mat_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, matintnum CHAR(6) NOT NULL, test INT NULL);
 
84
create table t2 (mat_id INT NOT NULL, pla_id INT NOT NULL);
84
85
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);
85
86
insert into t2 values (1, 100), (1, 101), (1, 102), (2, 100), (2, 103), (2, 104), (3, 101), (3, 102), (3, 105);
86
87
 
129
130
# multi-update & multi-delete with derived tables
130
131
#
131
132
CREATE TABLE `t1` (
132
 
  `N` int(11) NOT NULL default '0',
133
 
  `M` int(1) default '0'
134
 
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
133
  `N` int NOT NULL default '0',
 
134
  `M` int default '0'
 
135
) ENGINE=MyISAM;
135
136
INSERT INTO `t1` (N, M) VALUES (1, 0),(1, 0),(1, 0),(2, 0),(2, 0),(3, 0);
136
137
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
138
select * from t1;
138
139
-- 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
# TODO: Bug lp:311109
 
141
#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
142
-- error 1054
141
143
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
144
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
145
select * from t1;
144
146
--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
# TODO: Bug lp:311111
 
148
#--error ER_NON_UPDATABLE_TABLE
 
149
#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
150
-- error 1054
148
151
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
152
drop table t1;
152
155
# correct lex->current_select
153
156
#
154
157
CREATE TABLE t1 (
155
 
  OBJECTID int(11) NOT NULL default '0',
156
 
  SORTORDER int(11) NOT NULL auto_increment,
 
158
  OBJECTID int NOT NULL default 0,
 
159
  SORTORDER int NOT NULL auto_increment,
157
160
  KEY t1_SortIndex (SORTORDER),
158
161
  KEY t1_IdIndex (OBJECTID)
159
 
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
162
) ENGINE=MyISAM;
160
163
CREATE TABLE t2 (
161
 
  ID int(11) default NULL,
162
 
  PARID int(11) default NULL,
 
164
  ID int default NULL,
 
165
  PARID int default NULL,
163
166
  UNIQUE KEY t2_ID_IDX (ID),
164
167
  KEY t2_PARID_IDX (PARID)
165
 
) engine=MyISAM DEFAULT CHARSET=latin1;
 
168
) engine=MyISAM;
166
169
INSERT INTO t2 VALUES (1000,0),(1001,0),(1002,0),(1003,0),(1008,1),(1009,1),(1010,1),(1011,1),(1016,2);
167
170
CREATE TABLE t3 (
168
 
  ID int(11) default NULL,
 
171
  ID int default NULL,
169
172
  DATA decimal(10,2) default NULL,
170
173
  UNIQUE KEY t3_ID_IDX (ID)
171
 
) engine=MyISAM DEFAULT CHARSET=latin1;
 
174
) engine=MyISAM;
172
175
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);
173
176
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;
174
177
drop table t1, t2, t3;
176
179
#
177
180
# explain derived
178
181
#
179
 
CREATE TABLE t1 (name char(1) default NULL, val int(5) default NULL);
 
182
CREATE TABLE t1 (name char(1) default NULL, val int default NULL);
180
183
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);
181
184
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;
182
185
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;
194
197
#
195
198
# select list counter
196
199
#
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_`));
 
200
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_`));
198
201
insert into t1 values (128, 'rozn', 2, curdate(), 10),
199
202
  (128, 'rozn', 1, curdate(), 10);
200
203
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;
240
243
#
241
244
create table t1 (a int);
242
245
create table t2 (a int);
243
 
--error 1060
244
246
select * from (select * from t1,t2) foo;
245
247
drop table t1,t2;
246
248
 
257
259
select t2.* from (select * from t1) as A inner join t2 on A.ID = t2.FID;
258
260
drop table t1, t2;
259
261
 
260
 
disconnect con1;
261
 
connection default;
262
 
drop user mysqltest_1;
263
 
 
264
 
# End of 4.1 tests