@@ -267,8 +267,8 @@ public function testShowCreateTable1() {
267
267
ID BIGINT PRIMARY KEY AUTO_INCREMENT NOT NULL,
268
268
option_name VARCHAR(255) default '',
269
269
option_value TEXT NOT NULL,
270
- UNIQUE KEY option_name (option_name),
271
- KEY composite (option_name, option_value)
270
+ UNIQUE KEY option_name (option_name(100) ),
271
+ KEY composite (option_name(100) , option_value(100) )
272
272
); "
273
273
);
274
274
@@ -283,8 +283,49 @@ public function testShowCreateTable1() {
283
283
`option_name` varchar(255) DEFAULT '',
284
284
`option_value` text NOT NULL DEFAULT '',
285
285
PRIMARY KEY (`ID`),
286
- KEY `composite` (`option_name`, `option_value`),
287
- UNIQUE KEY `option_name` (`option_name`)
286
+ KEY `composite` (`option_name`(100), `option_value`(100)),
287
+ UNIQUE KEY `option_name` (`option_name`(100))
288
+ ); " ,
289
+ $ results [0 ]->{'Create Table ' }
290
+ );
291
+ }
292
+
293
+ public function testShowCreateTableWithEmptyDatetimeDefault () {
294
+ $ this ->assertQuery (
295
+ "CREATE TABLE _tmp_table (
296
+ ID BIGINT PRIMARY KEY AUTO_INCREMENT,
297
+ timestamp1 datetime NOT NULL,
298
+ timestamp2 date NOT NULL,
299
+ timestamp3 time NOT NULL,
300
+ timestamp4 timestamp NOT NULL,
301
+ timestamp5 year NOT NULL,
302
+ notempty1 datetime DEFAULT '1999-12-12 12:12:12',
303
+ notempty2 date DEFAULT '1999-12-12',
304
+ notempty3 time DEFAULT '12:12:12',
305
+ notempty4 year DEFAULT '2024',
306
+ notempty5 timestamp DEFAULT '1734539165',
307
+ ); "
308
+ );
309
+
310
+ $ this ->assertQuery (
311
+ 'SHOW CREATE TABLE _tmp_table; '
312
+ );
313
+ $ results = $ this ->engine ->get_query_results ();
314
+
315
+ $ this ->assertEquals (
316
+ "CREATE TABLE `_tmp_table` (
317
+ `ID` bigint AUTO_INCREMENT,
318
+ `timestamp1` datetime NOT NULL,
319
+ `timestamp2` date NOT NULL,
320
+ `timestamp3` time NOT NULL,
321
+ `timestamp4` timestamp NOT NULL,
322
+ `timestamp5` year NOT NULL,
323
+ `notempty1` datetime DEFAULT '1999-12-12 12:12:12',
324
+ `notempty2` date DEFAULT '1999-12-12',
325
+ `notempty3` time DEFAULT '12:12:12',
326
+ `notempty4` year DEFAULT '2024',
327
+ `notempty5` timestamp DEFAULT '1734539165',
328
+ PRIMARY KEY (`ID`)
288
329
); " ,
289
330
$ results [0 ]->{'Create Table ' }
290
331
);
@@ -296,8 +337,8 @@ public function testShowCreateTableQuoted() {
296
337
ID BIGINT PRIMARY KEY AUTO_INCREMENT NOT NULL,
297
338
option_name VARCHAR(255) default '',
298
339
option_value TEXT NOT NULL,
299
- UNIQUE KEY option_name (option_name),
300
- KEY composite (option_name, option_value)
340
+ UNIQUE KEY option_name (option_name(100) ),
341
+ KEY composite (option_name, option_value(100) )
301
342
); "
302
343
);
303
344
@@ -312,8 +353,8 @@ public function testShowCreateTableQuoted() {
312
353
`option_name` varchar(255) DEFAULT '',
313
354
`option_value` text NOT NULL DEFAULT '',
314
355
PRIMARY KEY (`ID`),
315
- KEY `composite` (`option_name`, `option_value`),
316
- UNIQUE KEY `option_name` (`option_name`)
356
+ KEY `composite` (`option_name`(100) , `option_value`(100) ),
357
+ UNIQUE KEY `option_name` (`option_name`(100) )
317
358
); " ,
318
359
$ results [0 ]->{'Create Table ' }
319
360
);
@@ -377,8 +418,8 @@ public function testCreateTablseWithIdenticalIndexNames() {
377
418
ID BIGINT PRIMARY KEY AUTO_INCREMENT NOT NULL,
378
419
option_name VARCHAR(255) default '',
379
420
option_value TEXT NOT NULL,
380
- KEY `option_name` (`option_name`),
381
- KEY `double__underscores` (`option_name`, `ID`)
421
+ KEY `option_name` (`option_name`(100) ),
422
+ KEY `double__underscores` (`option_name`(100) , `ID`)
382
423
); "
383
424
);
384
425
@@ -387,8 +428,8 @@ public function testCreateTablseWithIdenticalIndexNames() {
387
428
ID BIGINT PRIMARY KEY AUTO_INCREMENT NOT NULL,
388
429
option_name VARCHAR(255) default '',
389
430
option_value TEXT NOT NULL,
390
- KEY `option_name` (`option_name`),
391
- KEY `double__underscores` (`option_name`, `ID`)
431
+ KEY `option_name` (`option_name`(100) ),
432
+ KEY `double__underscores` (`option_name`(100) , `ID`)
392
433
); "
393
434
);
394
435
}
@@ -399,8 +440,8 @@ public function testShowCreateTablePreservesDoubleUnderscoreKeyNames() {
399
440
ID BIGINT PRIMARY KEY AUTO_INCREMENT NOT NULL,
400
441
option_name VARCHAR(255) default '',
401
442
option_value TEXT NOT NULL,
402
- KEY `option_name` (`option_name`),
403
- KEY `double__underscores` (`option_name`, `ID`)
443
+ KEY `option_name` (`option_name`(100) ),
444
+ KEY `double__underscores` (`option_name`(100) , `ID`)
404
445
); "
405
446
);
406
447
@@ -414,8 +455,43 @@ public function testShowCreateTablePreservesDoubleUnderscoreKeyNames() {
414
455
`option_name` varchar(255) DEFAULT \'\',
415
456
`option_value` text NOT NULL DEFAULT \'\',
416
457
PRIMARY KEY (`ID`),
417
- KEY `double__underscores` (`option_name`, `ID`),
418
- KEY `option_name` (`option_name`)
458
+ KEY `double__underscores` (`option_name`(100), `ID`),
459
+ KEY `option_name` (`option_name`(100))
460
+ ); ' ,
461
+ $ results [0 ]->{'Create Table ' }
462
+ );
463
+ }
464
+
465
+ public function testShowCreateTableLimitsKeyLengths () {
466
+ $ this ->assertQuery (
467
+ 'CREATE TABLE _tmp__table (
468
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
469
+ `order_id` bigint(20) unsigned DEFAULT NULL,
470
+ `meta_key` varchar(20) DEFAULT NULL,
471
+ `meta_value` text DEFAULT NULL,
472
+ `meta_data` mediumblob DEFAULT NULL,
473
+ PRIMARY KEY (`id`),
474
+ KEY `meta_key_value` (`meta_key`(20),`meta_value`(82)),
475
+ KEY `order_id_meta_key_meta_value` (`order_id`,`meta_key`(100),`meta_value`(82)),
476
+ KEY `order_id_meta_key_meta_data` (`order_id`,`meta_key`(100),`meta_data`(100))
477
+ ); '
478
+ );
479
+
480
+ $ this ->assertQuery (
481
+ 'SHOW CREATE TABLE _tmp__table; '
482
+ );
483
+ $ results = $ this ->engine ->get_query_results ();
484
+ $ this ->assertEquals (
485
+ 'CREATE TABLE `_tmp__table` (
486
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
487
+ `order_id` bigint(20) unsigned DEFAULT NULL,
488
+ `meta_key` varchar(20) DEFAULT NULL,
489
+ `meta_value` text DEFAULT NULL,
490
+ `meta_data` mediumblob DEFAULT NULL,
491
+ PRIMARY KEY (`id`),
492
+ KEY `order_id_meta_key_meta_data` (`order_id`, `meta_key`(20), `meta_data`(100)),
493
+ KEY `order_id_meta_key_meta_value` (`order_id`, `meta_key`(20), `meta_value`(100)),
494
+ KEY `meta_key_value` (`meta_key`(20), `meta_value`(100))
419
495
); ' ,
420
496
$ results [0 ]->{'Create Table ' }
421
497
);
0 commit comments