Commit 1139d375 authored by kroki@mysql.com's avatar kroki@mysql.com

Merge mysql.com:/home/tomash/src/mysql_ab/mysql-4.1

into  mysql.com:/home/tomash/src/mysql_ab/mysql-4.1-bug16501
parents 74fd0bee d3467c0b
...@@ -2,7 +2,7 @@ drop table if exists t1; ...@@ -2,7 +2,7 @@ drop table if exists t1;
set sql_mode="MySQL40"; set sql_mode="MySQL40";
select @@sql_mode; select @@sql_mode;
@@sql_mode @@sql_mode
NO_FIELD_OPTIONS,MYSQL40 MYSQL40
set @@sql_mode="ANSI"; set @@sql_mode="ANSI";
select @@sql_mode; select @@sql_mode;
@@sql_mode @@sql_mode
...@@ -17,3 +17,32 @@ SELECT id FROM t1 GROUP BY id2; ...@@ -17,3 +17,32 @@ SELECT id FROM t1 GROUP BY id2;
id id
drop table t1; drop table t1;
SET @@SQL_MODE=""; SET @@SQL_MODE="";
CREATE TABLE t1 (i int auto_increment NOT NULL, PRIMARY KEY (i));
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`i` int(11) NOT NULL auto_increment,
PRIMARY KEY (`i`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SET @@SQL_MODE="MYSQL323";
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`i` int(11) NOT NULL auto_increment,
PRIMARY KEY (`i`)
) TYPE=MyISAM
SET @@SQL_MODE="MYSQL40";
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`i` int(11) NOT NULL auto_increment,
PRIMARY KEY (`i`)
) TYPE=MyISAM
SET @@SQL_MODE="NO_FIELD_OPTIONS";
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`i` int(11) NOT NULL,
PRIMARY KEY (`i`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
...@@ -355,3 +355,27 @@ CHECK TABLE t1; ...@@ -355,3 +355,27 @@ CHECK TABLE t1;
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t1 check status OK test.t1 check status OK
DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1;
CREATE TABLE `t1` (
t1_name VARCHAR(255) DEFAULT NULL,
t1_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
KEY (t1_name),
PRIMARY KEY (t1_id)
) AUTO_INCREMENT = 1000;
INSERT INTO t1 (t1_name) VALUES('MySQL');
INSERT INTO t1 (t1_name) VALUES('MySQL');
INSERT INTO t1 (t1_name) VALUES('MySQL');
SELECT * from t1;
t1_name t1_id
MySQL 1000
MySQL 1001
MySQL 1002
SHOW CREATE TABLE `t1`;
Table Create Table
t1 CREATE TABLE `t1` (
`t1_name` varchar(255) default NULL,
`t1_id` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`t1_id`),
KEY `t1_name` (`t1_name`)
) ENGINE=MyISAM AUTO_INCREMENT=1003 DEFAULT CHARSET=latin1
DROP TABLE `t1`;
End of 4.1 tests
...@@ -294,7 +294,7 @@ t2 CREATE TABLE `t2` ( ...@@ -294,7 +294,7 @@ t2 CREATE TABLE `t2` (
`g` geometry NOT NULL default '', `g` geometry NOT NULL default '',
PRIMARY KEY (`fid`), PRIMARY KEY (`fid`),
SPATIAL KEY `g` (`g`(32)) SPATIAL KEY `g` (`g`(32))
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM AUTO_INCREMENT=101 DEFAULT CHARSET=latin1
SELECT count(*) FROM t2; SELECT count(*) FROM t2;
count(*) count(*)
100 100
......
...@@ -1503,3 +1503,41 @@ select * from t1; ...@@ -1503,3 +1503,41 @@ select * from t1;
a b a b
Osnabrck Kln Osnabrck Kln
drop table t1; drop table t1;
create table `t1` (
t1_name varchar(255) default null,
t1_id int(10) unsigned not null auto_increment,
key (t1_name),
primary key (t1_id)
) auto_increment = 1000 default charset=latin1;
insert into t1 (t1_name) values('bla');
insert into t1 (t1_name) values('bla');
insert into t1 (t1_name) values('bla');
select * from t1;
t1_name t1_id
bla 1000
bla 1001
bla 1002
show create table `t1`;
Table Create Table
t1 CREATE TABLE `t1` (
`t1_name` varchar(255) default NULL,
`t1_id` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`t1_id`),
KEY `t1_name` (`t1_name`)
) ENGINE=MyISAM AUTO_INCREMENT=1003 DEFAULT CHARSET=latin1
DROP TABLE `t1`;
select * from t1;
t1_name t1_id
bla 1000
bla 1001
bla 1002
show create table `t1`;
Table Create Table
t1 CREATE TABLE `t1` (
`t1_name` varchar(255) default NULL,
`t1_id` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`t1_id`),
KEY `t1_name` (`t1_name`)
) ENGINE=MyISAM AUTO_INCREMENT=1003 DEFAULT CHARSET=latin1
drop table `t1`;
End of 4.1 tests
...@@ -40,7 +40,7 @@ t9 CREATE TABLE `t9` ( ...@@ -40,7 +40,7 @@ t9 CREATE TABLE `t9` (
`b` char(16) NOT NULL default '', `b` char(16) NOT NULL default '',
`c` int(11) NOT NULL default '0', `c` int(11) NOT NULL default '0',
PRIMARY KEY (`a`) PRIMARY KEY (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 DATA DIRECTORY='TEST_DIR/var/tmp/' INDEX DIRECTORY='TEST_DIR/var/run/' ) ENGINE=MyISAM AUTO_INCREMENT=16725 DEFAULT CHARSET=latin1 DATA DIRECTORY='TEST_DIR/var/tmp/' INDEX DIRECTORY='TEST_DIR/var/run/'
alter table t9 rename t8, add column d int not null; alter table t9 rename t8, add column d int not null;
alter table t8 rename t7; alter table t8 rename t7;
rename table t7 to t9; rename table t7 to t9;
...@@ -62,7 +62,7 @@ t9 CREATE TABLE `t9` ( ...@@ -62,7 +62,7 @@ t9 CREATE TABLE `t9` (
`c` int(11) NOT NULL default '0', `c` int(11) NOT NULL default '0',
`d` int(11) NOT NULL default '0', `d` int(11) NOT NULL default '0',
PRIMARY KEY (`a`) PRIMARY KEY (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 DATA DIRECTORY='TEST_DIR/var/tmp/' INDEX DIRECTORY='TEST_DIR/var/run/' ) ENGINE=MyISAM AUTO_INCREMENT=16725 DEFAULT CHARSET=latin1 DATA DIRECTORY='TEST_DIR/var/tmp/' INDEX DIRECTORY='TEST_DIR/var/run/'
drop database mysqltest; drop database mysqltest;
create table t1 (a int not null) engine=myisam; create table t1 (a int not null) engine=myisam;
show create table t1; show create table t1;
......
...@@ -26,4 +26,16 @@ drop table t1; ...@@ -26,4 +26,16 @@ drop table t1;
SET @@SQL_MODE=""; SET @@SQL_MODE="";
# Bug#14515
CREATE TABLE t1 (i int auto_increment NOT NULL, PRIMARY KEY (i));
SHOW CREATE TABLE t1;
SET @@SQL_MODE="MYSQL323";
SHOW CREATE TABLE t1;
SET @@SQL_MODE="MYSQL40";
SHOW CREATE TABLE t1;
SET @@SQL_MODE="NO_FIELD_OPTIONS";
SHOW CREATE TABLE t1;
DROP TABLE t1;
# End of 4.1 tests # End of 4.1 tests
...@@ -219,4 +219,23 @@ INSERT INTO t1 (b) VALUES ('bbbb'); ...@@ -219,4 +219,23 @@ INSERT INTO t1 (b) VALUES ('bbbb');
CHECK TABLE t1; CHECK TABLE t1;
DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1;
# End of 4.1 tests # BUG #19025:
CREATE TABLE `t1` (
t1_name VARCHAR(255) DEFAULT NULL,
t1_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
KEY (t1_name),
PRIMARY KEY (t1_id)
) AUTO_INCREMENT = 1000;
INSERT INTO t1 (t1_name) VALUES('MySQL');
INSERT INTO t1 (t1_name) VALUES('MySQL');
INSERT INTO t1 (t1_name) VALUES('MySQL');
SELECT * from t1;
SHOW CREATE TABLE `t1`;
DROP TABLE `t1`;
--echo End of 4.1 tests
...@@ -647,4 +647,34 @@ select * from t1; ...@@ -647,4 +647,34 @@ select * from t1;
select * from t1; select * from t1;
drop table t1; drop table t1;
# End of 4.1 tests
#
# BUG #19025 mysqldump doesn't correctly dump "auto_increment = [int]"
#
create table `t1` (
t1_name varchar(255) default null,
t1_id int(10) unsigned not null auto_increment,
key (t1_name),
primary key (t1_id)
) auto_increment = 1000 default charset=latin1;
insert into t1 (t1_name) values('bla');
insert into t1 (t1_name) values('bla');
insert into t1 (t1_name) values('bla');
select * from t1;
show create table `t1`;
--exec $MYSQL_DUMP --skip-comments test t1 > $MYSQLTEST_VARDIR/tmp/bug19025.sql
DROP TABLE `t1`;
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/bug19025.sql
select * from t1;
show create table `t1`;
drop table `t1`;
--echo End of 4.1 tests
...@@ -3207,10 +3207,6 @@ ulong fix_sql_mode(ulong sql_mode) ...@@ -3207,10 +3207,6 @@ ulong fix_sql_mode(ulong sql_mode)
MODE_IGNORE_SPACE | MODE_IGNORE_SPACE |
MODE_NO_KEY_OPTIONS | MODE_NO_TABLE_OPTIONS | MODE_NO_KEY_OPTIONS | MODE_NO_TABLE_OPTIONS |
MODE_NO_FIELD_OPTIONS); MODE_NO_FIELD_OPTIONS);
if (sql_mode & MODE_MYSQL40)
sql_mode|= MODE_NO_FIELD_OPTIONS;
if (sql_mode & MODE_MYSQL323)
sql_mode|= MODE_NO_FIELD_OPTIONS;
return sql_mode; return sql_mode;
} }
......
...@@ -1344,8 +1344,8 @@ store_create_info(THD *thd, TABLE *table, String *packet) ...@@ -1344,8 +1344,8 @@ store_create_info(THD *thd, TABLE *table, String *packet)
has_default= (field->type() != FIELD_TYPE_BLOB && has_default= (field->type() != FIELD_TYPE_BLOB &&
field->unireg_check != Field::NEXT_NUMBER && field->unireg_check != Field::NEXT_NUMBER &&
!((thd->variables.sql_mode & (MODE_MYSQL323 | MODE_MYSQL40)) && !((thd->variables.sql_mode & (MODE_MYSQL323 | MODE_MYSQL40))
has_now_default)); && has_now_default));
if (has_default) if (has_default)
{ {
...@@ -1374,8 +1374,7 @@ store_create_info(THD *thd, TABLE *table, String *packet) ...@@ -1374,8 +1374,7 @@ store_create_info(THD *thd, TABLE *table, String *packet)
packet->append(tmp); packet->append(tmp);
} }
if (!(thd->variables.sql_mode & MODE_NO_FIELD_OPTIONS) && if (!limited_mysql_mode && table->timestamp_field == field &&
table->timestamp_field == field &&
field->unireg_check != Field::TIMESTAMP_DN_FIELD) field->unireg_check != Field::TIMESTAMP_DN_FIELD)
packet->append(" on update CURRENT_TIMESTAMP",28); packet->append(" on update CURRENT_TIMESTAMP",28);
...@@ -1480,6 +1479,24 @@ store_create_info(THD *thd, TABLE *table, String *packet) ...@@ -1480,6 +1479,24 @@ store_create_info(THD *thd, TABLE *table, String *packet)
packet->append(" ENGINE=", 8); packet->append(" ENGINE=", 8);
packet->append(file->table_type()); packet->append(file->table_type());
/*
Add AUTO_INCREMENT=... if there is an AUTO_INCREMENT column,
and NEXT_ID > 1 (the default). We must not print the clause
for engines that do not support this as it would break the
import of dumps, but as of this writing, the test for whether
AUTO_INCREMENT columns are allowed and wether AUTO_INCREMENT=...
is supported is identical, !(file->table_flags() & HA_NO_AUTO_INCREMENT))
Because of that, we do not explicitly test for the feature,
but may extrapolate its existence from that of an AUTO_INCREMENT column.
*/
if(create_info.auto_increment_value > 1)
{
packet->append(" AUTO_INCREMENT=", 16);
end= longlong10_to_str(create_info.auto_increment_value, buff,10);
packet->append(buff, (uint) (end - buff));
}
if (table->table_charset && if (table->table_charset &&
!(thd->variables.sql_mode & MODE_MYSQL323) && !(thd->variables.sql_mode & MODE_MYSQL323) &&
!(thd->variables.sql_mode & MODE_MYSQL40)) !(thd->variables.sql_mode & MODE_MYSQL40))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment