From 5cab8eabb777b7a72ac549393cf305955927e6e3 Mon Sep 17 00:00:00 2001 From: Sartor Date: Wed, 29 Apr 2020 13:03:23 +0300 Subject: [PATCH] Fix PgSQL generated always as identity fix --- adminer/drivers/pgsql.inc.php | 6 +++--- changes.txt | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/adminer/drivers/pgsql.inc.php b/adminer/drivers/pgsql.inc.php index 5466ed21..8abcaba7 100644 --- a/adminer/drivers/pgsql.inc.php +++ b/adminer/drivers/pgsql.inc.php @@ -350,7 +350,7 @@ WHERE relkind IN ('r', 'm', 'v', 'f') 'timestamp with time zone' => 'timestamptz', ); - $identity_column = min_version(10) ? "(a.attidentity = 'd')::int" : '0'; + $identity_column = min_version(10) ? 'a.attidentity' : '0'; foreach (get_rows("SELECT a.attname AS field, format_type(a.atttypid, a.atttypmod) AS full_type, pg_get_expr(d.adbin, d.adrelid) AS default, a.attnotnull::int, col_description(c.oid, a.attnum) AS comment, $identity_column AS identity FROM pg_class c @@ -375,8 +375,8 @@ ORDER BY a.attnum" $row["type"] = $type; $row["full_type"] = $row["type"] . $length . $addon . $array; } - if ($row['identity']) { - $row['default'] = 'GENERATED BY DEFAULT AS IDENTITY'; + if (in_array($row['identity'], array('a', 'd'))) { + $row['default'] = 'GENERATED ' . ($row['identity'] == 'd' ? 'BY DEFAULT' : 'ALWAYS') . ' AS IDENTITY'; } $row["null"] = !$row["attnotnull"]; $row["auto_increment"] = $row['identity'] || preg_match('~^nextval\(~i', $row["default"]); diff --git a/changes.txt b/changes.txt index 7fa7ad50..d3ddbdd5 100644 --- a/changes.txt +++ b/changes.txt @@ -2,6 +2,7 @@ Adminer 4.7.9-dev: Elasticsearch, ClickHouse: Do not print response if HTTP code is not 200 PostgreSQL: Export all FKs after all CREATE TABLE (PR #351) PostgreSQL: Fix dollar-quoted syntax highlighting (bug #738) +PostgreSQL 10: Support GENERATED ALWAYS BY IDENTITY (PR #386) Re-enable PHP warnings (regression from 4.7.8) Adminer 4.7.8 (released 2020-12-06):