diff --git a/adminer/drivers/mysql.inc.php b/adminer/drivers/mysql.inc.php index 635fe971..e43d3c7e 100644 --- a/adminer/drivers/mysql.inc.php +++ b/adminer/drivers/mysql.inc.php @@ -915,9 +915,10 @@ if (!defined("DRIVER")) { /** Get SQL command to create table * @param string * @param bool + * @param string * @return string */ - function create_sql($table, $auto_increment) { + function create_sql($table, $auto_increment, $style) { global $connection; $return = $connection->result("SHOW CREATE TABLE " . table($table), 1); if (!$auto_increment) { diff --git a/adminer/drivers/pgsql.inc.php b/adminer/drivers/pgsql.inc.php index 787c6ae9..36f1788b 100644 --- a/adminer/drivers/pgsql.inc.php +++ b/adminer/drivers/pgsql.inc.php @@ -617,7 +617,7 @@ AND typelem = 0" return $return; } - function create_sql($table, $auto_increment) { + function create_sql($table, $auto_increment, $style) { global $connection; $return = ''; $return_parts = array(); @@ -647,7 +647,8 @@ AND typelem = 0" if (preg_match('~nextval\(\'([^\']+)\'\)~', $field['default'], $matches)) { $sequence_name = $matches[1]; $sq = reset(get_rows("SELECT * FROM $sequence_name")); - $sequences[] = "CREATE SEQUENCE $sequence_name INCREMENT $sq[increment_by] MINVALUE $sq[min_value] MAXVALUE $sq[max_value] START " . ($auto_increment ? $sq['last_value'] : 1) . " CACHE $sq[cache_value];"; + $sequences[] = ($style == "DROP+CREATE" ? "DROP SEQUENCE $sequence_name;\n" : "") + . "CREATE SEQUENCE $sequence_name INCREMENT $sq[increment_by] MINVALUE $sq[min_value] MAXVALUE $sq[max_value] START " . ($auto_increment ? $sq['last_value'] : 1) . " CACHE $sq[cache_value];"; } } diff --git a/adminer/drivers/sqlite.inc.php b/adminer/drivers/sqlite.inc.php index 27af882c..e09c89d3 100644 --- a/adminer/drivers/sqlite.inc.php +++ b/adminer/drivers/sqlite.inc.php @@ -715,7 +715,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) { return true; } - function create_sql($table, $auto_increment) { + function create_sql($table, $auto_increment, $style) { global $connection; $return = $connection->result("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = " . q($table)); foreach (indexes($table) as $name => $index) { diff --git a/adminer/include/adminer.inc.php b/adminer/include/adminer.inc.php index fa24f9cf..98c3dd61 100644 --- a/adminer/include/adminer.inc.php +++ b/adminer/include/adminer.inc.php @@ -737,7 +737,7 @@ class Adminer { } $create = "CREATE TABLE " . table($table) . " (" . implode(", ", $fields) . ")"; } else { - $create = create_sql($table, $_POST["auto_increment"]); + $create = create_sql($table, $_POST["auto_increment"], $style); } set_utf8mb4($create); if ($style && $create) { diff --git a/changes.txt b/changes.txt index 51bc4714..c3e2565f 100644 --- a/changes.txt +++ b/changes.txt @@ -4,6 +4,7 @@ CSP: Allow any styles, images, media and fonts, disallow base-uri SQLite: Enable foreign key checks PostgreSQL: Respect NULL default value PostgreSQL: Do not export triggers if not requested +PostgreSQL: Export DROP SEQUENCE if dropping table Elasticsearch: Insert, update, delete Adminer 4.4.0 (released 2018-01-17):