#
# Check some special create statements.
#

--disable_warnings
drop table if exists t1,t2,t3,t4,t5;
drop database if exists mysqltest;
--enable_warnings

create table t1 (b char(0));
insert into t1 values (""),(null);
select * from t1;
drop table if exists t1;

create table t1 (b char(0) not null);
create table if not exists t1 (b char(0) not null);
insert into t1 values (""),(null);
select * from t1;
drop table t1;

create table t1 (a int not null auto_increment,primary key (a)) engine=heap;
drop table t1;

#
# Test of some CREATE TABLE'S that should fail
#

--error 1146
create table t2 engine=heap select * from t1;
--error 1146
create table t2 select auto+1 from t1;
drop table if exists t1,t2;
--error 1167
create table t1 (b char(0) not null, index(b));
--error 1163
create table t1 (a int not null,b text) engine=heap;
drop table if exists t1;

--error 1075
create table t1 (ordid int(8) not null auto_increment, ord  varchar(50) not null, primary key (ord,ordid)) engine=heap;

-- error 1049
create table not_existing_database.test (a int);
create table `a/a` (a int);
show create table `a/a`;
create table t1 like `a/a`;
drop table `a/a`;
drop table `t1`;
--error 1103
create table `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa int);
--error 1059
create table a (`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` int);

#
# Some wrong defaults, so these creates should fail too (Bug #5902)
#
--error 1067
create table t1 (a datetime default now());
--error 1294
create table t1 (a datetime on update now());
--error 1067
create table t1 (a int default 100 auto_increment);
--error 1067
create table t1 (a tinyint default 1000);
--error 1067
create table t1 (a varchar(5) default 'abcdef');

create table t1 (a varchar(5) default 'abcde');
insert into t1 values();
select * from t1;
--error 1067
alter table t1 alter column a set default 'abcdef';
drop table t1;

#
# test of dummy table names
#

create table 1ea10 (1a20 int,1e int);
insert into 1ea10 values(1,1);
select 1ea10.1a20,1e+ 1e+10 from 1ea10;
drop table 1ea10;
create table t1 (t1.index int);
drop table t1;
# Test that we get warning for this
drop database if exists mysqltest;
create database mysqltest;
create table mysqltest.$test1 (a$1 int, $b int, c$ int);
insert into mysqltest.$test1 values (1,2,3);
select a$1, $b, c$ from mysqltest.$test1;
create table mysqltest.test2$ (a int);
drop table mysqltest.test2$;
drop database mysqltest;

--error 1103
create table `` (a int);
--error 1103
drop table if exists ``;
--error 1166
create table t1 (`` int);
--error 1280
create table t1 (i int, index `` (i)); 

#
# Test of CREATE ... SELECT with indexes
#

create table t1 (a int auto_increment not null primary key, B CHAR(20));
insert into t1 (b) values ("hello"),("my"),("world");
create table t2 (key (b)) select * from t1;
explain select * from t2 where b="world";
select * from t2 where b="world";
drop table t1,t2;

#
# Test types after CREATE ... SELECT
#

create table t1(x varchar(50) );
create table t2 select x from t1 where 1=2;
describe t1;
describe t2;
drop table t2;
create table t2 select now() as a , curtime() as b, curdate() as c , 1+1 as d , 1.0 + 1 as e , 33333333333333333 + 3 as f;
describe t2;
drop table t2;
create table t2 select CAST("2001-12-29" AS DATE) as d, CAST("20:45:11" AS TIME) as t, CAST("2001-12-29  20:45:11" AS DATETIME) as dt;
describe t2;
drop table t1,t2;

#
# Test of CREATE ... SELECT with duplicate fields
#

create table t1 (a tinyint);
create table t2 (a int) select * from t1;                        
describe t1;
describe t2;
drop table if exists t2;
--error 1060
create table t2 (a int, a float) select * from t1;               
drop table if exists t2;
--error 1060
create table t2 (a int) select a as b, a+1 as b from t1;         
drop table if exists t2;
--error 1060
create table t2 (b int) select a as b, a+1 as b from t1;         
drop table if exists t1,t2;

#
# Test CREATE ... SELECT when insert fails
#

CREATE TABLE t1 (a int not null);
INSERT INTO t1 values (1),(2),(1);
--error ER_DUP_ENTRY
CREATE TABLE t2 (primary key(a)) SELECT * FROM t1;
--error 1146
SELECT * from t2;
DROP TABLE t1;
DROP TABLE IF EXISTS t2;

#
# Test of primary key with 32 index
#

create table t1 (a int not null, b int, primary key(a), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b));
show create table t1;
drop table t1;
create table t1 select if(1,'1','0'), month("2002-08-02");
drop table t1;
create table t1 select if('2002'='2002','Y','N');
select * from t1;
drop table if exists t1;

#
# Test default table type
#
SET SESSION storage_engine="heap";
SELECT @@storage_engine;
CREATE TABLE t1 (a int not null);
show create table t1;
drop table t1;
--error 1286
SET SESSION storage_engine="gemini";
SELECT @@storage_engine;
CREATE TABLE t1 (a int not null);
show create table t1;
SET SESSION storage_engine=default;
drop table t1;


#
# ISO requires that primary keys are implicitly NOT NULL
#
create table t1 ( k1 varchar(2), k2 int, primary key(k1,k2));
insert into t1 values ("a", 1), ("b", 2);
--error 1048
insert into t1 values ("c", NULL);
--error 1048
insert into t1 values (NULL, 3);
--error 1048
insert into t1 values (NULL, NULL);
drop table t1;

#
# Bug # 801
#

create table t1 select x'4132';
drop table t1;

#
# bug #1434
#

create table t1 select 1,2,3;
create table if not exists t1 select 1,2;
--error 1136
create table if not exists t1 select 1,2,3,4;
create table if not exists t1 select 1;
select * from t1;
drop table t1;

#
# Test create table if not exists with duplicate key error
#

flush status;
create table t1 (a int not null, b int, primary key (a));
insert into t1 values (1,1);
create table if not exists t1 select 2;
select * from t1;
create table if not exists t1 select 3 as 'a',4 as 'b';
--error ER_DUP_ENTRY
create table if not exists t1 select 3 as 'a',3 as 'b';
show warnings;
show status like "Opened_tables";
select * from t1;
drop table t1;

#
# Test for Bug #2985 
#   "Table truncated when creating another table name with Spaces"
#

--error 1103
create table `t1 `(a int);
--error 1102
create database `db1 `;
--error 1166
create table t1(`a ` int);

#
# Test for Bug #3481 
#   "Parser permits multiple commas without syntax error"
#

--error 1064
create table t1 (a int,);
--error 1064
create table t1 (a int,,b int);
--error 1064
create table t1 (,b int);

#
# Test create with foreign keys
#

create table t1 (a int, key(a));
create table t2 (b int, foreign key(b) references t1(a), key(b));
drop table if exists t1,t2;

#
# Test for CREATE TABLE .. LIKE ..
#

create table t1(id int not null, name char(20));
insert into t1 values(10,'mysql'),(20,'monty- the creator');
create table t2(id int not null);
insert into t2 values(10),(20);
create table t3 like t1;
show create table t3;
select * from t3;
# Disable PS becasue of @@warning_count
create table if not exists t3 like t1;
--disable_ps_protocol
select @@warning_count;
--enable_ps_protocol
create temporary table t3 like t2;
show create table t3;
select * from t3;
drop table t3;
show create table t3;
select * from t3;
drop table t2, t3;
create database mysqltest;
create table mysqltest.t3 like t1;
create temporary table t3 like mysqltest.t3;
show create table t3;
create table t2 like t3;
show create table t2;
select * from t2;
create table t3 like t1;
--error 1050
create table t3 like mysqltest.t3;
--error 1049
create table non_existing_database.t1 like t1;
--error ER_NO_SUCH_TABLE
create table t3 like non_existing_table;
--error 1050
create temporary table t3 like t1;
drop table t1, t2, t3;
drop table t3;
drop database mysqltest;

#
# Test default table type
#
SET SESSION storage_engine="heap";
SELECT @@storage_engine;
CREATE TABLE t1 (a int not null);
show create table t1;
drop table t1;
--error 1286
SET SESSION storage_engine="gemini";
SELECT @@storage_engine;
CREATE TABLE t1 (a int not null);
show create table t1;
SET SESSION storage_engine=default;
drop table t1;

#
# Test types of data for create select with functions
#

create table t1(a int,b int,c int unsigned,d date,e char,f datetime,g time,h blob);
insert into t1(a)values(1);
insert into t1(a,b,c,d,e,f,g,h)
values(2,-2,2,'1825-12-14','a','2003-1-1 3:2:1','4:3:2','binary data');
select * from t1;
select a, 
    ifnull(b,cast(-7 as signed)) as b, 
    ifnull(c,cast(7 as unsigned)) as c, 
    ifnull(d,cast('2000-01-01' as date)) as d, 
    ifnull(e,cast('b' as char)) as e,
    ifnull(f,cast('2000-01-01' as datetime)) as f, 
    ifnull(g,cast('5:4:3' as time)) as g,
    ifnull(h,cast('yet another binary data' as binary)) as h,
    addtime(cast('1:0:0' as time),cast('1:0:0' as time)) as dd 
from t1;

create table t2
select
    a, 
    ifnull(b,cast(-7                        as signed))   as b,
    ifnull(c,cast(7                         as unsigned)) as c,
    ifnull(d,cast('2000-01-01'              as date))     as d,
    ifnull(e,cast('b'                       as char))     as e,
    ifnull(f,cast('2000-01-01'              as datetime)) as f,
    ifnull(g,cast('5:4:3'                   as time))     as g,
    ifnull(h,cast('yet another binary data' as binary))   as h,
    addtime(cast('1:0:0' as time),cast('1:0:0' as time))  as dd
from t1;
explain t2;
select * from t2;
drop table t1, t2;

create table t1 (a tinyint, b smallint, c mediumint, d int, e bigint, f float(3,2), g double(4,3), h decimal(5,4), i year, j date, k timestamp, l datetime, m enum('a','b'), n set('a','b'), o char(10));
create table t2 select ifnull(a,a), ifnull(b,b), ifnull(c,c), ifnull(d,d), ifnull(e,e), ifnull(f,f), ifnull(g,g), ifnull(h,h), ifnull(i,i), ifnull(j,j), ifnull(k,k), ifnull(l,l), ifnull(m,m), ifnull(n,n), ifnull(o,o) from t1;
show create table t2;
drop table t1,t2;

#
# Test of default()
#
create table t1(str varchar(10) default 'def',strnull varchar(10),intg int default '10',rel double default '3.14');
insert into t1 values ('','',0,0.0);
describe t1;
create table t2 select default(str) as str, default(strnull) as strnull, default(intg) as intg, default(rel) as rel from t1;
describe t2;
drop table t1, t2;

#
# Bug #2075
#

create table t1(name varchar(10), age smallint default -1);
describe t1;
create table t2(name varchar(10), age smallint default - 1);
describe t2;
drop table t1, t2;

#
# test for bug #1427 "enum allows duplicate values in the list"
#

create table t1(cenum enum('a'), cset set('b'));
create table t2(cenum enum('a','a'), cset set('b','b'));
create table t3(cenum enum('a','A','a','c','c'), cset set('b','B','b','d','d'));
drop table t1, t2, t3;

#
# Bug #1209
#

create database mysqltest;
use mysqltest;
select database();
drop database mysqltest;
select database();

# Connect without a database as user mysqltest_1
create user mysqltest_1;
connect (user1,localhost,mysqltest_1,,*NO-ONE*);
connection user1;
select database(), user();
connection default;
disconnect user1;
drop user mysqltest_1;
use test;

#
# Test for Bug 856 'Naming a key "Primary" causes trouble'
#

--error 1280
create table t1 (a int, index `primary` (a));
--error 1280
create table t1 (a int, index `PRIMARY` (a));

create table t1 (`primary` int, index(`primary`));
show create table t1;
create table t2 (`PRIMARY` int, index(`PRIMARY`));
show create table t2;

create table t3 (a int);
--error 1280
alter table t3 add index `primary` (a);
--error 1280
alter table t3 add index `PRIMARY` (a);

create table t4 (`primary` int);
alter table t4 add index(`primary`);
show create table t4;
create table t5 (`PRIMARY` int);
alter table t5 add index(`PRIMARY`);
show create table t5;

drop table t1, t2, t3, t4, t5;

#
# bug #3266 TEXT in CREATE TABLE SELECT
#

CREATE TABLE t1(id varchar(10) NOT NULL PRIMARY KEY, dsc longtext);
INSERT INTO t1 VALUES ('5000000001', NULL),('5000000003', 'Test'),('5000000004', NULL);
CREATE TABLE t2(id varchar(15) NOT NULL, proc varchar(100) NOT NULL, runID varchar(16) NOT NULL, start datetime NOT NULL, PRIMARY KEY  (id,proc,runID,start));

INSERT INTO t2 VALUES ('5000000001', 'proc01', '20031029090650', '2003-10-29 13:38:40'),('5000000001', 'proc02', '20031029090650', '2003-10-29 13:38:51'),('5000000001', 'proc03', '20031029090650', '2003-10-29 13:38:11'),('5000000002', 'proc09', '20031024013310', '2003-10-24 01:33:11'),('5000000002', 'proc09', '20031024153537', '2003-10-24 15:36:04'),('5000000004', 'proc01', '20031024013641', '2003-10-24 01:37:29'),('5000000004', 'proc02', '20031024013641', '2003-10-24 01:37:39');

CREATE TABLE t3  SELECT t1.dsc,COUNT(DISTINCT t2.id) AS countOfRuns  FROM t1 LEFT JOIN t2 ON (t1.id=t2.id) GROUP BY t1.id;
SELECT * FROM t3;
drop table t1, t2, t3;

#
# Bug#9666: Can't use 'DEFAULT FALSE' for column of type bool
#
create table t1 (b bool not null default false);
create table t2 (b bool not null default true);
insert into t1 values ();
insert into t2 values ();
select * from t1;
select * from t2;
drop table t1,t2;

#
# Bug#10224 - ANALYZE TABLE crashing with simultaneous
# CREATE ... SELECT statement.
# This tests two additional possible errors and a hang if 
# an improper fix is present.
#
create table t1 (a int);
--error 1093
create table t1 select * from t1;
--error ER_WRONG_OBJECT
create table t2 union = (t1) select * from t1;
flush tables with read lock;
unlock tables;
drop table t1;

#
# Bug#10413: Invalid column name is not rejected
#
--error 1103
create table t1(column.name int);
--error 1103
create table t1(test.column.name int);
--error 1102
create table t1(xyz.t1.name int);
create table t1(t1.name int);
create table t2(test.t2.name int);
drop table t1,t2;

#
# Bug #12537: UNION produces longtext instead of varchar
#
CREATE TABLE t1 (f1 VARCHAR(255) CHARACTER SET utf8);
CREATE TABLE t2 AS SELECT LEFT(f1,171) AS f2 FROM t1 UNION SELECT LEFT(f1,171) AS f2 FROM t1;
DESC t2;
DROP TABLE t1,t2;

#
# Bug#12913 Simple SQL can crash server or connection
#
CREATE TABLE t12913 (f1 ENUM ('a','b')) AS SELECT 'a' AS f1;
SELECT * FROM t12913;
DROP TABLE t12913;

#
# Bug#11028: Crash on create table like
#
create database mysqltest;
use mysqltest;
drop database mysqltest;
--error ER_NO_DB_ERROR 
create table test.t1 like x;
--disable_warnings
drop table if exists test.t1;
--enable_warnings

#
# Bug #6859: Bogus error message on attempt to CREATE TABLE t LIKE view
#
create database mysqltest;
use mysqltest;
create view v1 as select 'foo' from dual;
--error 1347
create table t1 like v1;
drop view v1;
drop database mysqltest;
# Bug #6008 MySQL does not create warnings when
# creating database and using IF NOT EXISTS
#
create database mysqltest;
create database if not exists mysqltest character set latin2;
show create database mysqltest;
drop database mysqltest;
use test;
create table t1 (a int);
create table if not exists t1 (a int);
drop table t1;

# BUG#14139
create table t1 (
  a varchar(112) charset utf8 collate utf8_bin not null,
  primary key (a)
) select 'test' as a ;
#--warning 1364
show create table t1;
drop table t1;

#
# BUG#14480: assert failure in CREATE ... SELECT because of wrong
#            calculation of number of NULLs.
#
CREATE TABLE t2 (
  a int(11) default NULL
);
insert into t2 values(111);

#--warning 1364
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;
drop table t1;

#--warning 1364
create table t1 ( 
  a varchar(12) charset utf8 collate utf8_bin not null, 
  b int not null, primary key (a)
) select a, 1 as c from t2 ;
show create table t1;
drop table t1;

#--warning 1364
create table t1 ( 
  a varchar(12) charset utf8 collate utf8_bin not null, 
  b int null, primary key (a)
) select a, 1 as c from t2 ;
show create table t1;
drop table t1;

#--warning 1364
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;
drop table t1;

#--warning 1364
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;
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);

#--warning 1364
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;

#--warning 1364
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;
#--warning 1364
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);

#--warning 1364
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 ;

# Test the default value
drop table t2;

create table t2 ( a int default 3, b int default 3)
  select a1,a2 from t1;
show create table t2;

drop table t1, t2;

#
# Bug #15316 SET value having comma not correctly handled
#
--error 1367
create table t1(a set("a,b","c,d") not null);

# End of 4.1 tests


#
# Bug #14155: Maximum value of MAX_ROWS handled incorrectly on 64-bit
# platforms
#
create table t1 (i int) engine=myisam max_rows=100000000000;
show create table t1;
alter table t1 max_rows=100;
show create table t1;
alter table t1 max_rows=100000000000;
show create table t1;
drop table t1;


#
# Tests for errors happening at various stages of CREATE TABLES ... SELECT
#
# (Also checks that it behaves atomically in the sense that in case
#  of error it is automatically dropped if it has not existed before.)
#
# Error during open_and_lock_tables() of tables
--error ER_NO_SUCH_TABLE
create table t1 select * from t2;
# A special case which is also caught during open tables pahse
--error ER_NO_SUCH_TABLE
create table t1 select * from t1;
# Error which happens before select_create::prepare()
--error ER_CANT_AGGREGATE_2COLLATIONS
create table t1 select coalesce('a' collate latin1_swedish_ci,'b' collate latin1_bin);
# Error during table creation
--error ER_KEY_COLUMN_DOES_NOT_EXITS
create table t1 (primary key(a)) select "b" as b;
# Error in select_create::prepare() which is not related to table creation
create table t1 (a int);
--error ER_WRONG_VALUE_COUNT_ON_ROW
create table if not exists t1 select 1 as a, 2 as b;
drop table t1;
# Finally error which happens during insert
--error ER_DUP_ENTRY
create table t1 (primary key (a)) (select 1 as a) union all (select 1 as a);
# What happens if table already exists ?
create table t1 (i int);
--error ER_TABLE_EXISTS_ERROR
create table t1 select 1 as i;
create table if not exists t1 select 1 as i;
select * from t1;
# Error which is detected after successfull table open.
--error ER_UPDATE_TABLE_USED
create table if not exists t1 select * from t1;
select * from t1;
# Error before select_create::prepare()
--error ER_CANT_AGGREGATE_2COLLATIONS
create table t1 select coalesce('a' collate latin1_swedish_ci,'b' collate latin1_bin);
select * from t1;
# Error which happens during insertion of rows
alter table t1 add primary key (i);
--error ER_DUP_ENTRY
create table if not exists t1 (select 2 as i) union all (select 2 as i);
select * from t1;
drop table t1;


# Base vs temporary tables dillema (a.k.a. bug#24508 "Inconsistent
# results of CREATE TABLE ... SELECT when temporary table exists").
# In this situation we either have to create non-temporary table and
# insert data in it or insert data in temporary table without creation
# of permanent table. Since currently temporary tables always shadow
# permanent tables we adopt second approach.
create temporary table t1 (j int);
create table if not exists t1 select 1;
select * from t1;
drop temporary table t1;
--error ER_NO_SUCH_TABLE
select * from t1;
--error ER_BAD_TABLE_ERROR
drop table t1;


#
# CREATE TABLE ... SELECT and LOCK TABLES
#
# There is little sense in using CREATE TABLE ... SELECT under
# LOCK TABLES as it mostly does not work. At least we check that
# the server doesn't crash, hang and produces sensible errors.
# Includes test for bug #20662 "Infinite loop in CREATE TABLE
# IF NOT EXISTS ... SELECT with locked tables".
create table t1 (i int);
insert into t1 values (1), (2);
lock tables t1 read;
--error ER_TABLE_NOT_LOCKED
create table t2 select * from t1;
--error ER_TABLE_NOT_LOCKED
create table if not exists t2 select * from t1;
unlock tables;
create table t2 (j int);
lock tables t1 read;
--error ER_TABLE_NOT_LOCKED
create table t2 select * from t1;
# This should not be ever allowed as it will undermine
# lock-all-at-once approach
--error ER_TABLE_NOT_LOCKED
create table if not exists t2 select * from t1;
unlock tables;
lock table t1 read, t2 read;
--error ER_TABLE_NOT_LOCKED_FOR_WRITE
create table t2 select * from t1;
--error ER_TABLE_NOT_LOCKED_FOR_WRITE
create table if not exists t2 select * from t1;
unlock tables;
lock table t1 read, t2 write;
--error ER_TABLE_EXISTS_ERROR
create table t2 select * from t1;
# This is the only case which really works.
create table if not exists t2 select * from t1;
select * from t1;
unlock tables;
drop table t2;

# OTOH CREATE TEMPORARY TABLE ... SELECT should work
# well under LOCK TABLES.
lock tables t1 read;
create temporary table t2 select * from t1;
create temporary table if not exists t2 select * from t1;
select * from t2;
unlock tables;
drop table t1, t2;


#
# Bug#21772: can not name a column 'upgrade' when create a table
#
create table t1 (upgrade int);
drop table t1;


#
# Bug #26642: create index corrupts table definition in .frm
#
# Problem with creating keys with maximum key-parts and maximum name length
# This test is made for a mysql server supporting names up to 64 bytes
# and a maximum of 16 key segements per Key
#

create table t1 (
  c1 int, c2 int, c3 int, c4 int, c5 int, c6 int, c7 int, c8 int,
  c9 int, c10 int, c11 int, c12 int, c13 int, c14 int, c15 int, c16 int,

 key a001_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a002_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a003_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a004_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a005_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a006_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a007_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a008_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a009_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),

 key a010_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a011_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a012_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a013_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a014_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a015_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a016_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a017_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a018_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a019_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),

 key a020_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a021_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a022_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a023_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a024_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a025_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a026_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a027_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a028_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a029_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),

 key a030_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a031_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a032_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a033_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a034_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a035_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a036_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a037_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a038_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a039_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),

 key a040_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a041_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a042_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a043_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a044_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a045_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a046_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a047_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a048_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a049_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),

 key a050_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a051_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a052_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a053_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a054_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a055_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a056_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a057_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a058_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a059_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),

 key a060_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a061_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a062_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a063_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 key a064_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16)
);

# Check that the table is not corrupted
show create table t1;
flush tables;
show create table t1;

# Repeat test using ALTER to add indexes

drop table t1;
create table t1 (c1 int, c2 int, c3 int, c4 int, c5 int, c6 int, c7 int, 
c8 int, c9 int, c10 int, c11 int, c12 int, c13 int, c14 int, c15 int, c16 int);

alter table t1

 add key a001_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a002_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a003_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a004_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a005_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a006_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a007_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a008_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a009_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),

 add key a010_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a011_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a012_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a013_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a014_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a015_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a016_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a017_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a018_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a019_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),

 add key a020_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a021_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a022_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a023_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a024_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a025_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a026_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a027_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a028_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a029_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),

 add key a030_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a031_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a032_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a033_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a034_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a035_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a036_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a037_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a038_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a039_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),

 add key a040_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a041_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a042_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a043_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a044_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a045_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a046_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a047_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a048_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a049_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),

 add key a050_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a051_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a052_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a053_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a054_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a055_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a056_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a057_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a058_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a059_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),

 add key a060_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a061_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a062_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a063_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
 add key a064_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16);

show create table t1;
flush tables;
show create table t1;

# Test the server limits; if any of these pass, all above tests need
# to be rewritten to hit the limit
#
# Ensure limit is really 64 keys
--error 1069
alter table t1 add key 
 a065_long_123456789_123456789_123456789_123456789_123456789_1234 (
  c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16);

drop table t1;

# Ensure limit is really 16 key parts per key

create table t1 (c1 int, c2 int, c3 int, c4 int, c5 int, c6 int, c7 int, 
c8 int, c9 int, c10 int, c11 int, c12 int, c13 int, c14 int, c15 int, 
c16 int, c17 int);

# Get error for max key parts
--error 1070
alter table t1 add key i1 (
 c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16, c17);

# Get error for max key-name length
--error 1059
alter table t1 add key 
 a001_long_123456789_123456789_123456789_123456789_123456789_12345 (c1);

show create table t1;

drop table t1;

--echo
--echo Bug #26104 Bug on foreign key class constructor
--echo
--echo Check that ref_columns is initalized correctly in the constructor
--echo and semantic checks in mysql_prepare_table work.
--echo
--echo We do not need a storage engine that supports foreign keys
--echo for this test, as the checks are purely syntax-based, and the
--echo syntax is supported for all engines.
--echo
--disable_warnings
drop table if exists t1,t2;
--enable_warnings

create table t1(a int not null, b int not null, primary key (a, b));
--error ER_WRONG_FK_DEF
create table t2(a int not null, b int not null, c int not null, primary key (a),
foreign key fk_bug26104 (b,c) references t1(a));
drop table t1;

#
# Bug#15130:CREATE .. SELECT was denied to use advantages of the SQL_BIG_RESULT.
#
create table t1(f1 int,f2 int);
insert into t1 value(1,1),(1,2),(1,3),(2,1),(2,2),(2,3);
flush status;
create table t2 select sql_big_result f1,count(f2) from t1 group by f1;
show status like 'handler_read%';
drop table t1,t2;

#
# Bug #25162: Backing up DB from 5.1 adds 'USING BTREE' to KEYs on table creates
#

# Show that the old syntax for index type is supported
CREATE TABLE t1(c1 VARCHAR(33), KEY USING BTREE (c1));
DROP TABLE t1;

# Show that the new syntax for index type is supported
CREATE TABLE t1(c1 VARCHAR(33), KEY (c1) USING BTREE);
DROP TABLE t1;

# Show that in case of multiple index type definitions, the last one takes 
# precedence

CREATE TABLE t1(c1 VARCHAR(33), KEY USING BTREE (c1) USING HASH) ENGINE=MEMORY;
SHOW INDEX FROM t1;
DROP TABLE t1;

CREATE TABLE t1(c1 VARCHAR(33), KEY USING HASH (c1) USING BTREE) ENGINE=MEMORY;
SHOW INDEX FROM t1;
DROP TABLE t1;

#
# Bug#35924 DEFINER should be stored 'quoted' in I_S
#
--error ER_UNKNOWN_ERROR
create user mysqltest_1@'test@test';

#
# Bug#38821: Assert table->auto_increment_field_not_null failed in open_table()
#
CREATE TABLE t1 (a INTEGER AUTO_INCREMENT PRIMARY KEY, b INTEGER NOT NULL);
INSERT IGNORE INTO t1 (b) VALUES (5);

CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
  SELECT a FROM t1;
--error 1062
CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
  SELECT a FROM t1;
--error 1062
CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
  SELECT a FROM t1;

DROP TABLE t1, t2;


--echo End of 5.0 tests

#
# Test of behaviour with CREATE ... SELECT
#

CREATE TABLE t1 (a int, b int);
insert into t1 values (1,1),(1,2);
--error ER_DUP_ENTRY
CREATE TABLE t2 (primary key (a)) select * from t1;
# This should give warning
drop table if exists t2;
--error ER_DUP_ENTRY
CREATE TEMPORARY TABLE t2 (primary key (a)) select * from t1;
# This should give warning
drop table if exists t2;
CREATE TABLE t2 (a int, b int, primary key (a));
--error ER_DUP_ENTRY
CREATE TABLE IF NOT EXISTS t2 (primary key (a)) select * from t1;
SELECT * from t2;
TRUNCATE table t2;
--error ER_DUP_ENTRY
INSERT INTO t2 select * from t1;
SELECT * from t2;
drop table t2;

CREATE TEMPORARY TABLE t2 (a int, b int, primary key (a));
--error ER_DUP_ENTRY
CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) select * from t1;
SELECT * from t2;
TRUNCATE table t2;
--error ER_DUP_ENTRY
INSERT INTO t2 select * from t1;
SELECT * from t2;
drop table t1,t2;


#
# Test incorrect database names
#

--error 1102
CREATE DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
--error 1102
DROP DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;

# TODO: enable these tests when RENAME DATABASE is implemented.
# --error 1049
# RENAME DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa TO a;
# --error 1102
# RENAME DATABASE mysqltest TO aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
# create database mysqltest;
# --error 1102
# RENAME DATABASE mysqltest TO aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
# drop database mysqltest;

--error 1102
USE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
--error 1102
SHOW CREATE DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;

#
# Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
#
set names utf8;

create database имя_базы_в_кодировке_утф8_длиной_больше_чем_45;
use имя_базы_в_кодировке_утф8_длиной_больше_чем_45;
select database();
use test;

select SCHEMA_NAME from information_schema.schemata
where schema_name='имя_базы_в_кодировке_утф8_длиной_больше_чем_45';

drop database имя_базы_в_кодировке_утф8_длиной_больше_чем_45;
create table имя_таблицы_в_кодировке_утф8_длиной_больше_чем_48
(
  имя_поля_в_кодировке_утф8_длиной_больше_чем_45 int,
  index имя_индекса_в_кодировке_утф8_длиной_больше_чем_48 (имя_поля_в_кодировке_утф8_длиной_больше_чем_45)
);

create view имя_вью_кодировке_утф8_длиной_больше_чем_42 as
select имя_поля_в_кодировке_утф8_длиной_больше_чем_45
from имя_таблицы_в_кодировке_утф8_длиной_больше_чем_48;

# database, table, field, key, view
select * from имя_таблицы_в_кодировке_утф8_длиной_больше_чем_48;

select TABLE_NAME from information_schema.tables where
table_schema='test';

select COLUMN_NAME from information_schema.columns where
table_schema='test';

select INDEX_NAME from information_schema.statistics where
table_schema='test';

select TABLE_NAME from information_schema.views where
table_schema='test';

show create table имя_таблицы_в_кодировке_утф8_длиной_больше_чем_48;
show create view имя_вью_кодировке_утф8_длиной_больше_чем_42;

create trigger имя_триггера_в_кодировке_утф8_длиной_больше_чем_49
before insert on имя_таблицы_в_кодировке_утф8_длиной_больше_чем_48 for each row set @a:=1;
select TRIGGER_NAME from information_schema.triggers where
trigger_schema='test';
drop trigger имя_триггера_в_кодировке_утф8_длиной_больше_чем_49;
--error 1059
create trigger
очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66
before insert on имя_таблицы_в_кодировке_утф8_длиной_больше_чем_48 for each row set @a:=1;
--error 1059
drop trigger очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66;

create procedure имя_процедуры_в_кодировке_утф8_длиной_больше_чем_50()
begin
end;
select ROUTINE_NAME from information_schema.routines where
routine_schema='test';
drop procedure имя_процедуры_в_кодировке_утф8_длиной_больше_чем_50;
--error 1059
create procedure очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66()
begin
end;

create function имя_функции_в_кодировке_утф8_длиной_больше_чем_49()
   returns int
return 0;
select ROUTINE_NAME from information_schema.routines where
routine_schema='test';
drop function имя_функции_в_кодировке_утф8_длиной_больше_чем_49;
--error 1059
create function очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66()
   returns int
return 0;

drop view имя_вью_кодировке_утф8_длиной_больше_чем_42;
drop table имя_таблицы_в_кодировке_утф8_длиной_больше_чем_48;
set names default;

#
# Bug#21136 CREATE TABLE SELECT within CREATE TABLE SELECT causes server crash
#

--disable_warnings
drop table if exists t1,t2,t3;
drop function if exists f1;
--enable_warnings

--delimiter |
create function f1() returns int
begin
  declare res int;
  create temporary table t3 select 1 i;
  set res:= (select count(*) from t1);
  drop temporary table t3;
  return res;
end|
--delimiter ;
create table t1 as select 1;
create table t2 as select f1() from t1;
drop table t1,t2;
drop function f1;

#
# Bug#25629 CREATE TABLE LIKE does not work with INFORMATION_SCHEMA
#
create table t1 like information_schema.processlist;
--replace_result ENGINE=MyISAM "" ENGINE=MARIA "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
show create table t1;
drop table t1;
create temporary table t1 like information_schema.processlist;
--replace_result ENGINE=MyISAM "" ENGINE=MARIA "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
show create table t1;
drop table t1;
create table t1 like information_schema.character_sets;
show create table t1;
drop table t1;

###########################################################################

--echo
--echo # --
--echo # -- Bug#21380: DEFAULT definition not always transfered by CREATE
--echo # -- TABLE/SELECT to the new table.
--echo # --
--echo


--disable_warnings
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
--enable_warnings

--echo

CREATE TABLE t1(
  c1 INT DEFAULT 12 COMMENT 'column1',
  c2 INT NULL COMMENT 'column2',
  c3 INT NOT NULL COMMENT 'column3',
  c4 VARCHAR(255) CHARACTER SET utf8 NOT NULL DEFAULT 'a',
  c5 VARCHAR(255) COLLATE utf8_unicode_ci NULL DEFAULT 'b',
  c6 VARCHAR(255))
  COLLATE latin1_bin;

--echo

SHOW CREATE TABLE t1;

--echo

CREATE TABLE t2 AS SELECT * FROM t1;

--echo

SHOW CREATE TABLE t2;

--echo

DROP TABLE t2;
DROP TABLE t1;

--echo
--echo # -- End of test case for Bug#21380.

###########################################################################

--echo
--echo # --
--echo # -- Bug#18834: ALTER TABLE ADD INDEX on table with two timestamp fields
--echo # --
--echo

--disable_warnings
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
DROP TABLE IF EXISTS t3;
--enable_warnings

--echo

CREATE TABLE t1(c1 TIMESTAMP, c2 TIMESTAMP);

--echo

SET sql_mode = NO_ZERO_DATE;

--echo
--error ER_INVALID_DEFAULT
CREATE TABLE t2(c1 TIMESTAMP, c2 TIMESTAMP DEFAULT 0);

--echo
--error ER_INVALID_DEFAULT
CREATE TABLE t2(c1 TIMESTAMP, c2 TIMESTAMP);

--echo
--echo # -- Check that NULL column still can be created.
CREATE TABLE t2(c1 TIMESTAMP NULL);

--echo
--echo # -- Check ALTER TABLE.
--error ER_INVALID_DEFAULT
ALTER TABLE t1 ADD INDEX(c1);

--echo
--echo # -- Check DATETIME.
SET sql_mode = '';

--echo

CREATE TABLE t3(c1 DATETIME NOT NULL);
INSERT INTO t3 VALUES (0);

--echo
SET sql_mode = TRADITIONAL;

--echo
--error ER_TRUNCATED_WRONG_VALUE
ALTER TABLE t3 ADD INDEX(c1);

--echo
--echo # -- Cleanup.

SET sql_mode = '';
DROP TABLE t1;
DROP TABLE t2;
DROP TABLE t3;

--echo
--echo # -- End of Bug#18834.

###########################################################################

--echo
--echo # --
--echo # -- Bug#34274: Invalid handling of 'DEFAULT 0' for YEAR data type.
--echo # --
--echo

--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings

--echo
CREATE TABLE t1(c1 YEAR DEFAULT 2008, c2 YEAR DEFAULT 0);

--echo
SHOW CREATE TABLE t1;

--echo
INSERT INTO t1 VALUES();

--echo
SELECT * FROM t1;

--echo
ALTER TABLE t1 MODIFY c1 YEAR DEFAULT 0;

--echo
SHOW CREATE TABLE t1;

--echo
INSERT INTO t1 VALUES();

--echo
SELECT * FROM t1;

--echo
DROP TABLE t1;

--echo
--echo # -- End of Bug#34274

###########################################################################

#
# Bug#40104 regression with table names?
#
create table `me:i`(id int);
drop table `me:i`;

--echo
--echo End of 5.1 tests
