mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge mysql.com:/home/jimw/my/mysql-5.0-clean
into mysql.com:/home/jimw/my/mysql-5.1-clean
This commit is contained in:
@ -456,7 +456,7 @@ SOURCE=.\gstream.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\examples\ha_archive.cpp
|
||||
SOURCE=.\ha_archive.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
|
@ -555,6 +555,11 @@ alter table test.t1 rename t1;
|
||||
ERROR 3D000: No database selected
|
||||
alter table test.t1 rename test.t1;
|
||||
use test;
|
||||
create table t1 (mycol int(10) not null);
|
||||
alter table t1 alter column mycol set default 0;
|
||||
desc t1;
|
||||
Field Type Null Key Default Extra
|
||||
mycol int(10) NO 0
|
||||
drop table t1;
|
||||
create table t1 (v varchar(32));
|
||||
insert into t1 values ('def'),('abc'),('hij'),('3r4f');
|
||||
|
@ -391,3 +391,304 @@ i i i
|
||||
2 NULL 4
|
||||
2 2 2
|
||||
drop table t1,t2,t3;
|
||||
create table t1 (c int, b int);
|
||||
create table t2 (a int, b int);
|
||||
create table t3 (b int, c int);
|
||||
create table t4 (y int, c int);
|
||||
create table t5 (y int, z int);
|
||||
create table t6 (a int, c int);
|
||||
insert into t1 values (10,1);
|
||||
insert into t1 values (3 ,1);
|
||||
insert into t1 values (3 ,2);
|
||||
insert into t2 values (2, 1);
|
||||
insert into t3 values (1, 3);
|
||||
insert into t3 values (1,10);
|
||||
insert into t4 values (11,3);
|
||||
insert into t4 values (2, 3);
|
||||
insert into t5 values (11,4);
|
||||
insert into t6 values (2, 3);
|
||||
create algorithm=merge view v1a as
|
||||
select * from t1 natural join t2;
|
||||
create algorithm=merge view v1b(a,b,c) as
|
||||
select * from t1 natural join t2;
|
||||
create algorithm=merge view v1c as
|
||||
select b as a, c as b, a as c from t1 natural join t2;
|
||||
create algorithm=merge view v1d(b, a, c) as
|
||||
select a as c, c as b, b as a from t1 natural join t2;
|
||||
create algorithm=merge view v2a as
|
||||
select t1.c, t1.b, t2.a from t1 join (t2 join t4 on b + 1 = y) on t1.c = t4.c;
|
||||
create algorithm=merge view v2b as
|
||||
select t1.c as b, t1.b as a, t2.a as c
|
||||
from t1 join (t2 join t4 on b + 1 = y) on t1.c = t4.c;
|
||||
create algorithm=merge view v3a as
|
||||
select * from t1 natural join t2 natural join t3;
|
||||
create algorithm=merge view v3b as
|
||||
select * from t1 natural join (t2 natural join t3);
|
||||
create algorithm=merge view v4 as
|
||||
select * from v2a natural join v3a;
|
||||
select * from (t1 natural join t2) natural join (t3 natural join t4);
|
||||
b c a y
|
||||
1 3 2 11
|
||||
1 3 2 2
|
||||
select * from (t1 natural join t2) natural left join (t3 natural join t4);
|
||||
b c a y
|
||||
1 10 2 NULL
|
||||
1 3 2 11
|
||||
1 3 2 2
|
||||
select * from (t3 natural join t4) natural right join (t1 natural join t2);
|
||||
b c a y
|
||||
1 10 2 NULL
|
||||
1 3 2 11
|
||||
1 3 2 2
|
||||
select * from (t1 natural left join t2) natural left join (t3 natural left join t4);
|
||||
b c a y
|
||||
1 10 2 NULL
|
||||
1 3 2 11
|
||||
1 3 2 2
|
||||
2 3 NULL NULL
|
||||
select * from (t4 natural right join t3) natural right join (t2 natural right join t1);
|
||||
b c a y
|
||||
1 10 2 NULL
|
||||
1 3 2 11
|
||||
1 3 2 2
|
||||
2 3 NULL NULL
|
||||
select * from t1 natural join t2 natural join t3 natural join t4;
|
||||
c b a y
|
||||
3 1 2 11
|
||||
3 1 2 2
|
||||
select * from ((t1 natural join t2) natural join t3) natural join t4;
|
||||
c b a y
|
||||
3 1 2 11
|
||||
3 1 2 2
|
||||
select * from t1 natural join (t2 natural join (t3 natural join t4));
|
||||
c b a y
|
||||
3 1 2 11
|
||||
3 1 2 2
|
||||
select * from t5 natural right join (t4 natural right join ((t2 natural right join t1) natural right join t3));
|
||||
y c b a z
|
||||
11 3 1 2 4
|
||||
2 3 1 2 NULL
|
||||
NULL 10 1 2 NULL
|
||||
select * from (t1 natural join t2), (t3 natural join t4);
|
||||
b c a c b y
|
||||
1 10 2 3 1 11
|
||||
1 10 2 3 1 2
|
||||
1 3 2 3 1 11
|
||||
1 3 2 3 1 2
|
||||
select * from (t1 join t2 using (b)) join (t3 join t4 using (c)) using (c);
|
||||
c b a b y
|
||||
3 1 2 1 11
|
||||
3 1 2 1 2
|
||||
select * from (t1 join t2 using (b)) natural join (t3 join t4 using (c));
|
||||
b c a y
|
||||
1 3 2 11
|
||||
1 3 2 2
|
||||
select a,b,c from (t1 natural join t2) natural join (t3 natural join t4)
|
||||
where b + 1 = y or b + 10 = y group by b,c,a having min(b) < max(y) order by a;
|
||||
a b c
|
||||
2 1 3
|
||||
select * from (t1 natural join t2) natural left join (t3 natural join t4)
|
||||
where b + 1 = y or b + 10 = y group by b,c,a,y having min(b) < max(y) order by a, y;
|
||||
b c a y
|
||||
1 3 2 2
|
||||
1 3 2 11
|
||||
select * from (t3 natural join t4) natural right join (t1 natural join t2)
|
||||
where b + 1 = y or b + 10 = y group by b,c,a,y having min(b) < max(y) order by a, y;
|
||||
b c a y
|
||||
1 3 2 2
|
||||
1 3 2 11
|
||||
select * from t1 natural join t2 where t1.c > t2.a;
|
||||
b c a
|
||||
1 10 2
|
||||
1 3 2
|
||||
select * from t1 natural join t2 where t1.b > t2.b;
|
||||
b c a
|
||||
select * from t1 natural left join (t4 natural join t5) where t5.z is not NULL;
|
||||
c b y z
|
||||
3 1 11 4
|
||||
3 2 11 4
|
||||
select * from t1 join (t2 join t4 on b + 1 = y) on t1.c = t4.c;
|
||||
c b a b y c
|
||||
3 1 2 1 2 3
|
||||
3 2 2 1 2 3
|
||||
select * from (t2 join t4 on b + 1 = y) join t1 on t1.c = t4.c;
|
||||
a b y c c b
|
||||
2 1 2 3 3 1
|
||||
2 1 2 3 3 2
|
||||
select * from t1 natural join (t2 join t4 on b + 1 = y);
|
||||
c b a y
|
||||
3 1 2 2
|
||||
select * from (t1 cross join t2) join (t3 cross join t4) on (a < y and t2.b < t3.c);
|
||||
c b a b b c y c
|
||||
10 1 2 1 1 3 11 3
|
||||
10 1 2 1 1 10 11 3
|
||||
3 1 2 1 1 3 11 3
|
||||
3 1 2 1 1 10 11 3
|
||||
3 2 2 1 1 3 11 3
|
||||
3 2 2 1 1 10 11 3
|
||||
select * from (t1, t2) join (t3, t4) on (a < y and t2.b < t3.c);
|
||||
c b a b b c y c
|
||||
10 1 2 1 1 3 11 3
|
||||
10 1 2 1 1 10 11 3
|
||||
3 1 2 1 1 3 11 3
|
||||
3 1 2 1 1 10 11 3
|
||||
3 2 2 1 1 3 11 3
|
||||
3 2 2 1 1 10 11 3
|
||||
select * from (t1 natural join t2) join (t3 natural join t4) on a = y;
|
||||
b c a c b y
|
||||
1 10 2 3 1 2
|
||||
1 3 2 3 1 2
|
||||
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;
|
||||
b c c b a b y c y z
|
||||
1 3 10 1 2 1 11 3 11 4
|
||||
1 10 10 1 2 1 11 3 11 4
|
||||
1 3 3 1 2 1 11 3 11 4
|
||||
1 10 3 1 2 1 11 3 11 4
|
||||
select * from t1 natural join t2 where t1.b > 0;
|
||||
b c a
|
||||
1 10 2
|
||||
1 3 2
|
||||
select * from t1 natural join (t4 natural join t5) where t4.y > 7;
|
||||
c b y z
|
||||
3 1 11 4
|
||||
3 2 11 4
|
||||
select * from (t4 natural join t5) natural join t1 where t4.y > 7;
|
||||
c y z b
|
||||
3 11 4 1
|
||||
3 11 4 2
|
||||
select * from t1 natural left join (t4 natural join t5) where t4.y > 7;
|
||||
c b y z
|
||||
3 1 11 4
|
||||
3 2 11 4
|
||||
select * from (t4 natural join t5) natural right join t1 where t4.y > 7;
|
||||
c b y z
|
||||
3 1 11 4
|
||||
3 2 11 4
|
||||
select * from (t1 natural join t2) join (t3 natural join t4) on t1.b = t3.b;
|
||||
b c a c b y
|
||||
1 10 2 3 1 11
|
||||
1 10 2 3 1 2
|
||||
1 3 2 3 1 11
|
||||
1 3 2 3 1 2
|
||||
select t1.*, t2.* from t1 natural join t2;
|
||||
c b a b
|
||||
10 1 2 1
|
||||
3 1 2 1
|
||||
select t1.*, t2.*, t3.*, t4.* from (t1 natural join t2) natural join (t3 natural join t4);
|
||||
c b a b b c y c
|
||||
3 1 2 1 1 3 11 3
|
||||
3 1 2 1 1 3 2 3
|
||||
select * from (select * from t1 natural join t2) as t12
|
||||
natural join
|
||||
(select * from t3 natural join t4) as t34;
|
||||
b c a y
|
||||
1 3 2 11
|
||||
1 3 2 2
|
||||
select * from (select * from t1 natural join t2) as t12
|
||||
natural left join
|
||||
(select * from t3 natural join t4) as t34;
|
||||
b c a y
|
||||
1 10 2 NULL
|
||||
1 3 2 11
|
||||
1 3 2 2
|
||||
select * from (select * from t3 natural join t4) as t34
|
||||
natural right join
|
||||
(select * from t1 natural join t2) as t12;
|
||||
b c a y
|
||||
1 10 2 NULL
|
||||
1 3 2 11
|
||||
1 3 2 2
|
||||
select * from v1a;
|
||||
b c a
|
||||
1 10 2
|
||||
1 3 2
|
||||
select * from v1b;
|
||||
a b c
|
||||
1 10 2
|
||||
1 3 2
|
||||
select * from v1c;
|
||||
a b c
|
||||
1 10 2
|
||||
1 3 2
|
||||
select * from v1d;
|
||||
b a c
|
||||
2 10 1
|
||||
2 3 1
|
||||
select * from v2a;
|
||||
c b a
|
||||
3 1 2
|
||||
3 2 2
|
||||
select * from v2b;
|
||||
b a c
|
||||
3 1 2
|
||||
3 2 2
|
||||
select * from v3a;
|
||||
b c a
|
||||
1 10 2
|
||||
1 3 2
|
||||
select * from v3b;
|
||||
c b a
|
||||
10 1 2
|
||||
3 1 2
|
||||
select * from v4;
|
||||
c b a
|
||||
3 1 2
|
||||
select * from v1a natural join v2a;
|
||||
b c a
|
||||
1 3 2
|
||||
select v2a.* from v1a natural join v2a;
|
||||
c b a
|
||||
3 1 2
|
||||
select * from v1b join v2a on v1b.b = v2a.c;
|
||||
a b c c b a
|
||||
1 3 2 3 1 2
|
||||
1 3 2 3 2 2
|
||||
select * from v1c join v2a on v1c.b = v2a.c;
|
||||
a b c c b a
|
||||
1 3 2 3 1 2
|
||||
1 3 2 3 2 2
|
||||
select * from v1d join v2a on v1d.a = v2a.c;
|
||||
b a c c b a
|
||||
2 3 1 3 1 2
|
||||
2 3 1 3 2 2
|
||||
select * from v1a join (t3 natural join t4) on a = y;
|
||||
b c a c b y
|
||||
1 10 2 3 1 2
|
||||
1 3 2 3 1 2
|
||||
select * from t1 natural join (t3 cross join t4);
|
||||
ERROR 23000: Column 'c' in from clause is ambiguous
|
||||
select * from (t3 cross join t4) natural join t1;
|
||||
ERROR 23000: Column 'c' in from clause is ambiguous
|
||||
select * from t1 join (t2, t3) using (b);
|
||||
ERROR 23000: Column 'b' in from clause is ambiguous
|
||||
select * from ((t1 natural join t2), (t3 natural join t4)) natural join t6;
|
||||
ERROR 23000: Column 'c' in from clause is ambiguous
|
||||
select * from ((t1 natural join t2), (t3 natural join t4)) natural join t6;
|
||||
ERROR 23000: Column 'c' in from clause is ambiguous
|
||||
select * from (t1 join t2 on t1.b=t2.b) natural join (t3 natural join t4);
|
||||
ERROR 23000: Column 'b' in from clause is ambiguous
|
||||
select * from (t3 natural join t4) natural join (t1 join t2 on t1.b=t2.b);
|
||||
ERROR 23000: Column 'b' in from clause is ambiguous
|
||||
select * from (t3 join (t4 natural join t5) on (b < z))
|
||||
natural join
|
||||
(t1 natural join t2);
|
||||
ERROR 23000: Column 'c' in from clause is ambiguous
|
||||
select t1.b from v1a;
|
||||
ERROR 42S22: Unknown column 't1.b' in 'field list'
|
||||
select * from v1a join v1b on t1.b = t2.b;
|
||||
ERROR 42S22: Unknown column 't1.b' in 'on clause'
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
drop table t3;
|
||||
drop table t4;
|
||||
drop table t5;
|
||||
drop table t6;
|
||||
drop view v1a;
|
||||
drop view v1b;
|
||||
drop view v1c;
|
||||
drop view v1d;
|
||||
drop view v2a;
|
||||
drop view v2b;
|
||||
drop view v3a;
|
||||
drop view v3b;
|
||||
drop view v4;
|
||||
|
@ -215,7 +215,7 @@ Field Type Collation Null Key Default Extra Privileges Comment
|
||||
auto int(5) unsigned NULL NO MUL NULL auto_increment #
|
||||
string char(10) latin1_swedish_ci YES newdefault #
|
||||
tiny tinyint(4) NULL NO MUL 0 #
|
||||
short smallint(6) NULL NO MUL 0 #
|
||||
short smallint(6) NULL NO MUL #
|
||||
medium mediumint(8) NULL NO MUL 0 #
|
||||
long_int int(11) NULL NO 0 #
|
||||
longlong bigint(13) NULL NO MUL 0 #
|
||||
|
@ -1270,3 +1270,29 @@ id
|
||||
5
|
||||
99
|
||||
drop table t1;
|
||||
create table t1 (f1 decimal(60,25), f2 decimal(60,25));
|
||||
insert into t1 values (0.0,0.0);
|
||||
select f1 from t1 union all select f2 from t1;
|
||||
f1
|
||||
0.0000000000000000000000000
|
||||
0.0000000000000000000000000
|
||||
select 'XXXXXXXXXXXXXXXXXXXX' as description, f1 from t1
|
||||
union all
|
||||
select 'YYYYYYYYYYYYYYYYYYYY' as description, f2 from t1;
|
||||
description f1
|
||||
XXXXXXXXXXXXXXXXXXXX 0.0000000000000000000000000
|
||||
YYYYYYYYYYYYYYYYYYYY 0.0000000000000000000000000
|
||||
drop table t1;
|
||||
create table t1 (f1 decimal(60,24), f2 decimal(60,24));
|
||||
insert into t1 values (0.0,0.0);
|
||||
select f1 from t1 union all select f2 from t1;
|
||||
f1
|
||||
0.000000000000000000000000
|
||||
0.000000000000000000000000
|
||||
select 'XXXXXXXXXXXXXXXXXXXX' as description, f1 from t1
|
||||
union all
|
||||
select 'YYYYYYYYYYYYYYYYYYYY' as description, f2 from t1;
|
||||
description f1
|
||||
XXXXXXXXXXXXXXXXXXXX 0.000000000000000000000000
|
||||
YYYYYYYYYYYYYYYYYYYY 0.000000000000000000000000
|
||||
drop table t1;
|
||||
|
@ -405,9 +405,17 @@ drop table t1;
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
# Some additional tests for new, faster alter table.
|
||||
# Note that most of the whole alter table code is being
|
||||
# tested all around the test suite already.
|
||||
# Bug #14693 (ALTER SET DEFAULT doesn't work)
|
||||
#
|
||||
|
||||
create table t1 (mycol int(10) not null);
|
||||
alter table t1 alter column mycol set default 0;
|
||||
desc t1;
|
||||
drop table;
|
||||
|
||||
#
|
||||
# Some additional tests for new, faster alter table. Note that most of the
|
||||
# whole alter table code is being tested all around the test suite already.
|
||||
#
|
||||
|
||||
create table t1 (v varchar(32));
|
||||
|
@ -334,3 +334,210 @@ select t1.i,t2.i,t3.i from t2 right join t3 on (t2.i=t3.i),t1 order by t1.i,t2.i
|
||||
drop table t1,t2,t3;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
# Tests for WL#2486 Natural/using join according to SQL:2003.
|
||||
#
|
||||
# NOTICE:
|
||||
# - The tests are designed so that all statements, except MySQL
|
||||
# extensions run on any SQL server. Please do no change.
|
||||
# - Tests marked with TODO will be submitted as bugs.
|
||||
#
|
||||
|
||||
create table t1 (c int, b int);
|
||||
create table t2 (a int, b int);
|
||||
create table t3 (b int, c int);
|
||||
create table t4 (y int, c int);
|
||||
create table t5 (y int, z int);
|
||||
create table t6 (a int, c int);
|
||||
|
||||
insert into t1 values (10,1);
|
||||
insert into t1 values (3 ,1);
|
||||
insert into t1 values (3 ,2);
|
||||
insert into t2 values (2, 1);
|
||||
insert into t3 values (1, 3);
|
||||
insert into t3 values (1,10);
|
||||
insert into t4 values (11,3);
|
||||
insert into t4 values (2, 3);
|
||||
insert into t5 values (11,4);
|
||||
insert into t6 values (2, 3);
|
||||
|
||||
-- Views with simple natural join.
|
||||
create algorithm=merge view v1a as
|
||||
select * from t1 natural join t2;
|
||||
-- as above, but column names are cross-renamed: a->c, c->b, b->a
|
||||
create algorithm=merge view v1b(a,b,c) as
|
||||
select * from t1 natural join t2;
|
||||
-- as above, but column names are aliased: a->c, c->b, b->a
|
||||
create algorithm=merge view v1c as
|
||||
select b as a, c as b, a as c from t1 natural join t2;
|
||||
-- as above, but column names are cross-renamed, and aliased
|
||||
-- a->c->b, c->b->a, b->a->c
|
||||
create algorithm=merge view v1d(b, a, c) as
|
||||
select a as c, c as b, b as a from t1 natural join t2;
|
||||
|
||||
-- Views with JOIN ... ON
|
||||
create algorithm=merge view v2a as
|
||||
select t1.c, t1.b, t2.a from t1 join (t2 join t4 on b + 1 = y) on t1.c = t4.c;
|
||||
create algorithm=merge view v2b as
|
||||
select t1.c as b, t1.b as a, t2.a as c
|
||||
from t1 join (t2 join t4 on b + 1 = y) on t1.c = t4.c;
|
||||
|
||||
-- Views with bigger natural join
|
||||
create algorithm=merge view v3a as
|
||||
select * from t1 natural join t2 natural join t3;
|
||||
create algorithm=merge view v3b as
|
||||
select * from t1 natural join (t2 natural join t3);
|
||||
|
||||
-- View over views with mixed natural join and join ... on
|
||||
create algorithm=merge view v4 as
|
||||
select * from v2a natural join v3a;
|
||||
|
||||
-- Nested natural/using joins.
|
||||
select * from (t1 natural join t2) natural join (t3 natural join t4);
|
||||
select * from (t1 natural join t2) natural left join (t3 natural join t4);
|
||||
select * from (t3 natural join t4) natural right join (t1 natural join t2);
|
||||
select * from (t1 natural left join t2) natural left join (t3 natural left join t4);
|
||||
select * from (t4 natural right join t3) natural right join (t2 natural right join t1);
|
||||
select * from t1 natural join t2 natural join t3 natural join t4;
|
||||
select * from ((t1 natural join t2) natural join t3) natural join t4;
|
||||
select * from t1 natural join (t2 natural join (t3 natural join t4));
|
||||
-- BUG#15355: this query fails in 'prepared statements' mode
|
||||
-- select * from ((t3 natural join (t1 natural join t2)) natural join t4) natural join t5;
|
||||
-- select * from ((t3 natural left join (t1 natural left join t2)) natural left join t4) natural left join t5;
|
||||
select * from t5 natural right join (t4 natural right join ((t2 natural right join t1) natural right join t3));
|
||||
select * from (t1 natural join t2), (t3 natural join t4);
|
||||
-- MySQL extension - nested comma ',' operator instead of cross join.
|
||||
-- BUG#15357 - natural join with nested cross-join results in incorrect columns
|
||||
-- select * from t5 natural join ((t1 natural join t2), (t3 natural join t4));
|
||||
-- select * from ((t1 natural join t2), (t3 natural join t4)) natural join t5;
|
||||
-- select * from t5 natural join ((t1 natural join t2) cross join (t3 natural join t4));
|
||||
-- select * from ((t1 natural join t2) cross join (t3 natural join t4)) natural join t5;
|
||||
|
||||
select * from (t1 join t2 using (b)) join (t3 join t4 using (c)) using (c);
|
||||
select * from (t1 join t2 using (b)) natural join (t3 join t4 using (c));
|
||||
|
||||
|
||||
-- Other clauses refer to NJ columns.
|
||||
select a,b,c from (t1 natural join t2) natural join (t3 natural join t4)
|
||||
where b + 1 = y or b + 10 = y group by b,c,a having min(b) < max(y) order by a;
|
||||
select * from (t1 natural join t2) natural left join (t3 natural join t4)
|
||||
where b + 1 = y or b + 10 = y group by b,c,a,y having min(b) < max(y) order by a, y;
|
||||
select * from (t3 natural join t4) natural right join (t1 natural join t2)
|
||||
where b + 1 = y or b + 10 = y group by b,c,a,y having min(b) < max(y) order by a, y;
|
||||
|
||||
-- Qualified column references to NJ columns.
|
||||
select * from t1 natural join t2 where t1.c > t2.a;
|
||||
select * from t1 natural join t2 where t1.b > t2.b;
|
||||
select * from t1 natural left join (t4 natural join t5) where t5.z is not NULL;
|
||||
|
||||
-- Nested 'join ... on' - name resolution of ON conditions
|
||||
select * from t1 join (t2 join t4 on b + 1 = y) on t1.c = t4.c;
|
||||
select * from (t2 join t4 on b + 1 = y) join t1 on t1.c = t4.c;
|
||||
select * from t1 natural join (t2 join t4 on b + 1 = y);
|
||||
select * from (t1 cross join t2) join (t3 cross join t4) on (a < y and t2.b < t3.c);
|
||||
|
||||
-- MySQL extension - 'join ... on' over nested comma operator
|
||||
select * from (t1, t2) join (t3, t4) on (a < y and t2.b < t3.c);
|
||||
select * from (t1 natural join t2) join (t3 natural join t4) on a = y;
|
||||
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;
|
||||
|
||||
-- MySQL extension - refererence qualified coalesced columns
|
||||
select * from t1 natural join t2 where t1.b > 0;
|
||||
select * from t1 natural join (t4 natural join t5) where t4.y > 7;
|
||||
select * from (t4 natural join t5) natural join t1 where t4.y > 7;
|
||||
select * from t1 natural left join (t4 natural join t5) where t4.y > 7;
|
||||
select * from (t4 natural join t5) natural right join t1 where t4.y > 7;
|
||||
select * from (t1 natural join t2) join (t3 natural join t4) on t1.b = t3.b;
|
||||
|
||||
-- MySQL extension - select qualified columns of NJ columns
|
||||
select t1.*, t2.* from t1 natural join t2;
|
||||
select t1.*, t2.*, t3.*, t4.* from (t1 natural join t2) natural join (t3 natural join t4);
|
||||
|
||||
-- Queries over subselects in the FROM clause
|
||||
select * from (select * from t1 natural join t2) as t12
|
||||
natural join
|
||||
(select * from t3 natural join t4) as t34;
|
||||
select * from (select * from t1 natural join t2) as t12
|
||||
natural left join
|
||||
(select * from t3 natural join t4) as t34;
|
||||
select * from (select * from t3 natural join t4) as t34
|
||||
natural right join
|
||||
(select * from t1 natural join t2) as t12;
|
||||
|
||||
-- Queries over views
|
||||
select * from v1a;
|
||||
select * from v1b;
|
||||
select * from v1c;
|
||||
select * from v1d;
|
||||
select * from v2a;
|
||||
select * from v2b;
|
||||
select * from v3a;
|
||||
select * from v3b;
|
||||
select * from v4;
|
||||
select * from v1a natural join v2a;
|
||||
select v2a.* from v1a natural join v2a;
|
||||
select * from v1b join v2a on v1b.b = v2a.c;
|
||||
select * from v1c join v2a on v1c.b = v2a.c;
|
||||
select * from v1d join v2a on v1d.a = v2a.c;
|
||||
select * from v1a join (t3 natural join t4) on a = y;
|
||||
|
||||
-- TODO: add tests with correlated subqueries for natural join/join on.
|
||||
-- related to BUG#15269
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
-- Negative tests (tests for errors)
|
||||
----------------------------------------------------------------------
|
||||
-- error 1052
|
||||
select * from t1 natural join (t3 cross join t4); -- works in Oracle - bug
|
||||
-- error 1052
|
||||
select * from (t3 cross join t4) natural join t1; -- works in Oracle - bug
|
||||
-- error 1052
|
||||
select * from t1 join (t2, t3) using (b);
|
||||
-- error 1052
|
||||
select * from ((t1 natural join t2), (t3 natural join t4)) natural join t6;
|
||||
-- error 1052
|
||||
select * from ((t1 natural join t2), (t3 natural join t4)) natural join t6;
|
||||
-- error 1052
|
||||
-- BUG#15357: doesn't detect non-unique column 'c', as in the above query.
|
||||
-- select * from t6 natural join ((t1 natural join t2), (t3 natural join t4));
|
||||
-- error 1052
|
||||
select * from (t1 join t2 on t1.b=t2.b) natural join (t3 natural join t4);
|
||||
-- error 1052
|
||||
select * from (t3 natural join t4) natural join (t1 join t2 on t1.b=t2.b);
|
||||
-- this one is OK, the next equivalent one is incorrect (bug in Oracle)
|
||||
-- error 1052
|
||||
select * from (t3 join (t4 natural join t5) on (b < z))
|
||||
natural join
|
||||
(t1 natural join t2);
|
||||
-- error 1052
|
||||
-- BUG#15357: this query should return an ambiguous column error
|
||||
-- Expected result: the query must return error with duplicate column 'c'
|
||||
--select * from (t1 natural join t2)
|
||||
-- natural join
|
||||
-- (t3 join (t4 natural join t5) on (b < z));
|
||||
|
||||
-- error 1054
|
||||
select t1.b from v1a;
|
||||
-- error 1054
|
||||
select * from v1a join v1b on t1.b = t2.b;
|
||||
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
drop table t3;
|
||||
drop table t4;
|
||||
drop table t5;
|
||||
drop table t6;
|
||||
|
||||
drop view v1a;
|
||||
drop view v1b;
|
||||
drop view v1c;
|
||||
drop view v1d;
|
||||
drop view v2a;
|
||||
drop view v2b;
|
||||
drop view v3a;
|
||||
drop view v3b;
|
||||
drop view v4;
|
||||
|
||||
# End of tests for WL#2486 - natural/using join
|
||||
|
@ -753,6 +753,24 @@ create table t2 select a from t1 union select b from t1;
|
||||
show columns from t2;
|
||||
drop table t2, t1;
|
||||
|
||||
#
|
||||
# Bug #14216: UNION + DECIMAL wrong values in result
|
||||
#
|
||||
create table t1 (f1 decimal(60,25), f2 decimal(60,25));
|
||||
insert into t1 values (0.0,0.0);
|
||||
select f1 from t1 union all select f2 from t1;
|
||||
select 'XXXXXXXXXXXXXXXXXXXX' as description, f1 from t1
|
||||
union all
|
||||
select 'YYYYYYYYYYYYYYYYYYYY' as description, f2 from t1;
|
||||
drop table t1;
|
||||
create table t1 (f1 decimal(60,24), f2 decimal(60,24));
|
||||
insert into t1 values (0.0,0.0);
|
||||
select f1 from t1 union all select f2 from t1;
|
||||
select 'XXXXXXXXXXXXXXXXXXXX' as description, f1 from t1
|
||||
union all
|
||||
select 'YYYYYYYYYYYYYYYYYYYY' as description, f2 from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test that union with VARCHAR produces dynamic row tables
|
||||
#
|
||||
|
@ -5854,8 +5854,11 @@ bool Item_type_holder::join_types(THD *thd, Item *item)
|
||||
{
|
||||
int delta1= max_length_orig - decimals_orig;
|
||||
int delta2= item->max_length - item->decimals;
|
||||
max_length= min(max(delta1, delta2) + decimals,
|
||||
(fld_type == MYSQL_TYPE_FLOAT) ? FLT_DIG+6 : DBL_DIG+7);
|
||||
if (fld_type == MYSQL_TYPE_DECIMAL)
|
||||
max_length= max(delta1, delta2) + decimals;
|
||||
else
|
||||
max_length= min(max(delta1, delta2) + decimals,
|
||||
(fld_type == MYSQL_TYPE_FLOAT) ? FLT_DIG+6 : DBL_DIG+7);
|
||||
}
|
||||
else
|
||||
max_length= (fld_type == MYSQL_TYPE_FLOAT) ? FLT_DIG+6 : DBL_DIG+7;
|
||||
|
@ -4153,7 +4153,10 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
|
||||
my_error(ER_BLOB_CANT_HAVE_DEFAULT, MYF(0), def->change);
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
def->def=alter->def; // Use new default
|
||||
if ((def->def=alter->def)) // Use new default
|
||||
def->flags&= ~NO_DEFAULT_VALUE_FLAG;
|
||||
else
|
||||
def->flags|= NO_DEFAULT_VALUE_FLAG;
|
||||
alter_it.remove();
|
||||
}
|
||||
}
|
||||
|
@ -191,9 +191,6 @@ void netware_ssl_cleanup()
|
||||
/* NetWare SSL initialization */
|
||||
static void netware_ssl_init()
|
||||
{
|
||||
/* initialize OpenSSL library */
|
||||
SSL_library_init();
|
||||
|
||||
/* cleanup OpenSSL library */
|
||||
NXVmRegisterExitHandler(netware_ssl_cleanup, NULL);
|
||||
}
|
||||
@ -228,16 +225,17 @@ new_VioSSLConnectorFd(const char* key_file,
|
||||
ptr->ssl_method= 0;
|
||||
/* FIXME: constants! */
|
||||
|
||||
#ifdef __NETWARE__
|
||||
netware_ssl_init();
|
||||
#endif
|
||||
|
||||
if (!ssl_algorithms_added)
|
||||
{
|
||||
DBUG_PRINT("info", ("todo: OpenSSL_add_all_algorithms()"));
|
||||
ssl_algorithms_added = TRUE;
|
||||
SSL_library_init();
|
||||
OpenSSL_add_all_algorithms();
|
||||
}
|
||||
#ifdef __NETWARE__
|
||||
netware_ssl_init();
|
||||
#endif
|
||||
|
||||
if (!ssl_error_strings_loaded)
|
||||
{
|
||||
DBUG_PRINT("info", ("todo:SSL_load_error_strings()"));
|
||||
@ -319,17 +317,18 @@ new_VioSSLAcceptorFd(const char *key_file,
|
||||
/* FIXME: constants! */
|
||||
ptr->session_id_context= ptr;
|
||||
|
||||
#ifdef __NETWARE__
|
||||
netware_ssl_init();
|
||||
#endif
|
||||
|
||||
if (!ssl_algorithms_added)
|
||||
{
|
||||
DBUG_PRINT("info", ("todo: OpenSSL_add_all_algorithms()"));
|
||||
ssl_algorithms_added = TRUE;
|
||||
SSL_library_init();
|
||||
OpenSSL_add_all_algorithms();
|
||||
|
||||
}
|
||||
#ifdef __NETWARE__
|
||||
netware_ssl_init();
|
||||
#endif
|
||||
|
||||
if (!ssl_error_strings_loaded)
|
||||
{
|
||||
DBUG_PRINT("info", ("todo: SSL_load_error_strings()"));
|
||||
|
Reference in New Issue
Block a user