From 4c2268d38184537bcf9def0cda51c95003c13cb6 Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Fri, 21 May 2010 16:23:44 +0200 Subject: [PATCH] PostgreSQL hidden columns support --- adminer/drivers/mssql.inc.php | 2 +- adminer/drivers/mysql.inc.php | 3 ++- adminer/drivers/oracle.inc.php | 2 +- adminer/drivers/pgsql.inc.php | 8 +++++--- adminer/drivers/sqlite.inc.php | 2 +- adminer/select.inc.php | 4 ++-- 6 files changed, 12 insertions(+), 9 deletions(-) diff --git a/adminer/drivers/mssql.inc.php b/adminer/drivers/mssql.inc.php index ccbd6f29..4ba8fecc 100644 --- a/adminer/drivers/mssql.inc.php +++ b/adminer/drivers/mssql.inc.php @@ -308,7 +308,7 @@ if (isset($_GET["mssql"])) { return true; } - function fields($table) { + function fields($table, $hidden = false) { global $connection; $return = array(); $result = $connection->query("SELECT c.*, t.name type, d.definition [default] diff --git a/adminer/drivers/mysql.inc.php b/adminer/drivers/mysql.inc.php index c46c54ef..994c1a0f 100644 --- a/adminer/drivers/mysql.inc.php +++ b/adminer/drivers/mysql.inc.php @@ -380,9 +380,10 @@ if (!defined("DRIVER")) { /** Get information about fields * @param string + * @param bool display hidden table columns * @return array array($name => array("field" => , "full_type" => , "type" => , "length" => , "unsigned" => , "default" => , "null" => , "auto_increment" => , "on_update" => , "collation" => , "privileges" => , "comment" => , "primary" => )) */ - function fields($table) { + function fields($table, $hidden = false) { global $connection; $return = array(); $result = $connection->query("SHOW FULL COLUMNS FROM " . table($table)); diff --git a/adminer/drivers/oracle.inc.php b/adminer/drivers/oracle.inc.php index 87a45eb0..df6e6ec9 100644 --- a/adminer/drivers/oracle.inc.php +++ b/adminer/drivers/oracle.inc.php @@ -201,7 +201,7 @@ if (isset($_GET["oracle"])) { return true; } - function fields($table) { + function fields($table, $hidden = false) { global $connection; $return = array(); $result = $connection->query("SELECT * FROM all_tab_columns WHERE table_name = " . $connection->quote($table) . " ORDER BY column_id"); diff --git a/adminer/drivers/pgsql.inc.php b/adminer/drivers/pgsql.inc.php index a3ff8157..3ff313f1 100644 --- a/adminer/drivers/pgsql.inc.php +++ b/adminer/drivers/pgsql.inc.php @@ -217,7 +217,7 @@ AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema( return true; } - function fields($table) { + function fields($table, $hidden = false) { global $connection; $return = array(); $result = $connection->query("SELECT a.attname AS field, format_type(a.atttypid, a.atttypmod) AS full_type, d.adsrc AS default, a.attnotnull, col_description(c.oid, a.attnum) AS comment @@ -227,8 +227,10 @@ JOIN pg_attribute a ON c.oid = a.attrelid LEFT JOIN pg_attrdef d ON c.oid = d.adrelid AND a.attnum = d.adnum WHERE c.relname = " . $connection->quote($table) . " AND n.nspname = current_schema() -AND a.attnum > 0 -ORDER BY a.attnum"); +AND NOT a.attisdropped +" . ($hidden ? "" : "AND a.attnum > 0") . " +ORDER BY a.attnum < 0, a.attnum" + ); if ($result) { while ($row = $result->fetch_assoc()) { //! collation, primary diff --git a/adminer/drivers/sqlite.inc.php b/adminer/drivers/sqlite.inc.php index cb5433eb..fa66ff67 100644 --- a/adminer/drivers/sqlite.inc.php +++ b/adminer/drivers/sqlite.inc.php @@ -267,7 +267,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) { return !$connection->result("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')"); } - function fields($table) { + function fields($table, $hidden = false) { global $connection; $return = array(); $result = $connection->query("PRAGMA table_info(" . table($table) . ")"); diff --git a/adminer/select.inc.php b/adminer/select.inc.php index 018ed19e..45e03c30 100644 --- a/adminer/select.inc.php +++ b/adminer/select.inc.php @@ -2,7 +2,7 @@ $TABLE = $_GET["select"]; $table_status = table_status($TABLE); $indexes = indexes($TABLE); -$fields = fields($TABLE); +$fields = fields($TABLE, 1); // 1 - hidden $foreign_keys = column_foreign_keys($TABLE); $rights = array(); // privilege => 0 @@ -12,7 +12,7 @@ foreach ($fields as $key => $field) { $name = $adminer->fieldName($field); if (isset($field["privileges"]["select"]) && $name != "") { $columns[$key] = html_entity_decode(strip_tags($name)); - if (ereg('text|blob', $field["type"])) { + if (ereg('text|clob|blob', $field["type"])) { $text_length = $adminer->selectLengthProcess(); } }