Find now finds view columns and links them properly
authorchriskl <chriskl>
Fri, 28 May 2004 07:41:36 +0000 (07:41 +0000)
committerchriskl <chriskl>
Fri, 28 May 2004 07:41:36 +0000 (07:41 +0000)
BUGS
classes/database/Postgres.php
classes/database/Postgres73.php
database.php

diff --git a/BUGS b/BUGS
index 9580eb7ef22ae450fc4a3cac01988bd126b290db..7a6e3cec82fa882bbd9d31589dd6b5bd1be86216 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -30,6 +30,6 @@ NEEDS TESTING
 * highlight things on the info stats page
 * advanced stats functions
 * prevent the user from dropping all the superusers
-* Find links columns in views incorrectly
 * getView() isn't schema-aware for 7.3+?
 * rename function in 7.2 and below doesn't come back to the correct function
+* Fix sql window being referenced from two different versions of phppgadmin
index fff3adab8dd045c70687f6d630a616c5be14251e..372d0a4bb661d531f5aed87d309a2a2ad7b66dad 100755 (executable)
@@ -4,7 +4,7 @@
  * A class that implements the DB interface for Postgres
  * Note: This class uses ADODB and returns RecordSets.
  *
- * $Id: Postgres.php,v 1.216 2004/05/26 14:14:03 chriskl Exp $
+ * $Id: Postgres.php,v 1.217 2004/05/28 07:41:36 chriskl Exp $
  */
 
 // @@@ THOUGHT: What about inherits? ie. use of ONLY???
@@ -2326,7 +2326,7 @@ class Postgres extends BaseDB {
                // Build SQL, excluding system relations as necessary
                // Relations
                $sql = "
-                       SELECT CASE WHEN relkind='r' THEN (CASE WHEN EXISTS (SELECT 1 FROM pg_rewrite r WHERE r.ev_class = pc.oid AND r.ev_type = '1') THEN 'VIEW'::VARCHAR ELSE 'TABLE'::VARCHAR END) WHEN relkind='v' THEN 'VIEW' WHEN relkind='S' THEN 'SEQUENCE'::VARCHAR END AS type, 
+                       SELECT CASE WHEN relkind='r' THEN (CASE WHEN EXISTS (SELECT 1 FROM pg_rewrite r WHERE r.ev_class = pc.oid AND r.ev_type = '1') THEN 'VIEW'::VARCHAR ELSE 'TABLE'::VARCHAR END) WHEN relkind='v' THEN 'VIEW'::VARCHAR WHEN relkind='S' THEN 'SEQUENCE'::VARCHAR END AS type, 
                                pc.oid, NULL::VARCHAR AS schemaname, NULL::VARCHAR AS relname, pc.relname AS name FROM pg_class pc
                                WHERE relkind IN ('r', 'v', 'S') AND relname ~* '.*{$term}.*'";
                if (!$conf['show_system']) $sql .= " AND pc.relname NOT LIKE 'pg\\\\_%'";                               
@@ -2334,7 +2334,8 @@ class Postgres extends BaseDB {
                // Columns
                $sql .= "                               
                        UNION ALL
-                       SELECT 'COLUMN', NULL, NULL, pc.relname, pa.attname FROM pg_class pc,
+                       SELECT CASE WHEN relkind='r' THEN (CASE WHEN EXISTS (SELECT 1 FROM pg_rewrite r WHERE r.ev_class = pc.oid AND r.ev_type = '1') THEN 'COLUMNVIEW'::VARCHAR ELSE 'COLUMNTABLE'::VARCHAR END) WHEN relkind='v' THEN 'COLUMNVIEW'::VARCHAR END,
+                               NULL, NULL, pc.relname, pa.attname FROM pg_class pc,
                                pg_attribute pa WHERE pc.oid=pa.attrelid 
                                AND pa.attname ~* '.*{$term}.*' AND pa.attnum > 0 AND pc.relkind IN ('r', 'v')";
                if (!$conf['show_system']) $sql .= " AND pc.relname NOT LIKE 'pg\\\\_%'";                               
index 0ff6737d6c369c661d90d0afcc528dc59304d1b2..183e1760c5a95f3d81f6ab8722400d5ab8de539f 100644 (file)
@@ -4,7 +4,7 @@
  * A class that implements the DB interface for Postgres
  * Note: This class uses ADODB and returns RecordSets.
  *
- * $Id: Postgres73.php,v 1.111 2004/05/26 13:54:43 chriskl Exp $
+ * $Id: Postgres73.php,v 1.112 2004/05/28 07:41:36 chriskl Exp $
  */
 
 // @@@ THOUGHT: What about inherits? ie. use of ONLY???
@@ -1328,7 +1328,7 @@ class Postgres73 extends Postgres72 {
                                pn.nspname, NULL, pc.relname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn 
                                WHERE pc.relnamespace=pn.oid AND relkind IN ('r', 'v', 'S') AND relname ILIKE '%{$term}%' {$where}
                        UNION ALL
-                       SELECT 'COLUMN', NULL, pn.nspname, pc.relname, pa.attname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn,
+                       SELECT CASE WHEN pc.relkind='r' THEN 'COLUMNTABLE' ELSE 'COLUMNVIEW' END, NULL, pn.nspname, pc.relname, pa.attname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn,
                                pg_catalog.pg_attribute pa WHERE pc.relnamespace=pn.oid AND pc.oid=pa.attrelid 
                                AND pa.attname ILIKE '%{$term}%' AND pa.attnum > 0 AND NOT pa.attisdropped AND pc.relkind IN ('r', 'v') {$where}
                        UNION ALL
index ff73ff58f6512d02d6f545ed651038ee1e7b856a..2c8671b79224fe9af144a245eca6e6e781d3d71e 100755 (executable)
@@ -3,7 +3,7 @@
        /**
         * Manage schemas within a database
         *
-        * $Id: database.php,v 1.44 2004/05/26 23:40:20 soranzo Exp $
+        * $Id: database.php,v 1.45 2004/05/28 07:41:36 chriskl Exp $
         */
 
        // Include application functions
                                while (!$rs->EOF) {
                                        // Output a new header if the current type has changed, but not if it's just changed the rule type
                                        if ($rs->f['type'] != $curr) {
-                                               // Short-circuit in the case of changing from table rules to view rules
+                                               // Short-circuit in the case of changing from table rules to view rules or table cols to view cols
                                                if ($rs->f['type'] == 'RULEVIEW' && $curr == 'RULETABLE') {
                                                        $curr = $rs->f['type'];
                                                }
+                                               elseif ($rs->f['type'] == 'COLUMNVIEW' && $curr == 'COLUMNTABLE') {
+                                                       $curr = $rs->f['type'];
+                                               }
                                                else {
                                                        if ($curr != '') echo "</ul>\n";
                                                        $curr = $rs->f['type'];
@@ -71,7 +74,8 @@
                                                                case 'SEQUENCE':
                                                                        echo $lang['strsequences'];
                                                                        break;
-                                                               case 'COLUMN':
+                                                               case 'COLUMNTABLE':
+                                                               case 'COLUMNVIEW':
                                                                        echo $lang['strcolumns'];
                                                                        break;
                                                                case 'INDEX':
                                                        echo "<li><a href=\"sequences.php?action=properties&amp;{$misc->href}&amp;schema=", urlencode($rs->f['schemaname']), 
                                                                "&amp;sequence=", urlencode($rs->f['name']), "\">", $misc->printVal($prefix), _highlight($misc->printVal($rs->f['name']), $_GET['term']), "</a></li>\n";
                                                        break;
-                                               case 'COLUMN':
+                                               case 'COLUMNTABLE':
                                                        echo "<li><a href=\"tblproperties.php?{$misc->href}&amp;schema=", urlencode($rs->f['schemaname']), "&amp;table=", 
                                                                urlencode($rs->f['relname']), "&amp;column=", urlencode($rs->f['name']), "&amp;action=properties\">", 
                                                                $misc->printVal($prefix), $misc->printVal($rs->f['relname']), '.', _highlight($misc->printVal($rs->f['name']), $_GET['term']), "</a></li>\n";
                                                        break;
+                                               case 'COLUMNVIEW':
+                                                       echo "<li><a href=\"viewproperties.php?{$misc->href}&amp;schema=", urlencode($rs->f['schemaname']), "&amp;view=", 
+                                                               urlencode($rs->f['relname']), "&amp;column=", urlencode($rs->f['name']), "&amp;action=properties\">", 
+                                                               $misc->printVal($prefix), $misc->printVal($rs->f['relname']), '.', _highlight($misc->printVal($rs->f['name']), $_GET['term']), "</a></li>\n";
+                                                       break;
                                                case 'INDEX':
                                                        echo "<li><a href=\"indexes.php?{$misc->href}&amp;schema=", urlencode($rs->f['schemaname']), "&amp;table=", 
                                                                urlencode($rs->f['relname']), "\">",