mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	to grant.test and using replace_column to neuter the Privileges column in SHOW FULL COLUMNS.
		
			
				
	
	
		
			332 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			332 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
#
 | 
						||
# Test of alter table
 | 
						||
#
 | 
						||
--disable_warnings
 | 
						||
drop table if exists t1,t2;
 | 
						||
drop database if exists mysqltest;
 | 
						||
--enable_warnings
 | 
						||
 | 
						||
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);
 | 
						||
insert into t1 values (2,4,3,5,"PENDING",1,7);
 | 
						||
alter table t1
 | 
						||
add column col4_5 varchar(20) not null after col4,
 | 
						||
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;
 | 
						||
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;
 | 
						||
--replace_column 8 #
 | 
						||
SHOW FULL COLUMNS FROM t1;
 | 
						||
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;
 | 
						||
 | 
						||
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)
 | 
						||
) ENGINE=MyISAM;
 | 
						||
 | 
						||
ALTER TABLE t1 ORDER BY t1.id, t1.status, t1.type_id, t1.user_id, t1.body;
 | 
						||
DROP TABLE t1;
 | 
						||
 | 
						||
#
 | 
						||
# The following combination found a hang-bug in MyISAM
 | 
						||
#
 | 
						||
 | 
						||
CREATE TABLE t1 (AnamneseId int(10) unsigned NOT NULL auto_increment,B BLOB,PRIMARY KEY (AnamneseId)) engine=myisam;
 | 
						||
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;
 | 
						||
 | 
						||
#
 | 
						||
# 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;
 | 
						||
 | 
						||
#
 | 
						||
# 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;
 | 
						||
 | 
						||
#
 | 
						||
# 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;
 | 
						||
show keys from t1;
 | 
						||
#let $1=10000;
 | 
						||
let $1=10;
 | 
						||
while ($1)
 | 
						||
{
 | 
						||
 eval insert into t1 values($1,RAND()*1000,RAND()*1000,RAND());
 | 
						||
 dec $1;
 | 
						||
}
 | 
						||
alter table t1 enable keys;
 | 
						||
show keys from t1;
 | 
						||
drop table t1;
 | 
						||
 | 
						||
#
 | 
						||
# 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;
 | 
						||
 | 
						||
# 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;
 | 
						||
 | 
						||
#
 | 
						||
# 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;
 | 
						||
 | 
						||
#
 | 
						||
# 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;
 | 
						||
alter table t1 change a a binary(10);
 | 
						||
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;
 | 
						||
delete from t1;
 | 
						||
 | 
						||
#
 | 
						||
# Test ALTER TABLE .. CHARACTER SET ..
 | 
						||
#
 | 
						||
show create table t1;
 | 
						||
alter table t1 DEFAULT CHARACTER SET latin1;
 | 
						||
show create table t1;
 | 
						||
alter table t1 CONVERT TO CHARACTER SET latin1;
 | 
						||
show create table t1;
 | 
						||
alter table t1 DEFAULT CHARACTER SET cp1251;
 | 
						||
show create table t1;
 | 
						||
 | 
						||
drop table t1;
 | 
						||
 | 
						||
#
 | 
						||
# 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;
 | 
						||
 | 
						||
#
 | 
						||
# 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)
 | 
						||
) ENGINE=MyISAM;
 | 
						||
 | 
						||
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)
 | 
						||
) ENGINE=MyISAM;
 | 
						||
 | 
						||
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)
 | 
						||
) ENGINE=MyISAM;
 | 
						||
 | 
						||
LOCK TABLES t1 WRITE;
 | 
						||
ALTER TABLE t1 DISABLE KEYS;
 | 
						||
SHOW INDEX FROM t1;
 | 
						||
DROP TABLE t1;
 | 
						||
 | 
						||
#
 | 
						||
# Bug 2361 (Don't drop UNIQUE with DROP PRIMARY KEY)
 | 
						||
#
 | 
						||
 | 
						||
CREATE TABLE t1 (a int PRIMARY KEY, b INT UNIQUE);
 | 
						||
ALTER TABLE t1 DROP PRIMARY KEY;
 | 
						||
SHOW CREATE TABLE t1;
 | 
						||
--error 1091
 | 
						||
ALTER TABLE t1 DROP PRIMARY KEY;
 | 
						||
DROP TABLE t1;
 | 
						||
 | 
						||
# 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;
 | 
						||
 | 
						||
#
 | 
						||
# 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;
 | 
						||
 | 
						||
#
 | 
						||
# Bug #6479  ALTER TABLE ... changing charset fails for TEXT columns
 | 
						||
#
 | 
						||
# The column's character set was changed but the actual data was not
 | 
						||
# modified. In other words, the values were reinterpreted
 | 
						||
# as UTF8 instead of being converted.
 | 
						||
create table t1 (a text) character set koi8r;
 | 
						||
insert into t1 values (_koi8r'<27><><EFBFBD><EFBFBD>');
 | 
						||
select hex(a) from t1;
 | 
						||
alter table t1 convert to character set cp1251;
 | 
						||
select hex(a) from t1;
 | 
						||
drop table t1;
 | 
						||
 | 
						||
#
 | 
						||
# Test for bug #7884 "Able to add invalid unique index on TIMESTAMP prefix"
 | 
						||
# MySQL should not think that packed field with non-zero decimals is
 | 
						||
# geometry field and allow to create prefix index which is
 | 
						||
# shorter than packed field length.
 | 
						||
#
 | 
						||
create table t1 ( a timestamp );
 | 
						||
--error 1089
 | 
						||
alter table t1 add unique ( a(1) );
 | 
						||
drop table t1;
 |