mirror of
https://github.com/vrana/adminer.git
synced 2025-08-30 01:30:12 +02:00
PostgreSQL: Fix exporting CREATE TABLE with sequence default value
This commit is contained in:
@@ -43,7 +43,7 @@ if (isset($_GET["pgsql"])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function quote($string) {
|
function quote($string) {
|
||||||
return "'" . pg_escape_string($this->_link, $string) . "'";
|
return pg_escape_literal($this->_link, $string);
|
||||||
}
|
}
|
||||||
|
|
||||||
function value($val, $field) {
|
function value($val, $field) {
|
||||||
@@ -792,7 +792,7 @@ AND typelem = 0"
|
|||||||
$return = "CREATE TABLE " . idf_escape($status['nspname']) . "." . idf_escape($status['Name']) . " (\n ";
|
$return = "CREATE TABLE " . idf_escape($status['nspname']) . "." . idf_escape($status['Name']) . " (\n ";
|
||||||
|
|
||||||
// fields' definitions
|
// fields' definitions
|
||||||
foreach ($fields as $field_name => $field) {
|
foreach ($fields as $field) {
|
||||||
$part = idf_escape($field['field']) . ' ' . $field['full_type']
|
$part = idf_escape($field['field']) . ' ' . $field['full_type']
|
||||||
. default_value($field)
|
. default_value($field)
|
||||||
. ($field['attnotnull'] ? " NOT NULL" : "");
|
. ($field['attnotnull'] ? " NOT NULL" : "");
|
||||||
@@ -801,10 +801,11 @@ AND typelem = 0"
|
|||||||
// sequences for fields
|
// sequences for fields
|
||||||
if (preg_match('~nextval\(\'([^\']+)\'\)~', $field['default'], $matches)) {
|
if (preg_match('~nextval\(\'([^\']+)\'\)~', $field['default'], $matches)) {
|
||||||
$sequence_name = $matches[1];
|
$sequence_name = $matches[1];
|
||||||
$sq = reset(get_rows(min_version(10)
|
$rows = get_rows(min_version(10)
|
||||||
? "SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = " . q($sequence_name)
|
? "SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = " . q(idf_unescape($sequence_name))
|
||||||
: "SELECT * FROM $sequence_name"
|
: "SELECT * FROM $sequence_name"
|
||||||
));
|
);
|
||||||
|
$sq = reset($rows);
|
||||||
$sequences[] = ($style == "DROP+CREATE" ? "DROP SEQUENCE IF EXISTS $sequence_name;\n" : "")
|
$sequences[] = ($style == "DROP+CREATE" ? "DROP SEQUENCE IF EXISTS $sequence_name;\n" : "")
|
||||||
. "CREATE SEQUENCE $sequence_name INCREMENT $sq[increment_by] MINVALUE $sq[min_value] MAXVALUE $sq[max_value]" . ($auto_increment && $sq['last_value'] ? " START $sq[last_value]" : "") . " CACHE $sq[cache_value];";
|
. "CREATE SEQUENCE $sequence_name INCREMENT $sq[increment_by] MINVALUE $sq[min_value] MAXVALUE $sq[max_value]" . ($auto_increment && $sq['last_value'] ? " START $sq[last_value]" : "") . " CACHE $sq[cache_value];";
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user