From 9754d165fceb971ea3d107412329fd19ab2d1dbe Mon Sep 17 00:00:00 2001 From: William Desportes Date: Tue, 16 Feb 2021 15:35:07 +0100 Subject: [PATCH 1/2] Ref #16575 - Add tests to cover the DEFAULT timestamp support Signed-off-by: William Desportes --- test/classes/TableTest.php | 78 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) 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'; From 805ceb08c3a20a37209a178dc9fd4f7280c91b19 Mon Sep 17 00:00:00 2001 From: peterdd Date: Thu, 11 Feb 2021 06:29:52 +0100 Subject: [PATCH 2/2] Fix #16575 - move timestamp column with default value Signed-off-by: Peter Liscovius --- libraries/classes/Table.php | 3 +++ 1 file changed, 3 insertions(+) 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)