~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/join.test

  • Committer: Monty Taylor
  • Date: 2008-11-16 06:29:53 UTC
  • mto: (584.1.9 devel)
  • mto: This revision was merged to the branch mainline in revision 589.
  • Revision ID: monty@inaugust.com-20081116062953-ivdltjmfe009b5fr
Moved stuff into item/

Show diffs side-by-side

added added

removed removed

Lines of Context:
67
67
  count int DEFAULT '0' NOT NULL,
68
68
  qty int,
69
69
  phone char(1) DEFAULT '' NOT NULL,
70
 
  timestamp datetime,
 
70
  timestamp datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
71
71
  PRIMARY KEY (id),
72
72
  KEY token (token(15)),
73
73
  KEY timestamp (timestamp),
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);
145
145
# TEST LEFT JOIN with DATE columns
146
146
#
147
147
 
148
 
CREATE TABLE t1 (d DATE);
149
 
CREATE TABLE t2 (d DATE);
150
 
INSERT INTO t1 (d) VALUES ('2001-08-01'),(NULL);
 
148
CREATE TABLE t1 (d DATE NOT NULL);
 
149
CREATE TABLE t2 (d DATE NOT NULL);
 
150
INSERT INTO t1 (d) VALUES ('2001-08-01'),('0000-00-00');
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;
231
231
# Bug when doing full join and NULL fields.
232
232
#
233
233
 
234
 
CREATE TEMPORARY TABLE t1 (
 
234
CREATE TABLE t1 (
235
235
  t1_id int default NULL,
236
236
  t2_id int default NULL,
237
237
  type enum('Cost','Percent') default NULL,
242
242
  item_id int default NULL
243
243
) ENGINE=MyISAM;
244
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);
245
 
CREATE TEMPORARY TABLE t2 (
 
245
CREATE TABLE t2 (
246
246
  id int NOT NULL auto_increment,
247
247
  name varchar(255) default NULL,
248
248
  PRIMARY KEY  (id)
249
249
) ENGINE=MyISAM;
250
250
INSERT INTO t2 VALUES (1,'s1'),(2,'s2'),(3,'s3'),(4,'s4'),(5,'s5');
251
 
--sorted_result
252
251
select t1.*, t2.*  from t1, t2 where t2.id=t1.t2_id limit 2;
253
252
drop table t1,t2;
254
253
 
256
255
# Bug in range optimiser with MAYBE_KEY
257
256
#
258
257
 
259
 
CREATE TEMPORARY TABLE t1 (
 
258
CREATE TABLE t1 (
260
259
  siteid varchar(25) NOT NULL default '',
261
260
  emp_id varchar(30) NOT NULL default '',
262
261
  rate_code varchar(10) default NULL,
264
263
  KEY siteid (siteid)
265
264
) ENGINE=MyISAM;
266
265
INSERT INTO t1 VALUES ('rivercats','psmith','cust'), ('rivercats','KWalker','cust');
267
 
CREATE TEMPORARY TABLE t2 (
 
266
CREATE TABLE t2 (
268
267
  siteid varchar(25) NOT NULL default '',
269
268
  rate_code varchar(10) NOT NULL default '',
270
269
  base_rate float NOT NULL default '0',
401
400
from t1 join (t2 join t4 on b + 1 = y) on t1.c = t4.c;
402
401
 
403
402
# Views with bigger natural join
404
 
--sorted_result
405
403
select * from t1 natural join (t2 natural join t3);
406
404
 
407
405
# Nested natural/using joins.
408
 
--sorted_result
409
406
select * from (t1 natural join t2) natural join (t3 natural join t4);
410
407
select * from (t1 natural join t2) natural left join (t3 natural join t4);
411
408
select * from (t3 natural join t4) natural right join (t1 natural join t2);
446
443
select * from t1 join (t2 join t4 on b + 1 = y) on t1.c = t4.c;
447
444
select * from (t2 join t4 on b + 1 = y) join t1 on t1.c = t4.c;
448
445
select * from t1 natural join (t2 join t4 on b + 1 = y);
449
 
--sorted_result
450
446
select * from (t1 cross join t2) join (t3 cross join t4) on (a < y and t2.b < t3.c);
451
447
 
452
448
# MySQL extension - 'join ... on' over nested comma operator
453
 
--sorted_result
454
449
select * from (t1, t2) join (t3, t4) on (a < y and t2.b < t3.c);
455
450
select * from (t1 natural join t2) join (t3 natural join t4) on a = y;
456
 
--sorted_result
457
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;
458
452
 
459
453
# MySQL extension - refererence qualified coalesced columns
462
456
select * from (t4 natural join t5) natural join t1 where t4.y > 7;
463
457
select * from t1 natural left join (t4 natural join t5) where t4.y > 7;
464
458
select * from (t4 natural join t5) natural right join t1 where t4.y > 7;
465
 
--sorted_result
466
459
select * from (t1 natural join t2) join (t3 natural join t4) on t1.b = t3.b;
467
460
 
468
461
# MySQL extension - select qualified columns of NJ columns
583
576
select * from t1, t2, t3 where t3.a=t1.a and t2.a=t1.b;
584
577
explain select * from t1, t2, t3 where t3.a=t1.a and t2.a=t1.b;
585
578
--echo We expect rnd_next=5, and read_key must be 0 because of short-cutting:
586
 
--replace_column 2 #
587
579
show status like 'Handler_read%'; 
588
580
drop table t1, t2, t3;
589
581
 
614
606
insert into t2 select @v:=A.a+10*B.a, @v  from t1 A, t1 B;
615
607
 
616
608
explain select * from t1;
617
 
--replace_column 2 #
618
609
show status like '%cost%';
619
610
select 'The cost of accessing t1 (dont care if it changes' '^';
620
611
 
621
612
select 'vv: Following query must use ALL(t1), eq_ref(A), eq_ref(B): vv' Z;
622
613
 
623
614
explain select * from t1, t2 A, t2 B where A.a = t1.a and B.a=A.b;
624
 
--replace_column 2 #
625
615
show status like '%cost%';
626
616
select '^^: The above should be ~= 20 + cost(select * from t1). Value less than 20 is an error' Z;
627
617