~drizzle-trunk/drizzle/development

1 by brian
clean slate
1
# Initialize
1108.1.1 by Brian Aker
Remove multi-update from parser/tests.
2
--disable_warnings
1 by brian
clean slate
3
drop table if exists t1,t2,t3;
1108.1.1 by Brian Aker
Remove multi-update from parser/tests.
4
--enable_warnings
1 by brian
clean slate
5
6
select * from (select 2) b;
7
-- error 1054
8
SELECT 1 as a FROM (SELECT 1 UNION SELECT a) b;
9
-- error 1054
10
SELECT 1 as a FROM (SELECT a UNION SELECT 1) b;
11
CREATE TABLE t1 (a int not null, b char (10) not null);
12
insert into t1 values(1,'a'),(2,'b'),(3,'c'),(3,'c');
13
CREATE TABLE t2 (a int not null, b char (10) not null);
14
insert into t2 values (3,'c'),(4,'d'),(5,'f'),(6,'e');
15
select t1.a,t3.y from t1,(select a as y from t2  where b='c') as t3  where t1.a = t3.y;
16
select t1.a,t3.a from t1,(select * from t2  where b='c') as t3  where t1.a = t3.a;
17
CREATE TABLE t3 (a int not null, b char (10) not null);
18
insert into t3 values (3,'f'),(4,'y'),(5,'z'),(6,'c');
19
select t1.a,t4.y from t1,(select t2.a as y from t2,(select t3.b from t3 where t3.a>3) as t5  where t2.b=t5.b) as t4  where t1.a = t4.y;
1731.3.1 by Lee Bieber
change tests to use enum values instead of error numbers
20
--error ER_BAD_FIELD_ERROR
1 by brian
clean slate
21
SELECT a FROM (SELECT 1 FROM (SELECT 1) a HAVING a=1) b;
1731.3.1 by Lee Bieber
change tests to use enum values instead of error numbers
22
--error ER_NON_UNIQ_ERROR
1 by brian
clean slate
23
SELECT a,b as a FROM (SELECT '1' as a,'2' as b) b  HAVING a=1;
24
SELECT a,2 as a FROM (SELECT '1' as a) b HAVING a=2;
25
SELECT a,2 as a FROM (SELECT '1' as a) b HAVING a=1;
1731.3.1 by Lee Bieber
change tests to use enum values instead of error numbers
26
--error ER_BAD_FIELD_ERROR
1 by brian
clean slate
27
SELECT 1 FROM (SELECT 1) a WHERE a=2;
1731.3.1 by Lee Bieber
change tests to use enum values instead of error numbers
28
--error ER_BAD_FIELD_ERROR
1 by brian
clean slate
29
SELECT (SELECT 1) as a FROM (SELECT 1 FROM t1  HAVING a=1) as a;
1718.2.1 by Lee Bieber
For the feature request (https://blueprints.launchpad.net/drizzle/+spec/limit-maximum-sort-size)
30
--sort_result
1 by brian
clean slate
31
select * from t1 as x1, (select * from t1) as x2;
32
explain select * from t1 as x1, (select * from t1) as x2;
33
drop table if exists  t2,t3;
34
select * from (select 1) as a;
35
select a from (select 1 as a) as b;
36
select 1 from (select 1) as a;
37
select * from (select * from t1 union select * from t1) a;
38
select * from (select * from t1 union all select * from t1) a;
39
select * from (select * from t1 union all select * from t1 limit 2) a;
40
explain select * from (select * from t1 union select * from t1) a;
41
explain select * from (select * from t1 union all select * from t1) a;
42
CREATE TABLE t2 (a int not null);
43
insert into t2 values(1);
44
select * from (select * from t1 where t1.a=(select a from t2 where t2.a=t1.a)) a;
45
select * from (select * from t1 where t1.a=(select t2.a from t2 where t2.a=t1.a) union select t1.a, t1.b from t1) a;
46
explain select * from (select t1.*, t2.a as t2a from t1,t2 where t1.a=t2.a) t1;
47
drop table t1, t2;
48
create table t1(a int not null, t char(8), index(a));
49
disable_query_log;
910.4.12 by Stewart Smith
dramatically speed up derived test.
50
begin;
1 by brian
clean slate
51
let $1 = 10000;
52
while ($1)
53
 {
54
  eval insert into t1 values ($1,'$1'); 
55
  dec $1;
56
 }
910.4.12 by Stewart Smith
dramatically speed up derived test.
57
commit;
1 by brian
clean slate
58
enable_query_log;
59
SELECT * FROM (SELECT * FROM t1) as b ORDER BY a  ASC LIMIT 0,20;
722.2.32 by Monty Taylor
Fixed non-deterministic innodb explain output.
60
--replace_column 9 X
1 by brian
clean slate
61
explain select count(*) from t1 as tt1, (select * from t1) as tt2;
62
drop table t1;
63
SELECT * FROM (SELECT (SELECT * FROM (SELECT 1 as a) as a )) as b;
64
select * from (select 1 as a) b  left join (select 2 as a) c using(a);
1731.3.1 by Lee Bieber
change tests to use enum values instead of error numbers
65
--error ER_BAD_FIELD_ERROR
1 by brian
clean slate
66
SELECT * FROM (SELECT 1 UNION SELECT a) b;
1731.3.1 by Lee Bieber
change tests to use enum values instead of error numbers
67
--error ER_BAD_FIELD_ERROR
1 by brian
clean slate
68
SELECT 1 as a FROM (SELECT a UNION SELECT 1) b;
1731.3.1 by Lee Bieber
change tests to use enum values instead of error numbers
69
--error ER_BAD_FIELD_ERROR
1 by brian
clean slate
70
SELECT 1 as a FROM (SELECT 1 UNION SELECT a) b;
1731.3.1 by Lee Bieber
change tests to use enum values instead of error numbers
71
--error ER_BAD_FIELD_ERROR
1 by brian
clean slate
72
select 1 from  (select 2) a order by 0;
73
74
#
75
# Test of explain (bug #251)
76
#
77
78
create table t1 (id int);
79
insert into t1 values (1),(2),(3);
80
describe select * from (select * from t1 group by id) bar;
81
drop table t1;
82
83
#
84
# test->used_keys test for derived tables
85
#
722.2.27 by Monty Taylor
Enabled derived test.
86
create table t1 (mat_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, matintnum CHAR(6) NOT NULL, test INT NULL);
87
create table t2 (mat_id INT NOT NULL, pla_id INT NOT NULL);
1 by brian
clean slate
88
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);
89
insert into t2 values (1, 100), (1, 101), (1, 102), (2, 100), (2, 103), (2, 104), (3, 101), (3, 102), (3, 105);
90
91
SELECT STRAIGHT_JOIN d.pla_id, m2.mat_id FROM t1 m2 INNER JOIN (SELECT mp.pla_id, MIN(m1.matintnum) AS matintnum FROM t2 mp INNER JOIN t1 m1 ON mp.mat_id=m1.mat_id GROUP BY mp.pla_id) d ON d.matintnum=m2.matintnum;
92
SELECT STRAIGHT_JOIN d.pla_id, m2.test FROM t1 m2  INNER JOIN (SELECT mp.pla_id, MIN(m1.matintnum) AS matintnum FROM t2 mp INNER JOIN t1 m1 ON mp.mat_id=m1.mat_id GROUP BY mp.pla_id) d ON d.matintnum=m2.matintnum;
93
94
explain SELECT STRAIGHT_JOIN d.pla_id, m2.mat_id FROM t1 m2 INNER JOIN (SELECT mp.pla_id, MIN(m1.matintnum) AS matintnum FROM t2 mp INNER JOIN t1 m1 ON mp.mat_id=m1.mat_id GROUP BY mp.pla_id) d ON d.matintnum=m2.matintnum;
95
explain SELECT STRAIGHT_JOIN d.pla_id, m2.test FROM t1 m2  INNER JOIN (SELECT mp.pla_id, MIN(m1.matintnum) AS matintnum FROM t2 mp INNER JOIN t1 m1 ON mp.mat_id=m1.mat_id GROUP BY mp.pla_id) d ON d.matintnum=m2.matintnum;
96
drop table t1,t2;
97
98
#
99
# derived table reference
100
#
101
SELECT a.x FROM (SELECT 1 AS x) AS a HAVING a.x = 1;
102
103
#
104
# UPDATE/DELETE/INSERT of derived tables
105
#
106
create table t1 (a int);
107
insert into t1 values (1),(2),(3);
108
-- error 1064
109
delete from (select * from t1);
110
-- error 1064
111
insert into  (select * from t1) values (5);
112
drop table t1;
113
114
#
115
# deived tables with subquery inside all by one table
116
#
413.2.2 by Brian Aker
Removed UNSIGNED from parser.
117
create table t1 (E1 INTEGER NOT NULL, E2 INTEGER NOT NULL, E3 INTEGER NOT NULL, PRIMARY KEY(E1)
1 by brian
clean slate
118
);
119
insert into t1 VALUES(1,1,1), (2,2,1);
1718.2.1 by Lee Bieber
For the feature request (https://blueprints.launchpad.net/drizzle/+spec/limit-maximum-sort-size)
120
--sort_result
1 by brian
clean slate
121
select count(*) from t1 INNER JOIN (SELECT A.E1, A.E2, A.E3 FROM t1 AS A WHERE A.E3 = (SELECT MAX(B.E3) FROM t1 AS B WHERE A.E2 = B.E2)) AS THEMAX ON t1.E1 = THEMAX.E2 AND t1.E1 = t1.E2;
122
explain select count(*) from t1 INNER JOIN (SELECT A.E1, A.E2, A.E3 FROM t1 AS A WHERE A.E3 = (SELECT MAX(B.E3) FROM t1 AS B WHERE A.E2 = B.E2)) AS THEMAX ON t1.E1 = THEMAX.E2 AND t1.E1 = t1.E2;
123
drop table t1;
124
125
create table t1 (a int);
126
insert into t1 values (1),(2);
1718.2.1 by Lee Bieber
For the feature request (https://blueprints.launchpad.net/drizzle/+spec/limit-maximum-sort-size)
127
--sort_result
1 by brian
clean slate
128
select * from ( select * from t1 union select * from t1) a,(select * from t1 union select * from t1) b;
129
explain select * from ( select * from t1 union select * from t1) a,(select * from t1 union select * from t1) b;
130
drop table t1;
131
132
#
133
# correct lex->current_select
134
#
1063.9.3 by Brian Aker
Partial fix for tests for tmp
135
CREATE TEMPORARY TABLE t1 (
722.2.27 by Monty Taylor
Enabled derived test.
136
  OBJECTID int NOT NULL default 0,
137
  SORTORDER int NOT NULL auto_increment,
1 by brian
clean slate
138
  KEY t1_SortIndex (SORTORDER),
139
  KEY t1_IdIndex (OBJECTID)
722.2.27 by Monty Taylor
Enabled derived test.
140
) ENGINE=MyISAM;
1063.9.3 by Brian Aker
Partial fix for tests for tmp
141
CREATE TEMPORARY TABLE t2 (
722.2.27 by Monty Taylor
Enabled derived test.
142
  ID int default NULL,
143
  PARID int default NULL,
1 by brian
clean slate
144
  UNIQUE KEY t2_ID_IDX (ID),
145
  KEY t2_PARID_IDX (PARID)
722.2.27 by Monty Taylor
Enabled derived test.
146
) engine=MyISAM;
1 by brian
clean slate
147
INSERT INTO t2 VALUES (1000,0),(1001,0),(1002,0),(1003,0),(1008,1),(1009,1),(1010,1),(1011,1),(1016,2);
1063.9.3 by Brian Aker
Partial fix for tests for tmp
148
CREATE TEMPORARY TABLE t3 (
722.2.27 by Monty Taylor
Enabled derived test.
149
  ID int default NULL,
1 by brian
clean slate
150
  DATA decimal(10,2) default NULL,
151
  UNIQUE KEY t3_ID_IDX (ID)
722.2.27 by Monty Taylor
Enabled derived test.
152
) engine=MyISAM;
1 by brian
clean slate
153
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);
154
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;
155
drop table t1, t2, t3;
156
157
#
158
# explain derived
159
#
722.2.27 by Monty Taylor
Enabled derived test.
160
CREATE TABLE t1 (name char(1) default NULL, val int default NULL);
1 by brian
clean slate
161
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);
162
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;
163
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;
164
drop table t1;
165
166
#
167
# "Using index" in explain
168
#
169
create table t2 (a int, b int, primary key (a));
170
insert into t2 values (1,7),(2,7);
171
explain select a from t2 where a>1;
172
explain select a from (select a from t2 where a>1) tt;
173
drop table t2;
174
175
#
176
# select list counter
177
#
722.2.27 by Monty Taylor
Enabled derived test.
178
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_`));
1 by brian
clean slate
179
insert into t1 values (128, 'rozn', 2, curdate(), 10),
180
  (128, 'rozn', 1, curdate(), 10);
181
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;
182
DROP TABLE t1;
183
184
#
185
# DISTINCT over grouped select on subquery in the FROM clause
186
#
187
create table t1 (a integer, b integer);
188
insert into t1 values (1,4), (2,2),(2,2), (4,1),(4,1),(4,1),(4,1);
189
select distinct sum(b) from t1 group by a;
190
select distinct sum(b) from (select a,b from t1) y group by a;
191
drop table t1;
192
193
194
#
195
# Test for bug #7413 "Subquery with non-scalar results participating in
196
# select list of derived table crashes server" aka "VIEW with sub query can
197
# cause the MySQL server to crash". If we have encountered problem during
198
# filling of derived table we should report error and perform cleanup
199
# properly.
200
#
201
CREATE TABLE t1 (a char(10), b char(10));
202
INSERT INTO t1 VALUES ('root','localhost'), ('root','%');
1731.3.1 by Lee Bieber
change tests to use enum values instead of error numbers
203
--error ER_SUBQUERY_NO_1_ROW
1 by brian
clean slate
204
SELECT * FROM (SELECT (SELECT a.a FROM t1 AS a WHERE a.a = b.a) FROM t1 AS b) AS c;
205
DROP TABLE t1;
206
#
207
# test of union subquery in the FROM clause with complex distinct/all (BUG#6565)
208
#
209
create table t1(a int);
210
create table t2(a int);
211
create table t3(a int);
212
insert into t1 values(1),(1);
213
insert into t2 values(2),(2);
214
insert into t3 values(3),(3);
215
select * from t1 union distinct select * from t2 union all select * from t3;
216
select * from (select * from t1 union distinct select * from t2 union all select * from t3) X;
217
drop table t1, t2, t3;
218
219
#
220
# Bug #11864 non unique names are allowed in subquery
221
#
222
create table t1 (a int);
223
create table t2 (a int);
224
select * from (select * from t1,t2) foo;
225
drop table t1,t2;
226
227
#
228
# Bug#10586 - query works with 4.1.8, but not with 4.1.11
229
#
413.2.2 by Brian Aker
Removed UNSIGNED from parser.
230
create table t1 (ID int not null auto_increment,
1 by brian
clean slate
231
                 DATA varchar(5) not null, primary key (ID));
413.2.2 by Brian Aker
Removed UNSIGNED from parser.
232
create table t2 (ID int not null auto_increment,
233
                 DATA varchar(5) not null, FID int not null,
1 by brian
clean slate
234
                 primary key (ID));
235
select A.* from (t1 inner join (select * from t2) as A on t1.ID = A.FID);
236
select t2.* from ((select * from t1) as A inner join t2 on A.ID = t2.FID);
237
select t2.* from (select * from t1) as A inner join t2 on A.ID = t2.FID;
238
drop table t1, t2;
239