diff --git a/adminer/drivers/mysql.inc.php b/adminer/drivers/mysql.inc.php index 962346d4..6c074157 100644 --- a/adminer/drivers/mysql.inc.php +++ b/adminer/drivers/mysql.inc.php @@ -436,7 +436,7 @@ if (!defined("DRIVER")) { /** Get foreign keys in table * @param string - * @return array array($name => array("db" => , "table" => , "source" => array(), "target" => array(), "on_delete" => , "on_update" => )) + * @return array array($name => array("db" => , "ns" => , "table" => , "source" => array(), "target" => array(), "on_delete" => , "on_update" => )) */ function foreign_keys($table) { global $connection, $on_actions; diff --git a/adminer/drivers/pgsql.inc.php b/adminer/drivers/pgsql.inc.php index 5ae76025..2c8767f2 100644 --- a/adminer/drivers/pgsql.inc.php +++ b/adminer/drivers/pgsql.inc.php @@ -261,13 +261,13 @@ ORDER BY a.attnum" function foreign_keys($table) { $return = array(); - foreach (get_rows("SELECT tc.constraint_name, kcu.column_name, rc.update_rule AS on_update, rc.delete_rule AS on_delete, ccu.table_name AS table, ccu.column_name AS ref + foreach (get_rows("SELECT tc.constraint_name, kcu.column_name, rc.update_rule AS on_update, rc.delete_rule AS on_delete, unique_constraint_schema AS ns, ccu.table_name AS table, ccu.column_name AS ref FROM information_schema.table_constraints tc LEFT JOIN information_schema.key_column_usage kcu USING (constraint_catalog, constraint_schema, constraint_name) LEFT JOIN information_schema.referential_constraints rc USING (constraint_catalog, constraint_schema, constraint_name) LEFT JOIN information_schema.constraint_column_usage ccu ON rc.unique_constraint_catalog = ccu.constraint_catalog AND rc.unique_constraint_schema = ccu.constraint_schema AND rc.unique_constraint_name = ccu.constraint_name -WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name = " . q($table) //! there can be more unique_constraint_name - ) as $row) { +WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.constraint_schema = current_schema() AND tc.table_name = " . q($table) //! there can be more unique_constraint_name + ) as $row) { $foreign_key = &$return[$row["constraint_name"]]; if (!$foreign_key) { $foreign_key = $row; diff --git a/adminer/foreign.inc.php b/adminer/foreign.inc.php index aab6e75b..b81bf3f7 100644 --- a/adminer/foreign.inc.php +++ b/adminer/foreign.inc.php @@ -49,7 +49,7 @@ foreach (table_status() as $name => $table_status) {

- + : diff --git a/adminer/table.inc.php b/adminer/table.inc.php index aa36e730..d00ecd0f 100644 --- a/adminer/table.inc.php +++ b/adminer/table.inc.php @@ -49,10 +49,12 @@ if ($fields) { echo "\n"; echo "\n"; foreach ($foreign_keys as $name => $foreign_key) { - $link = ($foreign_key["db"] != "" ? "" . h($foreign_key["db"]) . "." : "") . h($foreign_key["table"]); echo ""; echo "
" . lang('Source') . "" . lang('Target') . "" . lang('ON DELETE') . "" . lang('ON UPDATE') . ($jush != "sqlite" ? " " : "") . "
" . implode(", ", array_map('h', $foreign_key["source"])) . ""; - echo "$link"; + echo "" + . ($foreign_key["db"] != "" ? "" . h($foreign_key["db"]) . "." : "") . ($foreign_key["ns"] != "" ? "" . h($foreign_key["ns"]) . "." : "") . h($foreign_key["table"]) + . "" + ; echo "(" . implode(", ", array_map('h', $foreign_key["target"])) . ")"; echo "" . nbsp($foreign_key["on_delete"]) . "\n"; echo "" . nbsp($foreign_key["on_update"]) . "\n"; diff --git a/changes.txt b/changes.txt index 3b79d7bb..3e581cb9 100644 --- a/changes.txt +++ b/changes.txt @@ -10,6 +10,7 @@ Display column collation in tooltip Keyboard shortcuts: Alt+Shift+1 for homepage, Ctrl+Shift+Enter for Save and continue edit Show only errors with Webserver file SQL command Display error with all wrong SQL commands (MySQL) +Display foreign keys from other schemas (PostgreSQL) Pagination support (Oracle) Autocomplete for big foreign keys (Editor) Display name of the referenced record in PostgreSQL (Editor)