~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/derived.test

  • Committer: Eric Day
  • Date: 2009-08-27 07:26:22 UTC
  • mto: This revision was merged to the branch mainline in revision 1131.
  • Revision ID: eday@oddments.org-20090827072622-72te13ua0wdlc2ky
Reworked listen interface to not require binding of TCP ports.

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