~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/derived.test

  • 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
# 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
54
52
 }
55
53
enable_query_log;
56
54
SELECT * FROM (SELECT * FROM t1) as b ORDER BY a  ASC LIMIT 0,20;
 
55
--replace_column 9 X
57
56
explain select count(*) from t1 as tt1, (select * from t1) as tt2;
58
57
drop table t1;
59
58
SELECT * FROM (SELECT (SELECT * FROM (SELECT 1 as a) as a )) as b;
79
78
#
80
79
# test->used_keys test for derived tables
81
80
#
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);
 
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);
84
83
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
84
insert into t2 values (1, 100), (1, 101), (1, 102), (2, 100), (2, 103), (2, 104), (3, 101), (3, 102), (3, 105);
86
85
 
129
128
# multi-update & multi-delete with derived tables
130
129
#
131
130
CREATE TABLE `t1` (
132
 
  `N` int(11) NOT NULL default '0',
133
 
  `M` int(1) default '0'
134
 
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
131
  `N` int NOT NULL default '0',
 
132
  `M` int default '0'
 
133
) ENGINE=MyISAM;
135
134
INSERT INTO `t1` (N, M) VALUES (1, 0),(1, 0),(1, 0),(2, 0),(2, 0),(3, 0);
136
135
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
136
select * from t1;
138
137
-- 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;
 
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;
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
 
--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;
 
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;
147
148
-- error 1054
148
149
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
150
drop table t1;
152
153
# correct lex->current_select
153
154
#
154
155
CREATE TABLE t1 (
155
 
  OBJECTID int(11) NOT NULL default '0',
156
 
  SORTORDER int(11) NOT NULL auto_increment,
 
156
  OBJECTID int NOT NULL default 0,
 
157
  SORTORDER int NOT NULL auto_increment,
157
158
  KEY t1_SortIndex (SORTORDER),
158
159
  KEY t1_IdIndex (OBJECTID)
159
 
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
160
) ENGINE=MyISAM;
160
161
CREATE TABLE t2 (
161
 
  ID int(11) default NULL,
162
 
  PARID int(11) default NULL,
 
162
  ID int default NULL,
 
163
  PARID int default NULL,
163
164
  UNIQUE KEY t2_ID_IDX (ID),
164
165
  KEY t2_PARID_IDX (PARID)
165
 
) engine=MyISAM DEFAULT CHARSET=latin1;
 
166
) engine=MyISAM;
166
167
INSERT INTO t2 VALUES (1000,0),(1001,0),(1002,0),(1003,0),(1008,1),(1009,1),(1010,1),(1011,1),(1016,2);
167
168
CREATE TABLE t3 (
168
 
  ID int(11) default NULL,
 
169
  ID int default NULL,
169
170
  DATA decimal(10,2) default NULL,
170
171
  UNIQUE KEY t3_ID_IDX (ID)
171
 
) engine=MyISAM DEFAULT CHARSET=latin1;
 
172
) engine=MyISAM;
172
173
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
174
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
175
drop table t1, t2, t3;
176
177
#
177
178
# explain derived
178
179
#
179
 
CREATE TABLE t1 (name char(1) default NULL, val int(5) default NULL);
 
180
CREATE TABLE t1 (name char(1) default NULL, val int default NULL);
180
181
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
182
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
183
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
195
#
195
196
# select list counter
196
197
#
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_`));
 
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_`));
198
199
insert into t1 values (128, 'rozn', 2, curdate(), 10),
199
200
  (128, 'rozn', 1, curdate(), 10);
200
201
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
241
#
241
242
create table t1 (a int);
242
243
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