create.test
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:16k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. #
  2. # Check some special create statements.
  3. #
  4. --disable_warnings
  5. drop table if exists t1,t2,t3,t4,t5;
  6. drop database if exists mysqltest;
  7. --enable_warnings
  8. create table t1 (b char(0));
  9. insert into t1 values (""),(null);
  10. select * from t1;
  11. drop table if exists t1;
  12. create table t1 (b char(0) not null);
  13. create table if not exists t1 (b char(0) not null);
  14. insert into t1 values (""),(null);
  15. select * from t1;
  16. drop table t1;
  17. create table t1 (a int not null auto_increment,primary key (a)) engine=heap;
  18. drop table t1;
  19. #
  20. # Test of some CREATE TABLE'S that should fail
  21. #
  22. --error 1146
  23. create table t2 engine=heap select * from t1;
  24. --error 1146
  25. create table t2 select auto+1 from t1;
  26. drop table if exists t1,t2;
  27. --error 1167
  28. create table t1 (b char(0) not null, index(b));
  29. --error 1163
  30. create table t1 (a int not null,b text) engine=heap;
  31. drop table if exists t1;
  32. --error 1075
  33. create table t1 (ordid int(8) not null auto_increment, ord  varchar(50) not null, primary key (ord,ordid)) engine=heap;
  34. -- error 1049
  35. create table not_existing_database.test (a int);
  36. --error 1103
  37. create table `a/a` (a int);
  38. --error 1103
  39. create table `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa int);
  40. --error 1059
  41. create table a (`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` int);
  42. #
  43. # Some wrong defaults, so these creates should fail too
  44. #
  45. --error 1067
  46. create table test (a datetime default now());
  47. --error 1294
  48. create table test (a datetime on update now());
  49. --error 1067
  50. create table test (a int default 100 auto_increment);
  51. #
  52. # test of dummy table names
  53. #
  54. create table 1ea10 (1a20 int,1e int);
  55. insert into 1ea10 values(1,1);
  56. select 1ea10.1a20,1e+ 1e+10 from 1ea10;
  57. drop table 1ea10;
  58. create table t1 (t1.index int);
  59. drop table t1;
  60. # Test that we get warning for this
  61. drop database if exists mysqltest;
  62. create database mysqltest;
  63. create table mysqltest.$test1 (a$1 int, $b int, c$ int);
  64. insert into mysqltest.$test1 values (1,2,3);
  65. select a$1, $b, c$ from mysqltest.$test1;
  66. create table mysqltest.test2$ (a int);
  67. drop table mysqltest.test2$;
  68. drop database mysqltest;
  69. --error 1103
  70. create table `` (a int);
  71. --error 1103
  72. drop table if exists ``;
  73. --error 1166
  74. create table t1 (`` int);
  75. --error 1280
  76. create table t1 (i int, index `` (i)); 
  77. #
  78. # Test of CREATE ... SELECT with indexes
  79. #
  80. create table t1 (a int auto_increment not null primary key, B CHAR(20));
  81. insert into t1 (b) values ("hello"),("my"),("world");
  82. create table t2 (key (b)) select * from t1;
  83. explain select * from t2 where b="world";
  84. select * from t2 where b="world";
  85. drop table t1,t2;
  86. #
  87. # Test types after CREATE ... SELECT
  88. #
  89. create table t1(x varchar(50) );
  90. create table t2 select x from t1 where 1=2;
  91. describe t1;
  92. describe t2;
  93. drop table t2;
  94. 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;
  95. describe t2;
  96. drop table t2;
  97. 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;
  98. describe t2;
  99. drop table t1,t2;
  100. #
  101. # Test of CREATE ... SELECT with duplicate fields
  102. #
  103. create table t1 (a tinyint);
  104. create table t2 (a int) select * from t1;                        
  105. describe t1;
  106. describe t2;
  107. drop table if exists t2;
  108. --error 1060
  109. create table t2 (a int, a float) select * from t1;               
  110. drop table if exists t2;
  111. --error 1060
  112. create table t2 (a int) select a as b, a+1 as b from t1;         
  113. drop table if exists t2;
  114. --error 1060
  115. create table t2 (b int) select a as b, a+1 as b from t1;         
  116. drop table if exists t1,t2;
  117. #
  118. # Test CREATE ... SELECT when insert fails
  119. #
  120. CREATE TABLE t1 (a int not null);
  121. INSERT INTO t1 values (1),(2),(1);
  122. --error 1062
  123. CREATE TABLE t2 (primary key(a)) SELECT * FROM t1;
  124. --error 1146
  125. SELECT * from t2;
  126. DROP TABLE t1;
  127. DROP TABLE IF EXISTS t2;
  128. #
  129. # Test of primary key with 32 index
  130. #
  131. 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));
  132. show create table t1;
  133. drop table t1;
  134. create table t1 select if(1,'1','0'), month("2002-08-02");
  135. drop table t1;
  136. create table t1 select if('2002'='2002','Y','N');
  137. select * from t1;
  138. drop table if exists t1;
  139. #
  140. # Test default table type
  141. #
  142. SET SESSION storage_engine="heap";
  143. SELECT @@storage_engine;
  144. CREATE TABLE t1 (a int not null);
  145. show create table t1;
  146. drop table t1;
  147. --error 1286
  148. SET SESSION storage_engine="gemini";
  149. SELECT @@storage_engine;
  150. CREATE TABLE t1 (a int not null);
  151. show create table t1;
  152. SET SESSION storage_engine=default;
  153. drop table t1;
  154. #
  155. # ISO requires that primary keys are implicitly NOT NULL
  156. #
  157. create table t1 ( k1 varchar(2), k2 int, primary key(k1,k2));
  158. insert into t1 values ("a", 1), ("b", 2);
  159. --error 1048
  160. insert into t1 values ("c", NULL);
  161. --error 1048
  162. insert into t1 values (NULL, 3);
  163. --error 1048
  164. insert into t1 values (NULL, NULL);
  165. drop table t1;
  166. #
  167. # Bug # 801
  168. #
  169. create table t1 select x'4132';
  170. drop table t1;
  171. #
  172. # bug #1434
  173. #
  174. create table t1 select 1,2,3;
  175. create table if not exists t1 select 1,2;
  176. --error 1136
  177. create table if not exists t1 select 1,2,3,4;
  178. create table if not exists t1 select 1;
  179. select * from t1;
  180. drop table t1;
  181. create table t1 select 1,2,3;
  182. create table if not exists t1 select 1,2;
  183. --error 1136
  184. create table if not exists t1 select 1,2,3,4;
  185. create table if not exists t1 select 1;
  186. select * from t1;
  187. drop table t1;
  188. #
  189. # Test create table if not exists with duplicate key error
  190. #
  191. create table t1 (a int not null, b int, primary key (a));
  192. insert into t1 values (1,1);
  193. create table if not exists t1 select 2;
  194. select * from t1;
  195. create table if not exists t1 select 3 as 'a',4 as 'b';
  196. --error 1062
  197. create table if not exists t1 select 3 as 'a',3 as 'b';
  198. select * from t1;
  199. drop table t1;
  200. #
  201. # Test for Bug #2985 
  202. #   "Table truncated when creating another table name with Spaces"
  203. #
  204. --error 1103
  205. create table `t1 `(a int);
  206. --error 1102
  207. create database `db1 `;
  208. --error 1166
  209. create table t1(`a ` int);
  210. #
  211. # Test for Bug #3481 
  212. #   "Parser permits multiple commas without syntax error"
  213. #
  214. --error 1064
  215. create table t1 (a int,);
  216. --error 1064
  217. create table t1 (a int,,b int);
  218. --error 1064
  219. create table t1 (,b int);
  220. #
  221. # Test create with foreign keys
  222. #
  223. create table t1 (a int, key(a));
  224. create table t2 (b int, foreign key(b) references t1(a), key(b));
  225. drop table if exists t1,t2;
  226. #
  227. # Test for CREATE TABLE .. LIKE ..
  228. #
  229. create table t1(id int not null, name char(20));
  230. insert into t1 values(10,'mysql'),(20,'monty- the creator');
  231. create table t2(id int not null);
  232. insert into t2 values(10),(20);
  233. create table t3 like t1;
  234. show create table t3;
  235. select * from t3;
  236. # Disable PS becasue of @@warning_count
  237. --disable_ps_protocol
  238. create table if not exists t3 like t1;
  239. select @@warning_count;
  240. --enable_ps_protocol
  241. create temporary table t3 like t2;
  242. show create table t3;
  243. select * from t3;
  244. drop table t3;
  245. show create table t3;
  246. select * from t3;
  247. drop table t2, t3;
  248. create database mysqltest;
  249. create table mysqltest.t3 like t1;
  250. create temporary table t3 like mysqltest.t3;
  251. show create table t3;
  252. create table t2 like t3;
  253. show create table t2;
  254. select * from t2;
  255. create table t3 like t1;
  256. --error 1050
  257. create table t3 like mysqltest.t3;
  258. --error 1049
  259. create table non_existing_database.t1 like t1;
  260. --error 1051
  261. create table t3 like non_existing_table;
  262. --error 1050
  263. create temporary table t3 like t1;
  264. --error 1103
  265. create table t3 like `a/a`;
  266. drop table t1, t2, t3;
  267. drop table t3;
  268. drop database mysqltest;
  269. #
  270. # Test default table type
  271. #
  272. SET SESSION storage_engine="heap";
  273. SELECT @@storage_engine;
  274. CREATE TABLE t1 (a int not null);
  275. show create table t1;
  276. drop table t1;
  277. --error 1286
  278. SET SESSION storage_engine="gemini";
  279. SELECT @@storage_engine;
  280. CREATE TABLE t1 (a int not null);
  281. show create table t1;
  282. SET SESSION storage_engine=default;
  283. drop table t1;
  284. #
  285. # Test types of data for create select with functions
  286. #
  287. create table t1(a int,b int,c int unsigned,d date,e char,f datetime,g time,h blob);
  288. insert into t1(a)values(1);
  289. insert into t1(a,b,c,d,e,f,g,h)
  290. values(2,-2,2,'1825-12-14','a','2003-1-1 3:2:1','4:3:2','binary data');
  291. select * from t1;
  292. select a, 
  293.     ifnull(b,cast(-7 as signed)) as b, 
  294.     ifnull(c,cast(7 as unsigned)) as c, 
  295.     ifnull(d,cast('2000-01-01' as date)) as d, 
  296.     ifnull(e,cast('b' as char)) as e,
  297.     ifnull(f,cast('2000-01-01' as datetime)) as f, 
  298.     ifnull(g,cast('5:4:3' as time)) as g,
  299.     ifnull(h,cast('yet another binary data' as binary)) as h,
  300.     addtime(cast('1:0:0' as time),cast('1:0:0' as time)) as dd 
  301. from t1;
  302. create table t2
  303. select
  304.     a, 
  305.     ifnull(b,cast(-7                        as signed))   as b,
  306.     ifnull(c,cast(7                         as unsigned)) as c,
  307.     ifnull(d,cast('2000-01-01'              as date))     as d,
  308.     ifnull(e,cast('b'                       as char))     as e,
  309.     ifnull(f,cast('2000-01-01'              as datetime)) as f,
  310.     ifnull(g,cast('5:4:3'                   as time))     as g,
  311.     ifnull(h,cast('yet another binary data' as binary))   as h,
  312.     addtime(cast('1:0:0' as time),cast('1:0:0' as time))  as dd
  313. from t1;
  314. explain t2;
  315. select * from t2;
  316. drop table t1, t2;
  317. 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));
  318. 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;
  319. show create table t2;
  320. drop table t1,t2;
  321. #
  322. # Test of default()
  323. #
  324. create table t1(str varchar(10) default 'def',strnull varchar(10),intg int default '10',rel double default '3.14');
  325. insert into t1 values ('','',0,0.0);
  326. describe t1;
  327. create table t2 select default(str) as str, default(strnull) as strnull, default(intg) as intg, default(rel) as rel from t1;
  328. describe t2;
  329. drop table t1, t2;
  330. #
  331. # Bug #2075
  332. #
  333. create table t1(name varchar(10), age smallint default -1);
  334. describe t1;
  335. create table t2(name varchar(10), age smallint default - 1);
  336. describe t2;
  337. drop table t1, t2;
  338. #
  339. # test for bug #1427 "enum allows duplicate values in the list"
  340. #
  341. create table t1(cenum enum('a'), cset set('b'));
  342. create table t2(cenum enum('a','a'), cset set('b','b'));
  343. create table t3(cenum enum('a','A','a','c','c'), cset set('b','B','b','d','d'));
  344. drop table t1, t2, t3;
  345. #
  346. # Bug #1209
  347. #
  348. create database mysqltest;
  349. use mysqltest;
  350. select database();
  351. drop database mysqltest;
  352. select database();
  353. # Connect without a database
  354. connect (user1,localhost,mysqltest_1,,*NO-ONE*);
  355. connection user1;
  356. select database(), user();
  357. connection default;
  358. disconnect user1;
  359. use test;
  360. #
  361. # Test for Bug 856 'Naming a key "Primary" causes trouble'
  362. #
  363. --error 1280
  364. create table t1 (a int, index `primary` (a));
  365. --error 1280
  366. create table t1 (a int, index `PRIMARY` (a));
  367. create table t1 (`primary` int, index(`primary`));
  368. show create table t1;
  369. create table t2 (`PRIMARY` int, index(`PRIMARY`));
  370. show create table t2;
  371. create table t3 (a int);
  372. --error 1280
  373. alter table t3 add index `primary` (a);
  374. --error 1280
  375. alter table t3 add index `PRIMARY` (a);
  376. create table t4 (`primary` int);
  377. alter table t4 add index(`primary`);
  378. show create table t4;
  379. create table t5 (`PRIMARY` int);
  380. alter table t5 add index(`PRIMARY`);
  381. show create table t5;
  382. drop table t1, t2, t3, t4, t5;
  383. #
  384. # bug #3266 TEXT in CREATE TABLE SELECT
  385. #
  386. CREATE TABLE t1(id varchar(10) NOT NULL PRIMARY KEY, dsc longtext);
  387. INSERT INTO t1 VALUES ('5000000001', NULL),('5000000003', 'Test'),('5000000004', NULL);
  388. 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));
  389. 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');
  390. 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;
  391. SELECT * FROM t3;
  392. drop table t1, t2, t3;
  393. #
  394. # Bug#9666: Can't use 'DEFAULT FALSE' for column of type bool
  395. #
  396. create table t1 (b bool not null default false);
  397. create table t2 (b bool not null default true);
  398. insert into t1 values ();
  399. insert into t2 values ();
  400. select * from t1;
  401. select * from t2;
  402. drop table t1,t2;
  403. #
  404. # Bug#10224 - ANALYZE TABLE crashing with simultaneous
  405. # CREATE ... SELECT statement.
  406. # This tests two additional possible errors and a hang if 
  407. # an improper fix is present.
  408. #
  409. create table t1 (a int);
  410. --error 1093
  411. create table t1 select * from t1;
  412. --error 1093
  413. create table t2 union = (t1) select * from t1;
  414. flush tables with read lock;
  415. unlock tables;
  416. drop table t1;
  417. #
  418. # Bug#10413: Invalid column name is not rejected
  419. #
  420. --error 1103
  421. create table t1(column.name int);
  422. --error 1103
  423. create table t1(test.column.name int);
  424. --error 1102
  425. create table t1(xyz.t1.name int);
  426. create table t1(t1.name int);
  427. create table t2(test.t2.name int);
  428. drop table t1,t2;
  429. #
  430. # Bug #12537: UNION produces longtext instead of varchar
  431. #
  432. CREATE TABLE t1 (f1 VARCHAR(255) CHARACTER SET utf8);
  433. CREATE TABLE t2 AS SELECT LEFT(f1,86) AS f2 FROM t1 UNION SELECT LEFT(f1,86)
  434. AS f2 FROM t1;
  435. DESC t2;
  436. DROP TABLE t1,t2;
  437. #
  438. # Bug#11028: Crash on create table like
  439. #
  440. create database mysqltest;
  441. use mysqltest;
  442. drop database mysqltest;
  443. --error 1102
  444. create table test.t1 like x;
  445. --disable_warnings
  446. drop table if exists test.t1;
  447. --enable_warnings
  448. #
  449. # Bug #6008 MySQL does not create warnings when
  450. # creating database and using IF NOT EXISTS
  451. #
  452. create database mysqltest;
  453. create database if not exists mysqltest character set latin2;
  454. show create database mysqltest;
  455. drop database mysqltest;
  456. use test;
  457. create table t1 (a int);
  458. create table if not exists t1 (a int);
  459. drop table t1;
  460. # BUG#14139
  461. create table t1 (
  462.   a varchar(112) charset utf8 collate utf8_bin not null,
  463.   primary key (a)
  464. ) select 'test' as a ;
  465. show create table t1;
  466. drop table t1;
  467. #
  468. # BUG#14480: assert failure in CREATE ... SELECT because of wrong
  469. #            calculation of number of NULLs.
  470. #
  471. CREATE TABLE t2 (
  472.   a int(11) default NULL
  473. );
  474. insert into t2 values(111);
  475. create table t1 ( 
  476.   a varchar(12) charset utf8 collate utf8_bin not null, 
  477.   b int not null, primary key (a)
  478. ) select a, 1 as b from t2 ;
  479. show create table t1;
  480. drop table t1;
  481. create table t1 ( 
  482.   a varchar(12) charset utf8 collate utf8_bin not null,
  483.   b int not null, primary key (a)
  484. ) select 'a' as a , 1 as b from t2 ;
  485. show create table t1;
  486. drop table t1;
  487. create table t1 ( 
  488.   a varchar(12) charset utf8 collate utf8_bin,
  489.   b int not null, primary key (a)
  490. ) select 'a' as a , 1 as b from t2 ;
  491. show create table t1;
  492. drop table t1, t2;
  493. create table t1 ( 
  494.   a1 int not null,
  495.   a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int
  496. );
  497. insert into t1 values (1,1,1, 1,1,1, 1,1,1);
  498. create table t2 ( 
  499.   a1 varchar(12) charset utf8 collate utf8_bin not null,
  500.   a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int,
  501.   primary key (a1)
  502. ) select a1,a2,a3,a4,a5,a6,a7,a8,a9 from t1 ;
  503. drop table t2;
  504. create table t2 ( 
  505.   a1 varchar(12) charset utf8 collate utf8_bin,
  506.   a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int
  507. ) select a1,a2,a3,a4,a5,a6,a7,a8,a9 from t1;
  508. drop table t1, t2;
  509. create table t1 ( 
  510.   a1 int, a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int
  511. );
  512. insert into t1 values (1,1,1, 1,1,1, 1,1,1);
  513. create table t2 ( 
  514.   a1 varchar(12) charset utf8 collate utf8_bin not null,
  515.   a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int,
  516.   primary key (a1)
  517. ) select a1,a2,a3,a4,a5,a6,a7,a8,a9 from t1 ;
  518. # Test the default value
  519. drop table t2;
  520. create table t2 ( a int default 3, b int default 3)
  521.   select a1,a2 from t1;
  522. show create table t2;
  523. drop table t1, t2;
  524. # End of 4.1 tests