mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Fixed UNION fields type/length detecting
This commit is contained in:
@ -53,7 +53,7 @@ select 0,'#' union select a,b from t1 union all select a,b from t2 union select
|
||||
4 d
|
||||
5 f
|
||||
6 e
|
||||
7 g
|
||||
7 gg
|
||||
select a,b from t1 union select a,b from t1;
|
||||
a b
|
||||
1 a
|
||||
@ -449,10 +449,10 @@ INSERT INTO t2 (id, id_master, text1, text2) VALUES("4", "1",
|
||||
SELECT 1 AS id_master, 1 AS id, NULL AS text1, 'ABCDE' AS text2 UNION SELECT id_master, t2.id, text1, text2 FROM t1 LEFT JOIN t2 ON t1.id = t2.id_master;
|
||||
id_master id text1 text2
|
||||
1 1 NULL ABCDE
|
||||
1 1 bar1
|
||||
1 2 bar2
|
||||
1 1 foo1 bar1
|
||||
1 2 foo2 bar2
|
||||
1 3 NULL bar3
|
||||
1 4 bar4
|
||||
1 4 foo4 bar4
|
||||
SELECT 1 AS id_master, 1 AS id, 'ABCDE' AS text1, 'ABCDE' AS text2 UNION SELECT id_master, t2.id, text1, text2 FROM t1 LEFT JOIN t2 ON t1.id = t2.id_master;
|
||||
id_master id text1 text2
|
||||
1 1 ABCDE ABCDE
|
||||
@ -523,3 +523,204 @@ pla_id matintnum
|
||||
105 c
|
||||
0 0
|
||||
drop table t1, t2;
|
||||
create table t1 SELECT "a" as a UNION select "aa" as a;
|
||||
select * from t1;
|
||||
a
|
||||
a
|
||||
aa
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` char(2) NOT NULL default ''
|
||||
) TYPE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT 12 as a UNION select "aa" as a;
|
||||
select * from t1;
|
||||
a
|
||||
12
|
||||
aa
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` char(2) NOT NULL default ''
|
||||
) TYPE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT 12 as a UNION select 12.2 as a;
|
||||
select * from t1;
|
||||
a
|
||||
12.0
|
||||
12.2
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` double(4,1) NOT NULL default '0.0'
|
||||
) TYPE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t2 (it1 tinyint, it2 tinyint not null, i int not null, f float, d double, y year, da date, dt datetime, sc char(10), sv varchar(10), b blob);
|
||||
insert into t2 values (NULL, 1, 3, 1.5, 2.5, 1972, '1972-10-22', '1972-10-22 11:50', 'testc', 'testv', 'tetetetetest');
|
||||
create table t1 SELECT it2 from t2 UNION select it1 from t2;
|
||||
select * from t1;
|
||||
it2
|
||||
1
|
||||
NULL
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`it2` tinyint(4) default NULL
|
||||
) TYPE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT it2 from t2 UNION select i from t2;
|
||||
select * from t1;
|
||||
it2
|
||||
1
|
||||
3
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`it2` int(11) NOT NULL default '0'
|
||||
) TYPE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT i from t2 UNION select f from t2;
|
||||
select * from t1;
|
||||
i
|
||||
3
|
||||
1.5
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`i` float default NULL
|
||||
) TYPE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT f from t2 UNION select d from t2;
|
||||
select * from t1;
|
||||
f
|
||||
1.5
|
||||
2.5
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f` double default NULL
|
||||
) TYPE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT f from t2 UNION select y from t2;
|
||||
select * from t1;
|
||||
f
|
||||
1.5
|
||||
1972
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f` double default NULL
|
||||
) TYPE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT f from t2 UNION select da from t2;
|
||||
select * from t1;
|
||||
f
|
||||
1.5
|
||||
1972-10-22
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f` char(12) binary default NULL
|
||||
) TYPE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT y from t2 UNION select da from t2;
|
||||
select * from t1;
|
||||
y
|
||||
1972
|
||||
1972-10-22
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`y` char(10) binary default NULL
|
||||
) TYPE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT y from t2 UNION select dt from t2;
|
||||
select * from t1;
|
||||
y
|
||||
1972
|
||||
1972-10-22 11:50:00
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`y` char(19) binary default NULL
|
||||
) TYPE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT da from t2 UNION select dt from t2;
|
||||
select * from t1;
|
||||
da
|
||||
1972-10-22 00:00:00
|
||||
1972-10-22 11:50:00
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`da` datetime default NULL
|
||||
) TYPE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT dt from t2 UNION select sc from t2;
|
||||
select * from t1;
|
||||
dt
|
||||
1972-10-22 11:50:00
|
||||
testc
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`dt` char(19) default NULL
|
||||
) TYPE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT dt from t2 UNION select sv from t2;
|
||||
select * from t1;
|
||||
dt
|
||||
1972-10-22 11:50:00
|
||||
testv
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`dt` char(19) default NULL
|
||||
) TYPE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT sc from t2 UNION select sv from t2;
|
||||
select * from t1;
|
||||
sc
|
||||
testc
|
||||
testv
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`sc` varchar(10) default NULL
|
||||
) TYPE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT dt from t2 UNION select b from t2;
|
||||
select * from t1;
|
||||
dt
|
||||
1972-10-22 11:50:00
|
||||
tetetetetest
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`dt` blob
|
||||
) TYPE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT sv from t2 UNION select b from t2;
|
||||
select * from t1;
|
||||
sv
|
||||
testv
|
||||
tetetetetest
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`sv` blob
|
||||
) TYPE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT i from t2 UNION select d from t2 UNION select b from t2;
|
||||
select * from t1;
|
||||
i
|
||||
3
|
||||
2.5
|
||||
tetetetetest
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`i` blob
|
||||
) TYPE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1,t2;
|
||||
|
Reference in New Issue
Block a user