From 8894f046b346edac0954e91b35ed3655edfb570c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Sat, 19 Sep 2020 21:53:27 -0300 Subject: [PATCH] Fix column definition form not showing default value MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduced by 5d0fd81e674464c4ba79f40a84974b1129b350e4 Signed-off-by: MaurĂ­cio Meneghini Fauth --- ChangeLog | 1 + libraries/classes/CentralColumns.php | 46 ++++++++++++++----- libraries/tbl_columns_definition_form.inc.php | 2 +- .../column_attributes.twig | 1 - templates/database/central_columns/main.twig | 4 +- 5 files changed, 39 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6bda6e7aaf..87a65494bb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -60,6 +60,7 @@ phpMyAdmin - ChangeLog - issue #15634 Only use session_set_cookie_params once on PHP >= 7.3.0 versions for single signon auth - issue #14698 Fixed database named as 'New' (language variable) causes PHP fatal error - issue #16355 Make textareas both sides resizable +- issue #16366 Fix column definition form not showing default value 5.0.2 (2020-03-20) - issue Fixed deprecation warning "implode(): Passing glue string after array is deprecated." function on export page diff --git a/libraries/classes/CentralColumns.php b/libraries/classes/CentralColumns.php index 9e11db0a80..5ee9a2b457 100644 --- a/libraries/classes/CentralColumns.php +++ b/libraries/classes/CentralColumns.php @@ -799,13 +799,27 @@ class CentralColumns $meta['DefaultType'] = 'USER_DEFINED'; $meta['DefaultValue'] = $row['col_default']; } + + $defaultValue = ''; + $typeUpper = mb_strtoupper((string) $row['col_type']); + + // For a TIMESTAMP, do not show the string "CURRENT_TIMESTAMP" as a default value + if (isset($meta['DefaultValue'])) { + $defaultValue = $meta['DefaultValue']; + } + if ($typeUpper == 'BIT') { + $defaultValue = Util::convertBitDefaultValue($meta['DefaultValue']); + } elseif ($typeUpper == 'BINARY' || $typeUpper == 'VARBINARY') { + $defaultValue = bin2hex($meta['DefaultValue']); + } + $tableHtml .= '' . $this->template->render('columns_definitions/column_default', [ 'column_number' => $row_num, 'ci' => 3, 'ci_offset' => 0, - 'type_upper' => mb_strtoupper((string) $row['col_default']), + 'default_value' => $defaultValue, 'column_meta' => $meta, 'char_editing' => $this->charEditing, ]) @@ -1143,6 +1157,7 @@ class CentralColumns $tables = $this->dbi->getTables($db); $rows_list = $this->getColumnsList($db, $pos, $max_rows); + $defaultValues = []; $rows_meta = []; $types_upper = []; $row_num = 0; @@ -1150,19 +1165,27 @@ class CentralColumns $rows_meta[$row_num] = []; if (! isset($row['col_default']) || $row['col_default'] == '') { $rows_meta[$row_num]['DefaultType'] = 'NONE'; + } elseif ($row['col_default'] == 'CURRENT_TIMESTAMP' || $row['col_default'] == 'current_timestamp()') { + $rows_meta[$row_num]['DefaultType'] = 'CURRENT_TIMESTAMP'; + } elseif ($row['col_default'] == 'NULL') { + $rows_meta[$row_num]['DefaultType'] = $row['col_default']; } else { - if ($row['col_default'] == 'CURRENT_TIMESTAMP' - || $row['col_default'] == 'current_timestamp()' - ) { - $rows_meta[$row_num]['DefaultType'] = 'CURRENT_TIMESTAMP'; - } elseif ($row['col_default'] == 'NULL') { - $rows_meta[$row_num]['DefaultType'] = $row['col_default']; - } else { - $rows_meta[$row_num]['DefaultType'] = 'USER_DEFINED'; - $rows_meta[$row_num]['DefaultValue'] = $row['col_default']; - } + $rows_meta[$row_num]['DefaultType'] = 'USER_DEFINED'; + $rows_meta[$row_num]['DefaultValue'] = $row['col_default']; } $types_upper[$row_num] = mb_strtoupper((string) $row['col_type']); + + // For a TIMESTAMP, do not show the string "CURRENT_TIMESTAMP" as a default value + $defaultValues[$row_num] = ''; + if (isset($rows_meta[$row_num]['DefaultValue'])) { + $defaultValues[$row_num] = $rows_meta[$row_num]['DefaultValue']; + } + if ($types_upper[$row_num] == 'BIT') { + $defaultValues[$row_num] = Util::convertBitDefaultValue($rows_meta[$row_num]['DefaultValue']); + } elseif ($types_upper[$row_num] == 'BINARY' || $types_upper[$row_num] == 'VARBINARY') { + $defaultValues[$row_num] = bin2hex($rows_meta[$row_num]['DefaultValue']); + } + $row_num++; } @@ -1198,6 +1221,7 @@ class CentralColumns "tables" => $tables, "rows_list" => $rows_list, "rows_meta" => $rows_meta, + "default_values" => $defaultValues, "types_upper" => $types_upper, "pmaThemeImage" => $pmaThemeImage, "text_dir" => $text_dir, diff --git a/libraries/tbl_columns_definition_form.inc.php b/libraries/tbl_columns_definition_form.inc.php index 366d7a2d21..547dea6ab6 100644 --- a/libraries/tbl_columns_definition_form.inc.php +++ b/libraries/tbl_columns_definition_form.inc.php @@ -462,7 +462,7 @@ for ($columnNumber = 0; $columnNumber < $num_fields; $columnNumber++) { if (isset($columnMeta['DefaultValue'])) { $default_value = $columnMeta['DefaultValue']; } - if ($type_upper == 'BIN)') { + if ($type_upper == 'BIT') { $default_value = Util::convertBitDefaultValue($columnMeta['DefaultValue']); } elseif ($type_upper == 'BINARY' || $type_upper == 'VARBINARY') { $default_value = bin2hex($columnMeta['DefaultValue']); diff --git a/templates/columns_definitions/column_attributes.twig b/templates/columns_definitions/column_attributes.twig index 89eef8620a..8beadd4c47 100644 --- a/templates/columns_definitions/column_attributes.twig +++ b/templates/columns_definitions/column_attributes.twig @@ -46,7 +46,6 @@ 'ci': ci, 'ci_offset': ci_offset, 'column_meta': column_meta, - 'type_upper': type_upper, 'default_value': default_value, 'char_editing': char_editing } only %} diff --git a/templates/database/central_columns/main.twig b/templates/database/central_columns/main.twig index 30b7276dd7..331aa8b9ef 100644 --- a/templates/database/central_columns/main.twig +++ b/templates/database/central_columns/main.twig @@ -85,7 +85,7 @@ 'column_number': 0, 'ci': 3, 'ci_offset': 0, - 'type_upper': '', + 'default_value': '', 'column_meta': {}, 'char_editing': char_editing, } only %} @@ -333,7 +333,7 @@ 'column_number': row_num, 'ci': 3, 'ci_offset': 0, - 'type_upper': types_upper[row_num], + 'default_value': default_values[row_num], 'column_meta': rows_meta[row_num], 'char_editing': char_editing, } only %}