~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/derived.test

  • Committer: Monty Taylor
  • Date: 2008-10-27 23:19:48 UTC
  • mto: (520.4.12 merge-innodb-plugin)
  • mto: This revision was merged to the branch mainline in revision 563.
  • Revision ID: monty@inaugust.com-20081027231948-3kl6ss04plbakqcr
Split some more things out of common_includes.h.

Show diffs side-by-side

added added

removed removed

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