call mtr.add_suppression("table or database name 't-1'"); # # Check some special create statements. # --disable_warnings drop table if exists t1,t2,t3,t4,t5; drop database if exists mysqltest; drop view if exists v1; --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) # create table t1 (a datetime default now()); drop table t1; create table t1 (a datetime on update now()); drop table t1; --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)); # # CREATE TABLE under LOCK TABLES # # We don't allow creation of non-temporary tables under LOCK TABLES # as following meta-data locking protocol in this case can lead to # deadlock. create table t1 (i int); lock tables t1 read; --error ER_TABLE_NOT_LOCKED create table t2 (j int); # OTOH creating of temporary table should be OK create temporary table t2 (j int); drop temporary table t2; unlock tables; drop table t1; # # 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; 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'; 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 t2,t1; # # 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; # # CREATE TABLE LIKE under LOCK TABLES # # Similarly to ordinary CREATE TABLE we don't allow creation of # non-temporary tables under LOCK TABLES. Also we require source # table to be locked. create table t1 (i int); create table t2 (j int); lock tables t1 read; --error ER_TABLE_NOT_LOCKED create table t3 like t1; # OTOH creating of temporary table should be OK create temporary table t3 like t1; drop temporary table t3; # Source table should be locked --error ER_TABLE_NOT_LOCKED create temporary table t3 like t2; unlock tables; drop tables t1, t2; # # 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 ER_TABLE_EXISTS_ERROR 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); 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; # After WL#5370, it just generates a warning that the table already exists. create table if not exists t1 select * from t1; select * from t1; drop table 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); # 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. After patch for Bug#47418, we create the base table and # instert data into it, even though a temporary table exists with the same # name. create temporary table t1 (j int); create table if not exists t1 select 1; select * from t1; drop temporary table t1; select * from t1; 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, c18 int,c19 int,c20 int,c21 int,c22 int,c23 int,c24 int,c25 int,c26 int,c27 int,c28 int,c29 int,c30 int,c31 int,c32 int, c33 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,c18,c19,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c30,c31,c32,c33); # 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 INSERT INTO t2 SELECT a FROM t1; --error 1062 INSERT INTO t2 SELECT a FROM t1; DROP TABLE t1, t2; --echo # --echo # BUG#46384 - mysqld segfault when trying to create table with same --echo # name as existing view --echo # CREATE TABLE t1 (a INT); CREATE TABLE t2 (a INT); INSERT INTO t1 VALUES (1),(2),(3); INSERT INTO t2 VALUES (1),(2),(3); CREATE VIEW v1 AS SELECT t1.a FROM t1, t2; --error ER_TABLE_EXISTS_ERROR CREATE TABLE v1 AS SELECT * FROM t1; DROP VIEW v1; 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 INSERT INTO t2 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 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=Aria "" " 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=Aria "" " 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#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`; ########################################################################### # # Bug#45829 CREATE TABLE TRANSACTIONAL PAGE_CHECKSUM ROW_FORMAT=PAGE accepted, does nothing # --echo --echo # -- --echo # -- Bug#45829: CREATE TABLE TRANSACTIONAL PAGE_CHECKSUM ROW_FORMAT=PAGE accepted, does nothing --echo # -- --echo --disable_warnings drop table if exists t1,t2,t3; --enable_warnings --echo # Fix modified for MariaDB: we support this syntax create table t1 (a int) transactional=0; create table t2 (a int) page_checksum=1; create table t3 (a int) row_format=page; drop table t1,t2,t3; --echo --echo # -- End of Bug#45829 # # new table creation/renaming is NOT blocked if old encoded table present # let $MYSQLD_DATADIR= `select @@datadir`; create table `#mysql50#t-1` (a int) engine=myisam; insert into `#mysql50#t-1` values (1); show tables; create table `t-1` (a int); show tables; # selects can distinguish between the two tables select * from `t-1`; select * from `#mysql50#t-1`; drop table `t-1`; create table t1 (a int); alter table t1 rename `t-1`; show tables; drop table `t-1`; create table t1 (a int); rename table t1 to `t-1`; show tables; drop table `#mysql50#t-1`, `t-1`; --echo --echo End of 5.1 tests ########################################################################### --echo --echo # -- --echo # -- Bug #43054 Assertion `!table->auto_increment_field_not_null' --echo # -- failed when redefining trigger --echo #--disable_abort_on_error CREATE TABLE B ( pk INTEGER AUTO_INCREMENT, int_key INTEGER NOT NULL, PRIMARY KEY (pk), KEY (int_key) ); INSERT IGNORE INTO B VALUES ('9', '9'); CREATE TABLE IF NOT EXISTS t1 ( `pk` INTEGER NOT NULL AUTO_INCREMENT , `int` INTEGER , PRIMARY KEY ( `pk` ) ) SELECT `pk` , `int_key` FROM B ; --delimiter | CREATE TRIGGER f BEFORE INSERT ON t1 FOR EACH ROW BEGIN INSERT INTO t1 ( `int` ) VALUES (4 ),( 8 ),( 2 ) ; END ; | --delimiter ; --error ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG INSERT INTO t1 (pk, int_key) SELECT `pk` , `int_key` FROM B ; --delimiter | --error ER_NOT_SUPPORTED_YET CREATE TRIGGER f BEFORE INSERT ON t1 FOR EACH ROW BEGIN UPDATE A SET `pk`=1 WHERE `pk`=0 ; END ;| --delimiter ; DROP TABLE t1; DROP TABLE B; --echo # --echo # Bug #47107 assert in notify_shared_lock on incorrect --echo # CREATE TABLE , HANDLER --echo # --disable_warnings DROP TABLE IF EXISTS t1; --enable_warnings CREATE TABLE t1(f1 integer); --echo # The following CREATE TABLEs before gave an assert. HANDLER t1 OPEN AS A; --error ER_TABLE_EXISTS_ERROR CREATE TABLE t1 SELECT 1 AS f2; HANDLER t1 OPEN AS A; --error ER_TABLE_EXISTS_ERROR CREATE TABLE t1(f1 integer); CREATE TABLE t2(f1 integer); HANDLER t1 OPEN AS A; --error ER_TABLE_EXISTS_ERROR CREATE TABLE t1 LIKE t2; DROP TABLE t2; DROP TABLE t1; --echo # --echo # Bug #48800 CREATE TABLE t...SELECT fails if t is a --echo # temporary table --echo # CREATE TEMPORARY TABLE t1 (a INT); CREATE TABLE t1 (a INT); CREATE TEMPORARY TABLE t2 (a INT); CREATE VIEW t2 AS SELECT 1; CREATE TABLE t3 (a INT); CREATE TEMPORARY TABLE t3 SELECT 1; CREATE TEMPORARY TABLE t4 (a INT); CREATE TABLE t4 AS SELECT 1; DROP TEMPORARY TABLE t1, t2, t3, t4; DROP TABLE t1, t3, t4; DROP VIEW t2; --echo # --echo # Bug #49193 CREATE TABLE reacts differently depending --echo # on whether data is selected or not --echo # CREATE TEMPORARY TABLE t2 (ID INT); INSERT INTO t2 VALUES (1),(2),(3); # Case 1 -- did not fail CREATE TEMPORARY TABLE t1 (ID INT); CREATE TABLE IF NOT EXISTS t1 (ID INT); INSERT INTO t1 SELECT * FROM t2; SELECT * FROM t1; DROP TEMPORARY TABLE t1; SELECT * FROM t1; DROP TABLE t1; # Case 2 -- The DROP TABLE t1 failed with # Table 'test.t1' doesn't exist in the SELECT * # as the (permanent) table was not created CREATE TEMPORARY TABLE t1 (ID INT); CREATE TABLE IF NOT EXISTS t1 SELECT * FROM t2; SELECT * FROM t1; DROP TEMPORARY TABLE t1; SELECT * FROM t1; DROP TABLE t1; # Case 3 -- The CREATE TABLE failed with # Table 't1' already exists CREATE TEMPORARY TABLE t1 (ID INT); CREATE TABLE t1 SELECT * FROM t2; SELECT * FROM t1; DROP TEMPORARY TABLE t1; SELECT * FROM t1; DROP TABLE t1; DROP TEMPORARY TABLE t2; --echo # --echo # Bug #22909 "Using CREATE ... LIKE is possible to create field --echo # with invalid default value" --echo # --echo # Altough original bug report suggests to use older version of MySQL --echo # for producing .FRM with invalid defaults we use sql_mode to achieve --echo # the same effect. --disable_warnings drop tables if exists t1, t2; --enable_warnings --echo # Attempt to create table with invalid default should fail in normal mode --error ER_INVALID_DEFAULT create table t1 (dt datetime default '2008-02-31 00:00:00'); set @old_mode= @@sql_mode; set @@sql_mode='ALLOW_INVALID_DATES'; --echo # The same should be possible in relaxed mode create table t1 (dt datetime default '2008-02-31 00:00:00'); set @@sql_mode= @old_mode; --echo # In normal mode attempt to create copy of table with invalid --echo # default should fail --error ER_INVALID_DEFAULT create table t2 like t1; set @@sql_mode='ALLOW_INVALID_DATES'; --echo # But should work in relaxed mode create table t2 like t1; --echo # Check that table definitions match show create table t1; show create table t2; set @@sql_mode= @old_mode; drop tables t1, t2; # # Bug#47132 CREATE TABLE.. SELECT.. data not inserted if table # is view over multiple tables # CREATE TABLE t1 (id int); CREATE TABLE t2 (id int); INSERT INTO t1 VALUES (1), (1); INSERT INTO t2 VALUES (2), (2); CREATE VIEW v1 AS SELECT id FROM t2; CREATE TABLE IF NOT EXISTS v1(a int, b int) SELECT id, id as di FROM t1; SHOW CREATE TABLE v1; SELECT * FROM t2; SELECT * FROM v1; DROP VIEW v1; CREATE TEMPORARY TABLE tt1 AS SELECT id FROM t2; CREATE TEMPORARY TABLE IF NOT EXISTS tt1(a int, b int) SELECT id, id FROM t1; SELECT * FROM t2; SELECT * FROM tt1; DROP TEMPORARY TABLE tt1; DROP TABLE t1, t2; --echo # --echo # WL#5370 "Changing 'CREATE TABLE IF NOT EXISTS ... SELECT' --echo # behaviour. --echo # --echo # --echo # 1. Basic case: a base table. --echo # create table if not exists t1 (a int) select 1 as a; select * from t1; --error ER_TABLE_EXISTS_ERROR create table t1 (a int) select 2 as a; select * from t1; --echo # Produces an essential warning ER_TABLE_EXISTS. create table if not exists t1 (a int) select 2 as a; --echo # No new data in t1. select * from t1; drop table t1; --echo # --echo # 2. A temporary table. --echo # create temporary table if not exists t1 (a int) select 1 as a; select * from t1; --error ER_TABLE_EXISTS_ERROR create temporary table t1 (a int) select 2 as a; select * from t1; --echo # An essential warning. create temporary table if not exists t1 (a int) select 2 as a; --echo # No new data in t1. select * from t1; drop temporary table t1; --echo # --echo # 3. Creating a base table in presence of a temporary table. --echo # create table t1 (a int); --echo # Create a view for convenience of querying t1 shadowed by a temp. create view v1 as select a from t1; drop table t1; create temporary table t1 (a int) select 1 as a; create table if not exists t1 (a int) select 2 as a; select * from t1; select * from v1; --echo # Note: an essential warning. create table if not exists t1 (a int) select 3 as a; select * from t1; select * from v1; drop temporary table t1; select * from t1; drop view v1; drop table t1; --echo # --echo # 4. Creating a temporary table in presence of a base table. --echo # create table t1 (a int) select 1 as a; create temporary table if not exists t1 select 2 as a; select * from t1; --echo # Note: an essential warning. create temporary table if not exists t1 select 3 as a; select * from t1; drop temporary table t1; select * from t1; drop table t1; --echo # --echo # 5. Creating a base table in presence of an updatable view. --echo # create table t2 (a int unique); create view t1 as select a from t2; insert into t1 (a) values (1); --error ER_TABLE_EXISTS_ERROR create table t1 (a int); --echo # Note: an essential warning. create table if not exists t1 (a int); --error ER_TABLE_EXISTS_ERROR create table t1 (a int) select 2 as a; select * from t1; --echo # Note: an essential warning. create table if not exists t1 (a int) select 2 as a; select * from t1; select * from t2; create temporary table if not exists t1 (a int) select 3 as a; select * from t1; select * from t2; --echo # Note: an essential warning. create temporary table if not exists t1 (a int) select 4 as a; select * from t1; select * from t2; drop temporary table t1; --echo # --echo # Repeating the test with a non-updatable view. --echo # drop view t1; create view t1 as select a + 5 as a from t2; --error ER_NON_INSERTABLE_TABLE insert into t1 (a) values (1); --error ER_NONUPDATEABLE_COLUMN update t1 set a=3 where a=2; --error ER_TABLE_EXISTS_ERROR create table t1 (a int); --echo # Note: an essential warning. create table if not exists t1 (a int); --error ER_TABLE_EXISTS_ERROR create table t1 (a int) select 2 as a; select * from t1; --echo # Note: an essential warning. create table if not exists t1 (a int) select 2 as a; select * from t1; select * from t2; create temporary table if not exists t1 (a int) select 3 as a; select * from t1; select * from t2; --echo # Note: an essential warning. create temporary table if not exists t1 (a int) select 4 as a; select * from t1; select * from t2; drop temporary table t1; drop view t1; drop table t2; --echo # --echo # Repeating the test with a view select a constant number --echo # create view t1 as select 1 as a; --error ER_NON_INSERTABLE_TABLE insert into t1 (a) values (1); --error ER_NON_UPDATABLE_TABLE update t1 set a=3 where a=2; --error ER_TABLE_EXISTS_ERROR create table t1 (a int); --echo # Note: an essential warning. create table if not exists t1 (a int); --error ER_TABLE_EXISTS_ERROR create table t1 (a int) select 2 as a; select * from t1; --echo # Note: an essential warning. create table if not exists t1 (a int) select 2 as a; select * from t1; create temporary table if not exists t1 (a int) select 3 as a; select * from t1; --echo # Note: an essential warning. create temporary table if not exists t1 (a int) select 4 as a; select * from t1; drop temporary table t1; drop view t1; --echo # --echo # 6. Test of unique_table(). --echo # create table t1 (a int) select 1 as a; create temporary table if not exists t1 (a int) select * from t1; --error ER_CANT_REOPEN_TABLE create temporary table if not exists t1 (a int) select * from t1; select * from t1; drop temporary table t1; select * from t1; drop table t1; create temporary table t1 (a int) select 1 as a; create table if not exists t1 (a int) select * from t1; create table if not exists t1 (a int) select * from t1; select * from t1; drop temporary table t1; select * from t1; drop table t1; --error ER_NO_SUCH_TABLE create table if not exists t1 (a int) select * from t1; --echo # --echo # 7. Test of non-matching columns, REPLACE and IGNORE. --echo # create table t1 (a int) select 1 as b, 2 as c; select * from t1; drop table t1; create table if not exists t1 (a int, b date, c date) select 1 as b, 2 as c; select * from t1; drop table t1; set @@session.sql_mode='STRICT_ALL_TABLES'; --error ER_TRUNCATED_WRONG_VALUE create table if not exists t1 (a int, b date, c date) select 1 as b, 2 as c; --error ER_NO_SUCH_TABLE select * from t1; --error ER_TRUNCATED_WRONG_VALUE create table if not exists t1 (a int, b date, c date) replace select 1 as b, 2 as c; --error ER_NO_SUCH_TABLE select * from t1; create table if not exists t1 (a int, b date, c date) ignore select 1 as b, 2 as c; select * from t1; set @@session.sql_mode=default; drop table t1; create table if not exists t1 (a int unique, b int) replace select 1 as a, 1 as b union select 1 as a, 2 as b; select * from t1; drop table t1; create table if not exists t1 (a int unique, b int) ignore select 1 as a, 1 as b union select 1 as a, 2 as b; select * from t1; drop table t1; --echo # --echo # Checking that CREATE IF NOT EXISTS is not blocked by running SELECT --echo # create table t1 (a int, b int) engine=myisam; create table t2 (a int, b int) engine=myisam; insert into t1 values (1,1); lock tables t1 read; connect (user1,localhost,root,,test); set @@lock_wait_timeout=5; create table if not exists t1 (a int, b int); create table if not exists t1 (a int, b int) select 2,2; create table if not exists t1 like t2; --error ER_TABLE_EXISTS_ERROR create table t1 (a int, b int); --error ER_TABLE_EXISTS_ERROR create table t1 (a int, b int) select 2,2; --error ER_TABLE_EXISTS_ERROR create table t1 like t2; --error ER_LOCK_WAIT_TIMEOUT create or replace table t1 (a int, b int) select 2,2; disconnect user1; connection default; select * from t1; unlock tables; drop table t1,t2; --echo # --echo # MDEV-6179: dynamic columns functions/cast()/convert() doesn't --echo # play nice with CREATE/ALTER TABLE --echo # create table t1 ( color char(32) as (COLUMN_GET(dynamic_cols, 1 as char)) persistent, cl char(32) as (COLUMN_GET(COLUMN_ADD(COLUMN_CREATE(1 , 'blue' as char), 2, 'ttt'), i as char)) persistent, item_name varchar(32) primary key, -- A common attribute for all items i int, dynamic_cols blob -- Dynamic columns will be stored here ); INSERT INTO t1(item_name, dynamic_cols, i) VALUES ('MariaDB T-shirt', COLUMN_CREATE(1, 'blue', 2, 'XL'), 1); INSERT INTO t1(item_name, dynamic_cols, i) VALUES ('Thinkpad Laptop', COLUMN_CREATE(1, 'black', 3, 500), 2); select item_name, color, cl from t1; show create table t1; drop table t1; create table t1 ( n int, c char(32) as (convert(cast(n as char), char)) persistent ); insert into t1(n) values (1),(2),(3); select * from t1; show create table t1; drop table t1; # # MDEV-4880 Attempt to create a table without columns produces ER_ILLEGAL_HA instead of ER_TABLE_MUST_HAVE_COLUMNS # --error ER_TABLE_MUST_HAVE_COLUMNS create table t1;