diff --git a/libraries/classes/Table.php b/libraries/classes/Table.php index 99db22dd95..fe87720d2e 100644 --- a/libraries/classes/Table.php +++ b/libraries/classes/Table.php @@ -591,6 +591,9 @@ class Table // a TIMESTAMP does not accept DEFAULT '0' // but DEFAULT 0 works $query .= ' DEFAULT 0'; + } elseif ($is_timestamp + && preg_match('/^\'\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d(\.\d{1,6})?\'$/', $default_value)) { + $query .= ' DEFAULT ' . $default_value; } elseif ($type === 'BIT') { $query .= ' DEFAULT b\'' . preg_replace('/[^01]/', '0', (string) $default_value) diff --git a/test/classes/TableTest.php b/test/classes/TableTest.php index f22a59b51c..83318b3f7b 100644 --- a/test/classes/TableTest.php +++ b/test/classes/TableTest.php @@ -649,6 +649,84 @@ class TableTest extends AbstractTestCase $query ); + $type = 'TIMESTAMP'; + $length = ''; + $extra = ''; + $default_type = 'USER_DEFINED'; + $default_value = '\'0000-00-00 00:00:00\''; + $query = Table::generateFieldSpec( + $name, + $type, + $length, + $attribute, + $collation, + $null, + $default_type, + $default_value, + $extra, + $comment, + $virtuality, + $expression, + $move_to + ); + $this->assertEquals( + '`PMA_name` TIMESTAMP PMA_attribute NULL DEFAULT \'0000-00-00 00:00:00\' ' + . "COMMENT 'PMA_comment' FIRST", + $query + ); + + $type = 'TIMESTAMP'; + $length = ''; + $extra = ''; + $default_type = 'USER_DEFINED'; + $default_value = '\'0000-00-00 00:00:00.0\''; + $query = Table::generateFieldSpec( + $name, + $type, + $length, + $attribute, + $collation, + $null, + $default_type, + $default_value, + $extra, + $comment, + $virtuality, + $expression, + $move_to + ); + $this->assertEquals( + '`PMA_name` TIMESTAMP PMA_attribute NULL DEFAULT \'0000-00-00 00:00:00.0\' ' + . "COMMENT 'PMA_comment' FIRST", + $query + ); + + $type = 'TIMESTAMP'; + $length = ''; + $extra = ''; + $default_type = 'USER_DEFINED'; + $default_value = '\'0000-00-00 00:00:00.000000\''; + $query = Table::generateFieldSpec( + $name, + $type, + $length, + $attribute, + $collation, + $null, + $default_type, + $default_value, + $extra, + $comment, + $virtuality, + $expression, + $move_to + ); + $this->assertEquals( + '`PMA_name` TIMESTAMP PMA_attribute NULL DEFAULT \'0000-00-00 00:00:00.000000\' ' + . "COMMENT 'PMA_comment' FIRST", + $query + ); + //$default_type is NONE $type = 'BOOLEAN'; $default_type = 'NONE';