~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 23:47:43 UTC
  • mto: (584.1.10 devel)
  • mto: This revision was merged to the branch mainline in revision 589.
  • Revision ID: monty@inaugust.com-20081116234743-c38gmv0pa2kdefaj
Broke out cached_item.

Show diffs side-by-side

added added

removed removed

Lines of Context:
46
46
drop table t1, t2;
47
47
create table t1(a int not null, t char(8), index(a));
48
48
disable_query_log;
49
 
begin;
50
49
let $1 = 10000;
51
50
while ($1)
52
51
 {
53
52
  eval insert into t1 values ($1,'$1'); 
54
53
  dec $1;
55
54
 }
56
 
commit;
57
55
enable_query_log;
58
56
SELECT * FROM (SELECT * FROM t1) as b ORDER BY a  ASC LIMIT 0,20;
59
 
--replace_column 9 X
60
57
explain select count(*) from t1 as tt1, (select * from t1) as tt2;
61
58
drop table t1;
62
59
SELECT * FROM (SELECT (SELECT * FROM (SELECT 1 as a) as a )) as b;
82
79
#
83
80
# test->used_keys test for derived tables
84
81
#
85
 
create table t1 (mat_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, matintnum CHAR(6) NOT NULL, test INT NULL);
86
 
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);
87
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);
88
85
insert into t2 values (1, 100), (1, 101), (1, 102), (2, 100), (2, 103), (2, 104), (3, 101), (3, 102), (3, 105);
89
86
 
104
101
#
105
102
create table t1 (a int);
106
103
insert into t1 values (1),(2),(3);
 
104
-- error 1288
 
105
update (select * from t1) as t1 set a = 5;
107
106
-- error 1064
108
107
delete from (select * from t1);
109
108
-- error 1064
127
126
drop table t1;
128
127
 
129
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
#
130
152
# correct lex->current_select
131
153
#
132
 
CREATE TEMPORARY TABLE t1 (
133
 
  OBJECTID int NOT NULL default 0,
134
 
  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,
135
157
  KEY t1_SortIndex (SORTORDER),
136
158
  KEY t1_IdIndex (OBJECTID)
137
 
) ENGINE=MyISAM;
138
 
CREATE TEMPORARY TABLE t2 (
139
 
  ID int default NULL,
140
 
  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,
141
163
  UNIQUE KEY t2_ID_IDX (ID),
142
164
  KEY t2_PARID_IDX (PARID)
143
 
) engine=MyISAM;
 
165
) engine=MyISAM DEFAULT CHARSET=latin1;
144
166
INSERT INTO t2 VALUES (1000,0),(1001,0),(1002,0),(1003,0),(1008,1),(1009,1),(1010,1),(1011,1),(1016,2);
145
 
CREATE TEMPORARY TABLE t3 (
146
 
  ID int default NULL,
 
167
CREATE TABLE t3 (
 
168
  ID int(11) default NULL,
147
169
  DATA decimal(10,2) default NULL,
148
170
  UNIQUE KEY t3_ID_IDX (ID)
149
 
) engine=MyISAM;
 
171
) engine=MyISAM DEFAULT CHARSET=latin1;
150
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);
151
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;
152
174
drop table t1, t2, t3;
154
176
#
155
177
# explain derived
156
178
#
157
 
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);
158
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);
159
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;
160
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;
172
194
#
173
195
# select list counter
174
196
#
175
 
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_`));
176
198
insert into t1 values (128, 'rozn', 2, curdate(), 10),
177
199
  (128, 'rozn', 1, curdate(), 10);
178
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;
218
240
#
219
241
create table t1 (a int);
220
242
create table t2 (a int);
 
243
--error 1060
221
244
select * from (select * from t1,t2) foo;
222
245
drop table t1,t2;
223
246
 
234
257
select t2.* from (select * from t1) as A inner join t2 on A.ID = t2.FID;
235
258
drop table t1, t2;
236
259
 
 
260
disconnect con1;
 
261
connection default;
 
262
drop user mysqltest_1;
 
263
 
 
264
# End of 4.1 tests