From 8769c604adab88d43a007b03cc3d5870f8686223 Mon Sep 17 00:00:00 2001 From: chriskl Date: Fri, 28 May 2004 07:41:36 +0000 Subject: [PATCH] Find now finds view columns and links them properly --- BUGS | 2 +- classes/database/Postgres.php | 7 ++++--- classes/database/Postgres73.php | 4 ++-- database.php | 17 +++++++++++++---- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/BUGS b/BUGS index 9580eb7e..7a6e3cec 100644 --- 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 diff --git a/classes/database/Postgres.php b/classes/database/Postgres.php index fff3adab..372d0a4b 100755 --- a/classes/database/Postgres.php +++ b/classes/database/Postgres.php @@ -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\\\\_%'"; diff --git a/classes/database/Postgres73.php b/classes/database/Postgres73.php index 0ff6737d..183e1760 100644 --- a/classes/database/Postgres73.php +++ b/classes/database/Postgres73.php @@ -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 diff --git a/database.php b/database.php index ff73ff58..2c8671b7 100755 --- a/database.php +++ b/database.php @@ -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 @@ -50,10 +50,13 @@ 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 "\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': @@ -139,11 +143,16 @@ echo "
  • href}&schema=", urlencode($rs->f['schemaname']), "&sequence=", urlencode($rs->f['name']), "\">", $misc->printVal($prefix), _highlight($misc->printVal($rs->f['name']), $_GET['term']), "
  • \n"; break; - case 'COLUMN': + case 'COLUMNTABLE': echo "
  • href}&schema=", urlencode($rs->f['schemaname']), "&table=", urlencode($rs->f['relname']), "&column=", urlencode($rs->f['name']), "&action=properties\">", $misc->printVal($prefix), $misc->printVal($rs->f['relname']), '.', _highlight($misc->printVal($rs->f['name']), $_GET['term']), "
  • \n"; break; + case 'COLUMNVIEW': + echo "
  • href}&schema=", urlencode($rs->f['schemaname']), "&view=", + urlencode($rs->f['relname']), "&column=", urlencode($rs->f['name']), "&action=properties\">", + $misc->printVal($prefix), $misc->printVal($rs->f['relname']), '.', _highlight($misc->printVal($rs->f['name']), $_GET['term']), "
  • \n"; + break; case 'INDEX': echo "
  • href}&schema=", urlencode($rs->f['schemaname']), "&table=", urlencode($rs->f['relname']), "\">", -- 2.39.5