From 9555c96d6a29e8f293d7161b0aea2c60dd33d66f Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Sun, 13 Apr 2025 16:59:07 +0200 Subject: [PATCH] PostgreSQL: Link parent from inherited tables (bug #1031) --- adminer/drivers/pgsql.inc.php | 10 ++++++++++ adminer/include/adminer.inc.php | 4 ++-- adminer/include/driver.inc.php | 7 +++++++ adminer/lang/cs.inc.php | 1 + adminer/lang/xx.inc.php | 1 + adminer/table.inc.php | 20 ++++++++++++++------ 6 files changed, 35 insertions(+), 8 deletions(-) diff --git a/adminer/drivers/pgsql.inc.php b/adminer/drivers/pgsql.inc.php index 066278f2..21656465 100644 --- a/adminer/drivers/pgsql.inc.php +++ b/adminer/drivers/pgsql.inc.php @@ -324,6 +324,16 @@ if (isset($_GET["pgsql"])) { } } + function inheritsFrom(string $table): array { + return get_vals("SELECT p.relname +FROM pg_class c +JOIN pg_namespace n ON n.nspname = current_schema() AND n.oid = c.relnamespace +JOIN pg_inherits ON inhrelid = c.oid +JOIN pg_class p ON inhparent = p.oid +WHERE c.relname = " . q($table) . " AND c.relkind = 'r' +ORDER BY 1"); + } + function inheritedTables(string $table): array { return get_vals("SELECT c.relname FROM pg_class p diff --git a/adminer/include/adminer.inc.php b/adminer/include/adminer.inc.php index c58e6dbc..463c4ff8 100644 --- a/adminer/include/adminer.inc.php +++ b/adminer/include/adminer.inc.php @@ -184,6 +184,7 @@ class Adminer { * @param ?string $set new item options, NULL for no new item */ function selectLinks(array $tableStatus, ?string $set = ""): void { + $name = $tableStatus["Name"]; echo '

" . lang('Comment') . ": " . h($comment) . "\n"; } -if ($fields) { +function tables_links($tables) { + echo "

\n"; +} + +$inherits = driver()->inheritsFrom($TABLE); +if ($inherits) { + echo "

" . lang('Inherits from') . "

\n"; + tables_links($inherits); +} elseif ($fields) { adminer()->tableStructurePrint($fields, $table_status); } @@ -99,9 +111,5 @@ if (support(is_view($table_status) ? "view_trigger" : "trigger")) { $inherited = driver()->inheritedTables($TABLE); if ($inherited) { echo "

" . lang('Inherited tables') . "

\n"; - echo "\n"; + tables_links($inherited); }