From eeb7ce1939cf80811934a3a7fd684cdb51a49335 Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Fri, 9 Feb 2018 15:29:54 +0100 Subject: [PATCH] PostgreSQL: Fix exporting string default values (thanks to PotatoPangolin) --- adminer/drivers/pgsql.inc.php | 2 +- adminer/include/editing.inc.php | 13 ++++++++++--- changes.txt | 1 + 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/adminer/drivers/pgsql.inc.php b/adminer/drivers/pgsql.inc.php index 1af095f6..95f59c80 100644 --- a/adminer/drivers/pgsql.inc.php +++ b/adminer/drivers/pgsql.inc.php @@ -704,7 +704,7 @@ AND typelem = 0" // fields' definitions foreach ($fields as $field_name => $field) { $part = idf_escape($field['field']) . ' ' . $field['full_type'] - . (is_null($field['default']) ? "" : " DEFAULT $field[default]") + . default_value($field) . ($field['attnotnull'] ? " NOT NULL" : ""); $return_parts[] = $part; diff --git a/adminer/include/editing.inc.php b/adminer/include/editing.inc.php index 022b4bc1..e1ba19c9 100644 --- a/adminer/include/editing.inc.php +++ b/adminer/include/editing.inc.php @@ -195,19 +195,26 @@ function process_type($field, $collate = "COLLATE") { * @return array array("field", "type", "NULL", "DEFAULT", "ON UPDATE", "COMMENT", "AUTO_INCREMENT") */ function process_field($field, $type_field) { - global $jush; - $default = $field["default"]; return array( idf_escape(trim($field["field"])), process_type($type_field), ($field["null"] ? " NULL" : " NOT NULL"), // NULL for timestamp - (isset($default) ? " DEFAULT " . (preg_match('~char|binary|text|enum|set~', $field["type"]) || preg_match('~^(?![a-z])~i', $default) ? q($default) : $default) : ""), + default_value($field), (preg_match('~timestamp|datetime~', $field["type"]) && $field["on_update"] ? " ON UPDATE $field[on_update]" : ""), (support("comment") && $field["comment"] != "" ? " COMMENT " . q($field["comment"]) : ""), ($field["auto_increment"] ? auto_increment() : null), ); } +/** Get default value clause +* @param array +* @return string +*/ +function default_value($field) { + $default = $field["default"]; + return ($default === null ? "" : " DEFAULT " . (preg_match('~char|binary|text|enum|set~', $field["type"]) || preg_match('~^(?![a-z])~i', $default) ? q($default) : $default)); +} + /** Get type class to use in CSS * @param string * @return string class='' diff --git a/changes.txt b/changes.txt index 67b8d316..22b3f5bc 100644 --- a/changes.txt +++ b/changes.txt @@ -1,6 +1,7 @@ Adminer 4.6.2-dev: Semi-transparent border on table actions Shorten JSON values in select (bug #594) +PostgreSQL: Fix exporting string default values PostgreSQL: Fix exporting sequences in PostgreSQL 10 Adminer 4.6.1 (released 2018-02-09):