Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
0597c510
Commit
0597c510
authored
Nov 30, 2005
by
jimw@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge mysql.com:/home/jimw/my/mysql-5.0-clean
into mysql.com:/home/jimw/my/mysql-5.1-clean
parents
5ad6b9b4
70c30c8d
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
589 additions
and
19 deletions
+589
-19
VC++Files/sql/mysqld.dsp
VC++Files/sql/mysqld.dsp
+1
-1
mysql-test/r/alter_table.result
mysql-test/r/alter_table.result
+5
-0
mysql-test/r/join.result
mysql-test/r/join.result
+301
-0
mysql-test/r/type_ranges.result
mysql-test/r/type_ranges.result
+1
-1
mysql-test/r/union.result
mysql-test/r/union.result
+26
-0
mysql-test/t/alter_table.test
mysql-test/t/alter_table.test
+11
-3
mysql-test/t/join.test
mysql-test/t/join.test
+207
-0
mysql-test/t/union.test
mysql-test/t/union.test
+18
-0
sql/item.cc
sql/item.cc
+5
-2
sql/sql_table.cc
sql/sql_table.cc
+4
-1
vio/viosslfactories.c
vio/viosslfactories.c
+10
-11
No files found.
VC++Files/sql/mysqld.dsp
View file @
0597c510
...
@@ -456,7 +456,7 @@ SOURCE=.\gstream.cpp
...
@@ -456,7 +456,7 @@ SOURCE=.\gstream.cpp
# End Source File
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\
examples\
ha_archive.cpp
SOURCE=.\ha_archive.cpp
# End Source File
# End Source File
# Begin Source File
# Begin Source File
...
...
mysql-test/r/alter_table.result
View file @
0597c510
...
@@ -555,6 +555,11 @@ alter table test.t1 rename t1;
...
@@ -555,6 +555,11 @@ alter table test.t1 rename t1;
ERROR 3D000: No database selected
ERROR 3D000: No database selected
alter table test.t1 rename test.t1;
alter table test.t1 rename test.t1;
use test;
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;
drop table t1;
create table t1 (v varchar(32));
create table t1 (v varchar(32));
insert into t1 values ('def'),('abc'),('hij'),('3r4f');
insert into t1 values ('def'),('abc'),('hij'),('3r4f');
...
...
mysql-test/r/join.result
View file @
0597c510
...
@@ -391,3 +391,304 @@ i i i
...
@@ -391,3 +391,304 @@ i i i
2 NULL 4
2 NULL 4
2 2 2
2 2 2
drop table t1,t2,t3;
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;
mysql-test/r/type_ranges.result
View file @
0597c510
...
@@ -215,7 +215,7 @@ Field Type Collation Null Key Default Extra Privileges Comment
...
@@ -215,7 +215,7 @@ Field Type Collation Null Key Default Extra Privileges Comment
auto int(5) unsigned NULL NO MUL NULL auto_increment #
auto int(5) unsigned NULL NO MUL NULL auto_increment #
string char(10) latin1_swedish_ci YES newdefault #
string char(10) latin1_swedish_ci YES newdefault #
tiny tinyint(4) NULL NO MUL 0 #
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 #
medium mediumint(8) NULL NO MUL 0 #
long_int int(11) NULL NO 0 #
long_int int(11) NULL NO 0 #
longlong bigint(13) NULL NO MUL 0 #
longlong bigint(13) NULL NO MUL 0 #
...
...
mysql-test/r/union.result
View file @
0597c510
...
@@ -1270,3 +1270,29 @@ id
...
@@ -1270,3 +1270,29 @@ id
5
5
99
99
drop table t1;
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;
mysql-test/t/alter_table.test
View file @
0597c510
...
@@ -405,9 +405,17 @@ drop table t1;
...
@@ -405,9 +405,17 @@ drop table t1;
# End of 4.1 tests
# End of 4.1 tests
#
#
# Some additional tests for new, faster alter table.
# Bug #14693 (ALTER SET DEFAULT doesn't work)
# Note that most of the whole alter table code is being
#
# tested all around the test suite already.
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
));
create
table
t1
(
v
varchar
(
32
));
...
...
mysql-test/t/join.test
View file @
0597c510
...
@@ -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
...
@@ -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
;
drop
table
t1
,
t2
,
t3
;
# End of 4.1 tests
# 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
mysql-test/t/union.test
View file @
0597c510
...
@@ -753,6 +753,24 @@ create table t2 select a from t1 union select b from t1;
...
@@ -753,6 +753,24 @@ create table t2 select a from t1 union select b from t1;
show
columns
from
t2
;
show
columns
from
t2
;
drop
table
t2
,
t1
;
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
# Test that union with VARCHAR produces dynamic row tables
#
#
...
...
sql/item.cc
View file @
0597c510
...
@@ -5854,8 +5854,11 @@ bool Item_type_holder::join_types(THD *thd, Item *item)
...
@@ -5854,8 +5854,11 @@ bool Item_type_holder::join_types(THD *thd, Item *item)
{
{
int
delta1
=
max_length_orig
-
decimals_orig
;
int
delta1
=
max_length_orig
-
decimals_orig
;
int
delta2
=
item
->
max_length
-
item
->
decimals
;
int
delta2
=
item
->
max_length
-
item
->
decimals
;
max_length
=
min
(
max
(
delta1
,
delta2
)
+
decimals
,
if
(
fld_type
==
MYSQL_TYPE_DECIMAL
)
(
fld_type
==
MYSQL_TYPE_FLOAT
)
?
FLT_DIG
+
6
:
DBL_DIG
+
7
);
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
else
max_length
=
(
fld_type
==
MYSQL_TYPE_FLOAT
)
?
FLT_DIG
+
6
:
DBL_DIG
+
7
;
max_length
=
(
fld_type
==
MYSQL_TYPE_FLOAT
)
?
FLT_DIG
+
6
:
DBL_DIG
+
7
;
...
...
sql/sql_table.cc
View file @
0597c510
...
@@ -4153,7 +4153,10 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
...
@@ -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
);
my_error
(
ER_BLOB_CANT_HAVE_DEFAULT
,
MYF
(
0
),
def
->
change
);
DBUG_RETURN
(
TRUE
);
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
();
alter_it
.
remove
();
}
}
}
}
...
...
vio/viosslfactories.c
View file @
0597c510
...
@@ -191,9 +191,6 @@ void netware_ssl_cleanup()
...
@@ -191,9 +191,6 @@ void netware_ssl_cleanup()
/* NetWare SSL initialization */
/* NetWare SSL initialization */
static
void
netware_ssl_init
()
static
void
netware_ssl_init
()
{
{
/* initialize OpenSSL library */
SSL_library_init
();
/* cleanup OpenSSL library */
/* cleanup OpenSSL library */
NXVmRegisterExitHandler
(
netware_ssl_cleanup
,
NULL
);
NXVmRegisterExitHandler
(
netware_ssl_cleanup
,
NULL
);
}
}
...
@@ -228,16 +225,17 @@ new_VioSSLConnectorFd(const char* key_file,
...
@@ -228,16 +225,17 @@ new_VioSSLConnectorFd(const char* key_file,
ptr
->
ssl_method
=
0
;
ptr
->
ssl_method
=
0
;
/* FIXME: constants! */
/* FIXME: constants! */
#ifdef __NETWARE__
netware_ssl_init
();
#endif
if
(
!
ssl_algorithms_added
)
if
(
!
ssl_algorithms_added
)
{
{
DBUG_PRINT
(
"info"
,
(
"todo: OpenSSL_add_all_algorithms()"
));
DBUG_PRINT
(
"info"
,
(
"todo: OpenSSL_add_all_algorithms()"
));
ssl_algorithms_added
=
TRUE
;
ssl_algorithms_added
=
TRUE
;
SSL_library_init
();
OpenSSL_add_all_algorithms
();
OpenSSL_add_all_algorithms
();
}
}
#ifdef __NETWARE__
netware_ssl_init
();
#endif
if
(
!
ssl_error_strings_loaded
)
if
(
!
ssl_error_strings_loaded
)
{
{
DBUG_PRINT
(
"info"
,
(
"todo:SSL_load_error_strings()"
));
DBUG_PRINT
(
"info"
,
(
"todo:SSL_load_error_strings()"
));
...
@@ -319,17 +317,18 @@ new_VioSSLAcceptorFd(const char *key_file,
...
@@ -319,17 +317,18 @@ new_VioSSLAcceptorFd(const char *key_file,
/* FIXME: constants! */
/* FIXME: constants! */
ptr
->
session_id_context
=
ptr
;
ptr
->
session_id_context
=
ptr
;
#ifdef __NETWARE__
netware_ssl_init
();
#endif
if
(
!
ssl_algorithms_added
)
if
(
!
ssl_algorithms_added
)
{
{
DBUG_PRINT
(
"info"
,
(
"todo: OpenSSL_add_all_algorithms()"
));
DBUG_PRINT
(
"info"
,
(
"todo: OpenSSL_add_all_algorithms()"
));
ssl_algorithms_added
=
TRUE
;
ssl_algorithms_added
=
TRUE
;
SSL_library_init
();
OpenSSL_add_all_algorithms
();
OpenSSL_add_all_algorithms
();
}
}
#ifdef __NETWARE__
netware_ssl_init
();
#endif
if
(
!
ssl_error_strings_loaded
)
if
(
!
ssl_error_strings_loaded
)
{
{
DBUG_PRINT
(
"info"
,
(
"todo: SSL_load_error_strings()"
));
DBUG_PRINT
(
"info"
,
(
"todo: SSL_load_error_strings()"
));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment