~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/join.test

  • Committer: Jay Pipes
  • Date: 2010-03-09 20:02:29 UTC
  • mto: This revision was merged to the branch mainline in revision 1339.
  • Revision ID: jpipes@serialcoder-20100309200229-dfrliy4fads9vyf4
Fixes Bug #535296 by only incrementing ha_commit_count when its a normal transaction commit.

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
CREATE TABLE t2 (S1 INT);
13
13
INSERT INTO t1 VALUES (1);
14
14
INSERT INTO t2 VALUES (2);
15
 
--error ER_CARTESIAN_JOIN_ATTEMPTED
16
15
SELECT * FROM t1 JOIN t2;
17
 
--error ER_CARTESIAN_JOIN_ATTEMPTED
18
16
SELECT * FROM t1 INNER JOIN t2;
19
17
SELECT * from t1 JOIN t2 USING (S1);
20
18
SELECT * FROM t1 INNER JOIN t2 USING (S1);
69
67
  count int DEFAULT '0' NOT NULL,
70
68
  qty int,
71
69
  phone char(1) DEFAULT '' NOT NULL,
72
 
  timestamp_arg datetime,
 
70
  timestamp datetime,
73
71
  PRIMARY KEY (id),
74
72
  KEY token (token(15)),
75
 
  KEY timestamp_arg (timestamp_arg),
 
73
  KEY timestamp (timestamp),
76
74
  UNIQUE token_2 (token(75),count,phone)
77
75
);
78
76
 
115
113
insert into t1 values(1),(2);
116
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);
117
115
--replace_result "31 tables" "XX tables" "61 tables" "XX tables"
118
 
--error ER_TOO_MANY_TABLES
 
116
--error 1116
119
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);
120
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);
121
119
--replace_result "31 tables" "XX tables" "61 tables" "XX tables"
122
 
--error ER_TOO_MANY_TABLES
 
120
--error 1116
123
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);
124
122
drop table t1;
125
123
 
153
151
SELECT * FROM t1 LEFT JOIN t2 USING (d) WHERE t2.d IS NULL;
154
152
SELECT * FROM t1 LEFT JOIN t2 USING (d) WHERE d IS NULL;
155
153
SELECT * from t1 WHERE t1.d IS NULL;
156
 
--error ER_DIVISION_BY_ZERO
157
154
SELECT * FROM t1 WHERE 1/0 IS NULL;
158
155
DROP TABLE t1,t2;
159
156
 
251
248
  PRIMARY KEY  (id)
252
249
) ENGINE=MyISAM;
253
250
INSERT INTO t2 VALUES (1,'s1'),(2,'s2'),(3,'s3'),(4,'s4'),(5,'s5');
254
 
--sorted_result
255
251
select t1.*, t2.*  from t1, t2 where t2.id=t1.t2_id limit 2;
256
252
drop table t1,t2;
257
253
 
301
297
CREATE TABLE t1 (a int);
302
298
CREATE TABLE t2 (b int);
303
299
CREATE TABLE t3 (c int);
304
 
--error ER_CARTESIAN_JOIN_ATTEMPTED
305
300
SELECT * FROM t1 NATURAL JOIN t2 NATURAL JOIN t3;
306
301
DROP TABLE t1, t2, t3;
307
302
 
405
400
from t1 join (t2 join t4 on b + 1 = y) on t1.c = t4.c;
406
401
 
407
402
# Views with bigger natural join
408
 
--sorted_result
409
403
select * from t1 natural join (t2 natural join t3);
410
404
 
411
405
# Nested natural/using joins.
412
 
--sorted_result
413
406
select * from (t1 natural join t2) natural join (t3 natural join t4);
414
407
select * from (t1 natural join t2) natural left join (t3 natural join t4);
415
408
select * from (t3 natural join t4) natural right join (t1 natural join t2);
450
443
select * from t1 join (t2 join t4 on b + 1 = y) on t1.c = t4.c;
451
444
select * from (t2 join t4 on b + 1 = y) join t1 on t1.c = t4.c;
452
445
select * from t1 natural join (t2 join t4 on b + 1 = y);
453
 
--sorted_result
454
446
select * from (t1 cross join t2) join (t3 cross join t4) on (a < y and t2.b < t3.c);
455
447
 
456
448
# MySQL extension - 'join ... on' over nested comma operator
457
 
--sorted_result
458
449
select * from (t1, t2) join (t3, t4) on (a < y and t2.b < t3.c);
459
450
select * from (t1 natural join t2) join (t3 natural join t4) on a = y;
460
 
--sorted_result
461
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;
462
452
 
463
453
# MySQL extension - refererence qualified coalesced columns
466
456
select * from (t4 natural join t5) natural join t1 where t4.y > 7;
467
457
select * from t1 natural left join (t4 natural join t5) where t4.y > 7;
468
458
select * from (t4 natural join t5) natural right join t1 where t4.y > 7;
469
 
--sorted_result
470
459
select * from (t1 natural join t2) join (t3 natural join t4) on t1.b = t3.b;
471
460
 
472
461
# MySQL extension - select qualified columns of NJ columns
492
481
# Negative tests (tests for errors)
493
482
#--------------------------------------------------------------------
494
483
# works in Oracle - bug
495
 
--error ER_NON_UNIQ_ERROR
 
484
-- error 1052
496
485
select * from t1 natural join (t3 cross join t4);
497
486
# works in Oracle - bug
498
 
--error ER_NON_UNIQ_ERROR
 
487
-- error 1052
499
488
select * from (t3 cross join t4) natural join t1;
500
 
--error ER_NON_UNIQ_ERROR
 
489
-- error 1052
501
490
select * from t1 join (t2, t3) using (b);
502
 
--error ER_NON_UNIQ_ERROR
503
 
select * from ((t1 natural join t2), (t3 natural join t4)) natural join t6;
504
 
--error ER_NON_UNIQ_ERROR
505
 
select * from ((t1 natural join t2), (t3 natural join t4)) natural join t6;
506
 
--error ER_NON_UNIQ_ERROR
 
491
-- error 1052
 
492
select * from ((t1 natural join t2), (t3 natural join t4)) natural join t6;
 
493
-- error 1052
 
494
select * from ((t1 natural join t2), (t3 natural join t4)) natural join t6;
 
495
-- error 1052
507
496
select * from t6 natural join ((t1 natural join t2),  (t3 natural join t4));
508
 
--error ER_NON_UNIQ_ERROR
 
497
-- error 1052
509
498
select * from (t1 join t2 on t1.b=t2.b) natural join (t3 natural join t4);
510
 
--error ER_NON_UNIQ_ERROR
 
499
-- error 1052
511
500
select * from  (t3 natural join t4) natural join (t1 join t2 on t1.b=t2.b);
512
501
# this one is OK, the next equivalent one is incorrect (bug in Oracle)
513
 
--error ER_NON_UNIQ_ERROR
 
502
-- error 1052
514
503
select * from (t3 join (t4 natural join t5) on (b < z))
515
504
              natural join
516
505
              (t1 natural join t2);
517
 
--error ER_NON_UNIQ_ERROR
 
506
-- error 1052
518
507
select * from (t1 natural join t2) natural join (t3 join (t4 natural join t5) on (b < z));
519
508
 
520
509
drop table t1;
601
590
create table t3 (a int, b int, filler char(100), key(a), key(b));
602
591
 
603
592
insert into t2 
604
 
  select @a:= A.a + 10*(B.a + 10*C.a), @a, 'filler' from t1 A, t1 B, t1 C where B.a >= 0;
 
593
  select @a:= A.a + 10*(B.a + 10*C.a), @a, 'filler' from t1 A, t1 B, t1 C;
605
594
insert into t3 select * from t2 where a < 800;
606
595
 
607
596
# The order of tables must be t2,t3:
615
604
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
616
605
 
617
606
create table t2 (a int, b int, primary key(a));
618
 
insert into t2 select @v:=A.a+10*B.a, @v  from t1 A, t1 B where B.a >= 0;
 
607
insert into t2 select @v:=A.a+10*B.a, @v  from t1 A, t1 B;
619
608
 
620
609
explain select * from t1;
621
610
--replace_column 2 #