mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
BUG#14480, attempt2: In CREATE ... SELECT ..., don't count the same field twice
when calculating table->null_fields. mysql-test/r/create.result: Testcase for BUG#14480 mysql-test/t/create.test: Testcase for BUG#14480 sql/sql_table.cc: BUG#14480: For CREATE ... SELECT ... a field list passed to mysql_prepare_table() contains instances of create_field for both create-list and select-list. mysql_prepare_table() matches elements that refer to the same field, and joins them together. When the "join" is performed, both of create_field structures has already been counted in "null_fields". This fix makes sure that "null_fields" contains the correct value after two create_field structures have been joined.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
drop table if exists t1,t2,t3;
|
||||
drop table if exists t1,t2,t3,t4,t5;
|
||||
drop database if exists mysqltest;
|
||||
create table t1 (b char(0));
|
||||
insert into t1 values (""),(null);
|
||||
@@ -632,3 +632,69 @@ t1 CREATE TABLE `t1` (
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
CREATE TABLE t2 (
|
||||
a int(11) default NULL
|
||||
);
|
||||
insert into t2 values(111);
|
||||
create table t1 (
|
||||
a varchar(12) charset utf8 collate utf8_bin not null,
|
||||
b int not null, primary key (a)
|
||||
) select a, 1 as b from t2 ;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(12) character set utf8 collate utf8_bin NOT NULL default '',
|
||||
`b` int(11) NOT NULL default '0',
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 (
|
||||
a varchar(12) charset utf8 collate utf8_bin not null,
|
||||
b int not null, primary key (a)
|
||||
) select 'a' as a , 1 as b from t2 ;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(12) character set utf8 collate utf8_bin NOT NULL default '',
|
||||
`b` int(11) NOT NULL default '0',
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 (
|
||||
a varchar(12) charset utf8 collate utf8_bin,
|
||||
b int not null, primary key (a)
|
||||
) select 'a' as a , 1 as b from t2 ;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(12) character set utf8 collate utf8_bin NOT NULL default '',
|
||||
`b` int(11) NOT NULL default '0',
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1, t2;
|
||||
create table t1 (
|
||||
a1 int not null,
|
||||
a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int
|
||||
);
|
||||
insert into t1 values (1,1,1, 1,1,1, 1,1,1);
|
||||
create table t2 (
|
||||
a1 varchar(12) charset utf8 collate utf8_bin not null,
|
||||
a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int,
|
||||
primary key (a1)
|
||||
) select a1,a2,a3,a4,a5,a6,a7,a8,a9 from t1 ;
|
||||
drop table t2;
|
||||
create table t2 (
|
||||
a1 varchar(12) charset utf8 collate utf8_bin,
|
||||
a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int
|
||||
) select a1,a2,a3,a4,a5,a6,a7,a8,a9 from t1;
|
||||
drop table t1, t2;
|
||||
create table t1 (
|
||||
a1 int, a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int
|
||||
);
|
||||
insert into t1 values (1,1,1, 1,1,1, 1,1,1);
|
||||
create table t2 (
|
||||
a1 varchar(12) charset utf8 collate utf8_bin not null,
|
||||
a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int,
|
||||
primary key (a1)
|
||||
) select a1,a2,a3,a4,a5,a6,a7,a8,a9 from t1 ;
|
||||
drop table t1, t2;
|
||||
|
Reference in New Issue
Block a user