2000-12-28 02:56:38 +01:00
|
|
|
|
#
|
|
|
|
|
# Test of alter table
|
|
|
|
|
#
|
2003-01-06 00:48:59 +01:00
|
|
|
|
--disable_warnings
|
2002-12-05 02:40:33 +01:00
|
|
|
|
drop table if exists t1,t2;
|
2004-03-23 16:15:20 +01:00
|
|
|
|
drop database if exists mysqltest;
|
2003-01-06 00:48:59 +01:00
|
|
|
|
--enable_warnings
|
|
|
|
|
|
2000-12-28 02:56:38 +01:00
|
|
|
|
create table t1 (
|
|
|
|
|
col1 int not null auto_increment primary key,
|
|
|
|
|
col2 varchar(30) not null,
|
|
|
|
|
col3 varchar (20) not null,
|
|
|
|
|
col4 varchar(4) not null,
|
|
|
|
|
col5 enum('PENDING', 'ACTIVE', 'DISABLED') not null,
|
|
|
|
|
col6 int not null, to_be_deleted int);
|
2001-10-29 09:49:35 +01:00
|
|
|
|
insert into t1 values (2,4,3,5,"PENDING",1,7);
|
2000-12-28 02:56:38 +01:00
|
|
|
|
alter table t1
|
|
|
|
|
add column col4_5 varchar(20) not null after col4,
|
2001-10-29 09:49:35 +01:00
|
|
|
|
add column col7 varchar(30) not null after col5,
|
|
|
|
|
add column col8 datetime not null, drop column to_be_deleted,
|
|
|
|
|
change column col2 fourth varchar(30) not null after col3,
|
|
|
|
|
modify column col6 int not null first;
|
|
|
|
|
select * from t1;
|
2000-12-28 02:56:38 +01:00
|
|
|
|
drop table t1;
|
|
|
|
|
|
|
|
|
|
create table t1 (bandID MEDIUMINT UNSIGNED NOT NULL PRIMARY KEY, payoutID SMALLINT UNSIGNED NOT NULL);
|
|
|
|
|
insert into t1 (bandID,payoutID) VALUES (1,6),(2,6),(3,4),(4,9),(5,10),(6,1),(7,12),(8,12);
|
|
|
|
|
alter table t1 add column new_col int, order by payoutid,bandid;
|
|
|
|
|
select * from t1;
|
|
|
|
|
alter table t1 order by bandid,payoutid;
|
|
|
|
|
select * from t1;
|
|
|
|
|
drop table t1;
|
|
|
|
|
|
|
|
|
|
# Check that pack_keys and dynamic length rows are not forced.
|
|
|
|
|
|
|
|
|
|
CREATE TABLE t1 (
|
|
|
|
|
GROUP_ID int(10) unsigned DEFAULT '0' NOT NULL,
|
|
|
|
|
LANG_ID smallint(5) unsigned DEFAULT '0' NOT NULL,
|
|
|
|
|
NAME varchar(80) DEFAULT '' NOT NULL,
|
|
|
|
|
PRIMARY KEY (GROUP_ID,LANG_ID),
|
|
|
|
|
KEY NAME (NAME));
|
|
|
|
|
#show table status like "t1";
|
|
|
|
|
ALTER TABLE t1 CHANGE NAME NAME CHAR(80) not null;
|
2001-01-22 04:32:58 +01:00
|
|
|
|
SHOW FULL COLUMNS FROM t1;
|
2000-12-28 02:56:38 +01:00
|
|
|
|
DROP TABLE t1;
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# Test of ALTER TABLE ... ORDER BY
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
create table t1 (n int);
|
|
|
|
|
insert into t1 values(9),(3),(12),(10);
|
|
|
|
|
alter table t1 order by n;
|
|
|
|
|
select * from t1;
|
|
|
|
|
drop table t1;
|
2001-02-21 13:16:00 +01:00
|
|
|
|
|
|
|
|
|
CREATE TABLE t1 (
|
|
|
|
|
id int(11) unsigned NOT NULL default '0',
|
|
|
|
|
category_id tinyint(4) unsigned NOT NULL default '0',
|
|
|
|
|
type_id tinyint(4) unsigned NOT NULL default '0',
|
|
|
|
|
body text NOT NULL,
|
|
|
|
|
user_id int(11) unsigned NOT NULL default '0',
|
|
|
|
|
status enum('new','old') NOT NULL default 'new',
|
|
|
|
|
PRIMARY KEY (id)
|
2003-12-10 05:31:42 +01:00
|
|
|
|
) ENGINE=MyISAM;
|
2001-02-21 13:16:00 +01:00
|
|
|
|
|
2001-04-01 12:45:48 +02:00
|
|
|
|
ALTER TABLE t1 ORDER BY t1.id, t1.status, t1.type_id, t1.user_id, t1.body;
|
|
|
|
|
DROP TABLE t1;
|
2001-02-21 13:16:00 +01:00
|
|
|
|
|
2001-04-01 12:45:48 +02:00
|
|
|
|
#
|
|
|
|
|
# The following combination found a hang-bug in MyISAM
|
|
|
|
|
#
|
|
|
|
|
|
2003-12-10 05:31:42 +01:00
|
|
|
|
CREATE TABLE t1 (AnamneseId int(10) unsigned NOT NULL auto_increment,B BLOB,PRIMARY KEY (AnamneseId)) engine=myisam;
|
2001-04-01 12:45:48 +02:00
|
|
|
|
insert into t1 values (null,"hello");
|
|
|
|
|
LOCK TABLES t1 WRITE;
|
|
|
|
|
ALTER TABLE t1 ADD Column new_col int not null;
|
|
|
|
|
UNLOCK TABLES;
|
|
|
|
|
OPTIMIZE TABLE t1;
|
|
|
|
|
DROP TABLE t1;
|
2001-05-11 22:26:12 +02:00
|
|
|
|
|
2001-06-11 14:01:28 +02:00
|
|
|
|
#
|
|
|
|
|
# Drop and add an auto_increment column
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
create table t1 (i int unsigned not null auto_increment primary key);
|
|
|
|
|
insert into t1 values (null),(null),(null),(null);
|
|
|
|
|
alter table t1 drop i,add i int unsigned not null auto_increment, drop primary key, add primary key (i);
|
|
|
|
|
select * from t1;
|
|
|
|
|
drop table t1;
|
|
|
|
|
|
2004-02-06 12:28:57 +01:00
|
|
|
|
#
|
|
|
|
|
# Bug #2628: 'alter table t1 rename mysqltest.t1' silently drops mysqltest.t1
|
|
|
|
|
# if it exists
|
|
|
|
|
#
|
|
|
|
|
create table t1 (name char(15));
|
|
|
|
|
insert into t1 (name) values ("current");
|
|
|
|
|
create database mysqltest;
|
|
|
|
|
create table mysqltest.t1 (name char(15));
|
|
|
|
|
insert into mysqltest.t1 (name) values ("mysqltest");
|
|
|
|
|
select * from t1;
|
|
|
|
|
select * from mysqltest.t1;
|
|
|
|
|
--error 1050
|
|
|
|
|
alter table t1 rename mysqltest.t1;
|
|
|
|
|
select * from t1;
|
|
|
|
|
select * from mysqltest.t1;
|
|
|
|
|
drop table t1;
|
|
|
|
|
drop database mysqltest;
|
2004-03-23 16:15:20 +01:00
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# Rights for renaming test (Bug #3270)
|
|
|
|
|
#
|
2004-03-25 22:08:42 +01:00
|
|
|
|
connect (root,localhost,root,,test,$MASTER_MYPORT,master.sock);
|
2004-03-23 16:15:20 +01:00
|
|
|
|
connection root;
|
|
|
|
|
--disable_warnings
|
|
|
|
|
create database mysqltest;
|
|
|
|
|
--enable_warnings
|
|
|
|
|
create table mysqltest.t1 (a int,b int,c int);
|
|
|
|
|
grant all on mysqltest.t1 to mysqltest_1@localhost;
|
2004-03-25 22:08:42 +01:00
|
|
|
|
connect (user1,localhost,mysqltest_1,,mysqltest,$MASTER_MYPORT,master.sock);
|
2004-03-23 16:15:20 +01:00
|
|
|
|
connection user1;
|
|
|
|
|
-- error 1142
|
|
|
|
|
alter table t1 rename t2;
|
|
|
|
|
connection root;
|
2004-03-25 20:52:25 +01:00
|
|
|
|
revoke all privileges on mysqltest.t1 from mysqltest_1@localhost;
|
2004-07-08 15:54:07 +02:00
|
|
|
|
delete from mysql.user where user=_binary'mysqltest_1';
|
2004-03-23 16:15:20 +01:00
|
|
|
|
drop database mysqltest;
|
2004-03-25 21:05:09 +01:00
|
|
|
|
|
2001-05-11 22:26:12 +02:00
|
|
|
|
#
|
|
|
|
|
# ALTER TABLE ... ENABLE/DISABLE KEYS
|
|
|
|
|
|
|
|
|
|
create table t1 (n1 int not null, n2 int, n3 int, n4 float,
|
|
|
|
|
unique(n1),
|
|
|
|
|
key (n1, n2, n3, n4),
|
|
|
|
|
key (n2, n3, n4, n1),
|
|
|
|
|
key (n3, n4, n1, n2),
|
|
|
|
|
key (n4, n1, n2, n3) );
|
|
|
|
|
alter table t1 disable keys;
|
2003-04-03 20:17:53 +02:00
|
|
|
|
show keys from t1;
|
2001-07-02 21:18:57 +02:00
|
|
|
|
#let $1=10000;
|
|
|
|
|
let $1=10;
|
2001-05-11 22:26:12 +02:00
|
|
|
|
while ($1)
|
|
|
|
|
{
|
|
|
|
|
eval insert into t1 values($1,RAND()*1000,RAND()*1000,RAND());
|
|
|
|
|
dec $1;
|
|
|
|
|
}
|
|
|
|
|
alter table t1 enable keys;
|
2003-04-03 20:17:53 +02:00
|
|
|
|
show keys from t1;
|
2001-05-11 22:26:12 +02:00
|
|
|
|
drop table t1;
|
2001-06-12 14:12:35 +02:00
|
|
|
|
|
2002-06-03 23:40:27 +02:00
|
|
|
|
#
|
|
|
|
|
# Alter table and rename
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
create table t1 (i int unsigned not null auto_increment primary key);
|
|
|
|
|
alter table t1 rename t2;
|
|
|
|
|
alter table t2 rename t1, add c char(10) comment "no comment";
|
|
|
|
|
show columns from t1;
|
|
|
|
|
drop table t1;
|
2003-04-22 22:53:07 +02:00
|
|
|
|
|
|
|
|
|
# implicit analyze
|
|
|
|
|
|
|
|
|
|
create table t1 (a int, b int);
|
|
|
|
|
let $1=100;
|
|
|
|
|
while ($1)
|
|
|
|
|
{
|
|
|
|
|
eval insert into t1 values(1,$1), (2,$1), (3, $1);
|
|
|
|
|
dec $1;
|
|
|
|
|
}
|
|
|
|
|
alter table t1 add unique (a,b), add key (b);
|
|
|
|
|
show keys from t1;
|
|
|
|
|
analyze table t1;
|
|
|
|
|
show keys from t1;
|
|
|
|
|
drop table t1;
|
|
|
|
|
|
2003-06-01 11:32:53 +02:00
|
|
|
|
#
|
|
|
|
|
# Test of ALTER TABLE DELAYED
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
CREATE TABLE t1 (i int(10), index(i) );
|
|
|
|
|
ALTER TABLE t1 DISABLE KEYS;
|
|
|
|
|
INSERT DELAYED INTO t1 VALUES(1),(2),(3);
|
|
|
|
|
ALTER TABLE t1 ENABLE KEYS;
|
|
|
|
|
drop table t1;
|
2003-07-14 15:00:27 +02:00
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# Test that data get converted when character set is changed
|
|
|
|
|
# Test that data doesn't get converted when src or dst is BINARY/BLOB
|
|
|
|
|
#
|
|
|
|
|
set names koi8r;
|
|
|
|
|
create table t1 (a char(10) character set koi8r);
|
|
|
|
|
insert into t1 values ('<27><><EFBFBD><EFBFBD>');
|
|
|
|
|
select a,hex(a) from t1;
|
|
|
|
|
alter table t1 change a a char(10) character set cp1251;
|
|
|
|
|
select a,hex(a) from t1;
|
2004-03-26 13:11:46 +01:00
|
|
|
|
alter table t1 change a a binary(10);
|
2003-07-14 15:00:27 +02:00
|
|
|
|
select a,hex(a) from t1;
|
|
|
|
|
alter table t1 change a a char(10) character set cp1251;
|
|
|
|
|
select a,hex(a) from t1;
|
|
|
|
|
alter table t1 change a a char(10) character set koi8r;
|
|
|
|
|
select a,hex(a) from t1;
|
|
|
|
|
alter table t1 change a a varchar(10) character set cp1251;
|
|
|
|
|
select a,hex(a) from t1;
|
|
|
|
|
alter table t1 change a a char(10) character set koi8r;
|
|
|
|
|
select a,hex(a) from t1;
|
|
|
|
|
alter table t1 change a a text character set cp1251;
|
|
|
|
|
select a,hex(a) from t1;
|
|
|
|
|
alter table t1 change a a char(10) character set koi8r;
|
|
|
|
|
select a,hex(a) from t1;
|
|
|
|
|
|
2003-11-18 12:47:27 +01:00
|
|
|
|
#
|
|
|
|
|
# Test ALTER TABLE .. CHARACTER SET ..
|
|
|
|
|
#
|
|
|
|
|
show create table t1;
|
|
|
|
|
alter table t1 DEFAULT CHARACTER SET latin1;
|
|
|
|
|
show create table t1;
|
2004-03-30 19:18:49 +02:00
|
|
|
|
alter table t1 CONVERT TO CHARACTER SET latin1;
|
2003-11-18 12:47:27 +01:00
|
|
|
|
show create table t1;
|
|
|
|
|
alter table t1 DEFAULT CHARACTER SET cp1251;
|
|
|
|
|
show create table t1;
|
|
|
|
|
|
2003-07-14 15:00:27 +02:00
|
|
|
|
drop table t1;
|
2003-08-11 21:44:43 +02:00
|
|
|
|
|
2004-03-19 08:37:49 +01:00
|
|
|
|
#
|
|
|
|
|
# Bug#2821
|
|
|
|
|
# Test that table CHARACTER SET does not affect blobs
|
|
|
|
|
#
|
|
|
|
|
create table t1 (myblob longblob,mytext longtext)
|
|
|
|
|
default charset latin1 collate latin1_general_cs;
|
|
|
|
|
show create table t1;
|
|
|
|
|
alter table t1 character set latin2;
|
|
|
|
|
show create table t1;
|
|
|
|
|
drop table t1;
|
|
|
|
|
|
2003-07-08 22:58:04 +02:00
|
|
|
|
#
|
|
|
|
|
# Test ALTER TABLE ENABLE/DISABLE keys when things are locked
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
CREATE TABLE t1 (
|
|
|
|
|
Host varchar(16) binary NOT NULL default '',
|
|
|
|
|
User varchar(16) binary NOT NULL default '',
|
|
|
|
|
PRIMARY KEY (Host,User)
|
2003-12-10 05:31:42 +01:00
|
|
|
|
) ENGINE=MyISAM;
|
2003-07-08 22:58:04 +02:00
|
|
|
|
|
|
|
|
|
ALTER TABLE t1 DISABLE KEYS;
|
|
|
|
|
LOCK TABLES t1 WRITE;
|
|
|
|
|
INSERT INTO t1 VALUES ('localhost','root'),('localhost',''),('games','monty');
|
|
|
|
|
SHOW INDEX FROM t1;
|
|
|
|
|
ALTER TABLE t1 ENABLE KEYS;
|
|
|
|
|
UNLOCK TABLES;
|
|
|
|
|
CHECK TABLES t1;
|
|
|
|
|
DROP TABLE t1;
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# Test with two keys
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
CREATE TABLE t1 (
|
|
|
|
|
Host varchar(16) binary NOT NULL default '',
|
|
|
|
|
User varchar(16) binary NOT NULL default '',
|
|
|
|
|
PRIMARY KEY (Host,User),
|
|
|
|
|
KEY (Host)
|
2003-12-10 05:31:42 +01:00
|
|
|
|
) ENGINE=MyISAM;
|
2003-07-08 22:58:04 +02:00
|
|
|
|
|
|
|
|
|
ALTER TABLE t1 DISABLE KEYS;
|
|
|
|
|
SHOW INDEX FROM t1;
|
|
|
|
|
LOCK TABLES t1 WRITE;
|
|
|
|
|
INSERT INTO t1 VALUES ('localhost','root'),('localhost','');
|
|
|
|
|
SHOW INDEX FROM t1;
|
|
|
|
|
ALTER TABLE t1 ENABLE KEYS;
|
|
|
|
|
SHOW INDEX FROM t1;
|
|
|
|
|
UNLOCK TABLES;
|
|
|
|
|
CHECK TABLES t1;
|
|
|
|
|
|
|
|
|
|
# Test RENAME with LOCK TABLES
|
|
|
|
|
LOCK TABLES t1 WRITE;
|
|
|
|
|
ALTER TABLE t1 RENAME t2;
|
|
|
|
|
UNLOCK TABLES;
|
|
|
|
|
select * from t2;
|
|
|
|
|
DROP TABLE t2;
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# Test disable keys with locking
|
|
|
|
|
#
|
|
|
|
|
CREATE TABLE t1 (
|
|
|
|
|
Host varchar(16) binary NOT NULL default '',
|
|
|
|
|
User varchar(16) binary NOT NULL default '',
|
|
|
|
|
PRIMARY KEY (Host,User),
|
|
|
|
|
KEY (Host)
|
2003-12-10 05:31:42 +01:00
|
|
|
|
) ENGINE=MyISAM;
|
2003-07-08 22:58:04 +02:00
|
|
|
|
|
|
|
|
|
LOCK TABLES t1 WRITE;
|
|
|
|
|
ALTER TABLE t1 DISABLE KEYS;
|
|
|
|
|
SHOW INDEX FROM t1;
|
|
|
|
|
DROP TABLE t1;
|
2004-01-13 13:18:37 +01:00
|
|
|
|
|
|
|
|
|
#
|
2004-03-25 22:29:45 +01:00
|
|
|
|
# Bug 2361 (Don't drop UNIQUE with DROP PRIMARY KEY)
|
2004-01-13 13:18:37 +01:00
|
|
|
|
#
|
|
|
|
|
|
2004-01-28 18:35:52 +01:00
|
|
|
|
CREATE TABLE t1 (a int PRIMARY KEY, b INT UNIQUE);
|
2004-01-13 13:18:37 +01:00
|
|
|
|
ALTER TABLE t1 DROP PRIMARY KEY;
|
|
|
|
|
SHOW CREATE TABLE t1;
|
2004-01-28 18:35:52 +01:00
|
|
|
|
--error 1091
|
|
|
|
|
ALTER TABLE t1 DROP PRIMARY KEY;
|
2004-01-13 13:18:37 +01:00
|
|
|
|
DROP TABLE t1;
|
2004-06-23 09:40:42 +02:00
|
|
|
|
|
|
|
|
|
# BUG#3899
|
|
|
|
|
create table t1 (a int, b int, key(a));
|
|
|
|
|
insert into t1 values (1,1), (2,2);
|
|
|
|
|
--error 1091
|
|
|
|
|
alter table t1 drop key no_such_key;
|
|
|
|
|
alter table t1 drop key a;
|
|
|
|
|
drop table t1;
|
2004-08-18 19:57:55 +02:00
|
|
|
|
|
2004-07-26 10:52:40 +02:00
|
|
|
|
#
|
|
|
|
|
# BUG#4717 - check for valid table names
|
|
|
|
|
#
|
|
|
|
|
create table t1 (a int);
|
|
|
|
|
--error 1103
|
|
|
|
|
alter table t1 rename to `t1\\`;
|
|
|
|
|
--error 1103
|
|
|
|
|
rename table t1 to `t1\\`;
|
|
|
|
|
drop table t1;
|
|
|
|
|
|