~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/join.test

  • Committer: Stewart Smith
  • Date: 2009-06-05 12:04:43 UTC
  • mto: This revision was merged to the branch mainline in revision 1053.
  • Revision ID: stewart@flamingspork.com-20090605120443-dn9ttgy0f1942cr8
Add code coverage for ALTER DATABASE

Show diffs side-by-side

added added

removed removed

Lines of Context:
113
113
insert into t1 values(1),(2);
114
114
select t1.a from t1 as t1 left join t1 as t2 using (a) left join t1 as t3 using (a) left join t1 as t4 using (a) left join t1 as t5 using (a) left join t1 as t6 using (a) left join t1 as t7 using (a) left join t1 as t8 using (a) left join t1 as t9 using (a) left join t1 as t10 using (a) left join t1 as t11 using (a) left join t1 as t12 using (a) left join t1 as t13 using (a) left join t1 as t14 using (a) left join t1 as t15 using (a) left join t1 as t16 using (a) left join t1 as t17 using (a) left join t1 as t18 using (a) left join t1 as t19 using (a) left join t1 as t20 using (a) left join t1 as t21 using (a) left join t1 as t22 using (a) left join t1 as t23 using (a) left join t1 as t24 using (a) left join t1 as t25 using (a) left join t1 as t26 using (a) left join t1 as t27 using (a) left join t1 as t28 using (a) left join t1 as t29 using (a) left join t1 as t30 using (a) left join t1 as t31 using (a);
115
115
--replace_result "31 tables" "XX tables" "61 tables" "XX tables"
116
 
--error ER_TOO_MANY_TABLES
 
116
--error 1116
117
117
select t1.a from t1 as t1 left join t1 as t2 using (a) left join t1 as t3 using (a) left join t1 as t4 using (a) left join t1 as t5 using (a) left join t1 as t6 using (a) left join t1 as t7 using (a) left join t1 as t8 using (a) left join t1 as t9 using (a) left join t1 as t10 using (a) left join t1 as t11 using (a) left join t1 as t12 using (a) left join t1 as t13 using (a) left join t1 as t14 using (a) left join t1 as t15 using (a) left join t1 as t16 using (a) left join t1 as t17 using (a) left join t1 as t18 using (a) left join t1 as t19 using (a) left join t1 as t20 using (a) left join t1 as t21 using (a) left join t1 as t22 using (a) left join t1 as t23 using (a) left join t1 as t24 using (a) left join t1 as t25 using (a) left join t1 as t26 using (a) left join t1 as t27 using (a) left join t1 as t28 using (a) left join t1 as t29 using (a) left join t1 as t30 using (a) left join t1 as t31 using (a) left join t1 as t32 using (a) left join t1 as t33 using (a) left join t1 as t34 using (a) left join t1 as t35 using (a) left join t1 as t36 using (a) left join t1 as t37 using (a) left join t1 as t38 using (a) left join t1 as t39 using (a) left join t1 as t40 using (a) left join t1 as t41 using (a) left join t1 as t42 using (a) left join t1 as t43 using (a) left join t1 as t44 using (a) left join t1 as t45 using (a) left join t1 as t46 using (a) left join t1 as t47 using (a) left join t1 as t48 using (a) left join t1 as t49 using (a) left join t1 as t50 using (a) left join t1 as t51 using (a) left join t1 as t52 using (a) left join t1 as t53 using (a) left join t1 as t54 using (a) left join t1 as t55 using (a) left join t1 as t56 using (a) left join t1 as t57 using (a) left join t1 as t58 using (a) left join t1 as t59 using (a) left join t1 as t60 using (a) left join t1 as t61 using (a) left join t1 as t62 using (a) left join t1 as t63 using (a) left join t1 as t64 using (a) left join t1 as t65 using (a);
118
118
select a from t1 as t1 left join t1 as t2 using (a) left join t1 as t3 using (a) left join t1 as t4 using (a) left join t1 as t5 using (a) left join t1 as t6 using (a) left join t1 as t7 using (a) left join t1 as t8 using (a) left join t1 as t9 using (a) left join t1 as t10 using (a) left join t1 as t11 using (a) left join t1 as t12 using (a) left join t1 as t13 using (a) left join t1 as t14 using (a) left join t1 as t15 using (a) left join t1 as t16 using (a) left join t1 as t17 using (a) left join t1 as t18 using (a) left join t1 as t19 using (a) left join t1 as t20 using (a) left join t1 as t21 using (a) left join t1 as t22 using (a) left join t1 as t23 using (a) left join t1 as t24 using (a) left join t1 as t25 using (a) left join t1 as t26 using (a) left join t1 as t27 using (a) left join t1 as t28 using (a) left join t1 as t29 using (a) left join t1 as t30 using (a) left join t1 as t31 using (a);
119
119
--replace_result "31 tables" "XX tables" "61 tables" "XX tables"
120
 
--error ER_TOO_MANY_TABLES
 
120
--error 1116
121
121
select a from t1 as t1 left join t1 as t2 using (a) left join t1 as t3 using (a) left join t1 as t4 using (a) left join t1 as t5 using (a) left join t1 as t6 using (a) left join t1 as t7 using (a) left join t1 as t8 using (a) left join t1 as t9 using (a) left join t1 as t10 using (a) left join t1 as t11 using (a) left join t1 as t12 using (a) left join t1 as t13 using (a) left join t1 as t14 using (a) left join t1 as t15 using (a) left join t1 as t16 using (a) left join t1 as t17 using (a) left join t1 as t18 using (a) left join t1 as t19 using (a) left join t1 as t20 using (a) left join t1 as t21 using (a) left join t1 as t22 using (a) left join t1 as t23 using (a) left join t1 as t24 using (a) left join t1 as t25 using (a) left join t1 as t26 using (a) left join t1 as t27 using (a) left join t1 as t28 using (a) left join t1 as t29 using (a) left join t1 as t30 using (a) left join t1 as t31 using (a) left join t1 as t32 using (a) left join t1 as t33 using (a) left join t1 as t34 using (a) left join t1 as t35 using (a) left join t1 as t36 using (a) left join t1 as t37 using (a) left join t1 as t38 using (a) left join t1 as t39 using (a) left join t1 as t40 using (a) left join t1 as t41 using (a) left join t1 as t42 using (a) left join t1 as t43 using (a) left join t1 as t44 using (a) left join t1 as t45 using (a) left join t1 as t46 using (a) left join t1 as t47 using (a) left join t1 as t48 using (a) left join t1 as t49 using (a) left join t1 as t50 using (a) left join t1 as t51 using (a) left join t1 as t52 using (a) left join t1 as t53 using (a) left join t1 as t54 using (a) left join t1 as t55 using (a) left join t1 as t56 using (a) left join t1 as t57 using (a) left join t1 as t58 using (a) left join t1 as t59 using (a) left join t1 as t60 using (a) left join t1 as t61 using (a) left join t1 as t62 using (a) left join t1 as t63 using (a) left join t1 as t64 using (a) left join t1 as t65 using (a);
122
122
drop table t1;
123
123
 
126
126
# no matches, still three matches were found.
127
127
#
128
128
 
129
 
CREATE TEMPORARY TABLE t1 (
 
129
CREATE TABLE t1 (
130
130
  a int NOT NULL,
131
131
  b int NOT NULL,
132
132
  PRIMARY KEY  (a,b)
134
134
 
135
135
INSERT INTO t1 VALUES (1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(2,3);
136
136
 
137
 
CREATE TEMPORARY TABLE t2 (
 
137
CREATE TABLE t2 (
138
138
  a int default NULL
139
139
) ENGINE=MyISAM;
140
140
INSERT INTO t2 VALUES (2),(3);
151
151
SELECT * FROM t1 LEFT JOIN t2 USING (d) WHERE t2.d IS NULL;
152
152
SELECT * FROM t1 LEFT JOIN t2 USING (d) WHERE d IS NULL;
153
153
SELECT * from t1 WHERE t1.d IS NULL;
154
 
--error ER_DIVISION_BY_ZERO
155
154
SELECT * FROM t1 WHERE 1/0 IS NULL;
156
155
DROP TABLE t1,t2;
157
156
 
232
231
# Bug when doing full join and NULL fields.
233
232
#
234
233
 
235
 
CREATE TEMPORARY TABLE t1 (
 
234
CREATE TABLE t1 (
236
235
  t1_id int default NULL,
237
236
  t2_id int default NULL,
238
237
  type enum('Cost','Percent') default NULL,
243
242
  item_id int default NULL
244
243
) ENGINE=MyISAM;
245
244
INSERT INTO t1 VALUES (12,5,'Percent','Cost',-1,0,-1,-1),(14,4,'Percent','Cost',-1,0,-1,-1),(18,5,'Percent','Cost',-1,0,-1,-1),(19,4,'Percent','Cost',-1,0,-1,-1),(20,5,'Percent','Cost',100,-1,22,291),(21,5,'Percent','Cost',100,-1,18,291),(22,1,'Percent','Cost',100,-1,6,291),(23,1,'Percent','Cost',100,-1,21,291),(24,1,'Percent','Cost',100,-1,9,291),(25,1,'Percent','Cost',100,-1,4,291),(26,1,'Percent','Cost',100,-1,20,291),(27,4,'Percent','Cost',100,-1,7,202),(28,1,'Percent','Cost',50,-1,-1,137),(29,2,'Percent','Cost',100,-1,4,354),(30,2,'Percent','Cost',100,-1,9,137),(93,2,'Cost','Cost',-1,10000000,-1,-1);
246
 
CREATE TEMPORARY TABLE t2 (
 
245
CREATE TABLE t2 (
247
246
  id int NOT NULL auto_increment,
248
247
  name varchar(255) default NULL,
249
248
  PRIMARY KEY  (id)
250
249
) ENGINE=MyISAM;
251
250
INSERT INTO t2 VALUES (1,'s1'),(2,'s2'),(3,'s3'),(4,'s4'),(5,'s5');
252
 
--sorted_result
253
251
select t1.*, t2.*  from t1, t2 where t2.id=t1.t2_id limit 2;
254
252
drop table t1,t2;
255
253
 
257
255
# Bug in range optimiser with MAYBE_KEY
258
256
#
259
257
 
260
 
CREATE TEMPORARY TABLE t1 (
 
258
CREATE TABLE t1 (
261
259
  siteid varchar(25) NOT NULL default '',
262
260
  emp_id varchar(30) NOT NULL default '',
263
261
  rate_code varchar(10) default NULL,
265
263
  KEY siteid (siteid)
266
264
) ENGINE=MyISAM;
267
265
INSERT INTO t1 VALUES ('rivercats','psmith','cust'), ('rivercats','KWalker','cust');
268
 
CREATE TEMPORARY TABLE t2 (
 
266
CREATE TABLE t2 (
269
267
  siteid varchar(25) NOT NULL default '',
270
268
  rate_code varchar(10) NOT NULL default '',
271
269
  base_rate float NOT NULL default '0',
402
400
from t1 join (t2 join t4 on b + 1 = y) on t1.c = t4.c;
403
401
 
404
402
# Views with bigger natural join
405
 
--sorted_result
406
403
select * from t1 natural join (t2 natural join t3);
407
404
 
408
405
# Nested natural/using joins.
409
 
--sorted_result
410
406
select * from (t1 natural join t2) natural join (t3 natural join t4);
411
407
select * from (t1 natural join t2) natural left join (t3 natural join t4);
412
408
select * from (t3 natural join t4) natural right join (t1 natural join t2);
447
443
select * from t1 join (t2 join t4 on b + 1 = y) on t1.c = t4.c;
448
444
select * from (t2 join t4 on b + 1 = y) join t1 on t1.c = t4.c;
449
445
select * from t1 natural join (t2 join t4 on b + 1 = y);
450
 
--sorted_result
451
446
select * from (t1 cross join t2) join (t3 cross join t4) on (a < y and t2.b < t3.c);
452
447
 
453
448
# MySQL extension - 'join ... on' over nested comma operator
454
 
--sorted_result
455
449
select * from (t1, t2) join (t3, t4) on (a < y and t2.b < t3.c);
456
450
select * from (t1 natural join t2) join (t3 natural join t4) on a = y;
457
 
--sorted_result
458
451
select * from ((t3 join (t1 join t2 on c > a) on t3.b < t2.a) join t4 on y > t1.c) join t5 on z = t1.b + 3;
459
452
 
460
453
# MySQL extension - refererence qualified coalesced columns
463
456
select * from (t4 natural join t5) natural join t1 where t4.y > 7;
464
457
select * from t1 natural left join (t4 natural join t5) where t4.y > 7;
465
458
select * from (t4 natural join t5) natural right join t1 where t4.y > 7;
466
 
--sorted_result
467
459
select * from (t1 natural join t2) join (t3 natural join t4) on t1.b = t3.b;
468
460
 
469
461
# MySQL extension - select qualified columns of NJ columns
584
576
select * from t1, t2, t3 where t3.a=t1.a and t2.a=t1.b;
585
577
explain select * from t1, t2, t3 where t3.a=t1.a and t2.a=t1.b;
586
578
--echo We expect rnd_next=5, and read_key must be 0 because of short-cutting:
587
 
--replace_column 2 #
588
579
show status like 'Handler_read%'; 
589
580
drop table t1, t2, t3;
590
581
 
615
606
insert into t2 select @v:=A.a+10*B.a, @v  from t1 A, t1 B;
616
607
 
617
608
explain select * from t1;
618
 
--replace_column 2 #
619
609
show status like '%cost%';
620
610
select 'The cost of accessing t1 (dont care if it changes' '^';
621
611
 
622
612
select 'vv: Following query must use ALL(t1), eq_ref(A), eq_ref(B): vv' Z;
623
613
 
624
614
explain select * from t1, t2 A, t2 B where A.a = t1.a and B.a=A.b;
625
 
--replace_column 2 #
626
615
show status like '%cost%';
627
616
select '^^: The above should be ~= 20 + cost(select * from t1). Value less than 20 is an error' Z;
628
617