add a column on the triggers' properties page with the called proc. Each proc name...
authorioguix <ioguix>
Wed, 19 Sep 2007 14:42:12 +0000 (14:42 +0000)
committerioguix <ioguix>
Wed, 19 Sep 2007 14:42:12 +0000 (14:42 +0000)
HISTORY
classes/database/Postgres73.php
classes/database/Postgres74.php
triggers.php

diff --git a/HISTORY b/HISTORY
index 062422c4c62d478a6bdfe0e38e165ce479eb4fea..69f2e0f162635ab71dc1c5040616bab696670be3 100644 (file)
--- a/HISTORY
+++ b/HISTORY
@@ -16,6 +16,8 @@ Features
 * Add column about fields constraints type + links in table properties page (ioguix)
 * Support for built-in Full Text Search (Ivan Zolotukhin)  
 * Add alter name, owner & comment on views (ioguix)
+* Add column about called procedure + links to their definition in the triggers
+  properties page (ioguix)
 
 Bugs
 * Fix inability to assign a field type/domain of a different schema
index 7b9903229cfc9756f6e7f1e7f1b4a50731c67fde..e9cdbb658dc814346667eab5c550aa07b546264b 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.166 2007/08/31 18:30:11 ioguix Exp $
+ * $Id: Postgres73.php,v 1.167 2007/09/19 14:42:12 ioguix Exp $
  */
 
 // @@@ THOUGHT: What about inherits? ie. use of ONLY???
@@ -800,16 +800,20 @@ class Postgres73 extends Postgres72 {
                $sql = "SELECT t.tgname, t.tgisconstraint, t.tgdeferrable, t.tginitdeferred, t.tgtype, 
                        t.tgargs, t.tgnargs, t.tgconstrrelid, 
                        (SELECT relname FROM pg_catalog.pg_class c2 WHERE c2.oid=t.tgconstrrelid) AS tgconstrrelname,
-                       p.proname AS tgfname, c.relname, NULL AS tgdef
-                       FROM pg_catalog.pg_trigger t LEFT JOIN pg_catalog.pg_proc p
-                       ON t.tgfoid=p.oid, pg_catalog.pg_class c
+                       p.proname AS tgfname, c.relname, NULL AS tgdef, 
+                       p.proname || ' (' || pg_catalog.oidvectortypes(p.proargtypes) || ')' AS proproto,
+                       ns.nspname AS pronamespace
+                       FROM pg_catalog.pg_namespace ns,
+                               pg_catalog.pg_trigger t LEFT JOIN pg_catalog.pg_proc p
+                                       ON t.tgfoid=p.oid, pg_catalog.pg_class c
                        WHERE t.tgrelid=c.oid
-                       AND c.relname='{$table}'
-                       AND c.relnamespace=(SELECT oid FROM pg_catalog.pg_namespace WHERE nspname='{$this->_schema}')
-                       AND (NOT tgisconstraint OR NOT EXISTS
-                       (SELECT 1 FROM pg_catalog.pg_depend d JOIN pg_catalog.pg_constraint c
-                       ON (d.refclassid = c.tableoid AND d.refobjid = c.oid)
-                       WHERE d.classid = t.tableoid AND d.objid = t.oid AND d.deptype = 'i' AND c.contype = 'f'))";
+                               AND c.relname='{$table}'
+                               AND c.relnamespace=(SELECT oid FROM pg_catalog.pg_namespace WHERE nspname='{$this->_schema}')
+                               AND (NOT tgisconstraint OR NOT EXISTS
+                                       (SELECT 1 FROM pg_catalog.pg_depend d JOIN pg_catalog.pg_constraint c
+                                               ON (d.refclassid = c.tableoid AND d.refobjid = c.oid)
+                                       WHERE d.classid = t.tableoid AND d.objid = t.oid AND d.deptype = 'i' AND c.contype = 'f'))
+                               AND p.pronamespace = ns.oid";
 
                return $this->selectSet($sql);
        }
index c338063d340dbd645f3e620dfb563b99c58ff6a2..7c8718e627b7e02285d5d431b9a3fa657ba7fc21 100644 (file)
@@ -4,7 +4,7 @@
  * A class that implements the DB interface for Postgres
  * Note: This class uses ADODB and returns RecordSets.
  *
- * $Id: Postgres74.php,v 1.60 2007/09/09 20:20:31 ioguix Exp $
+ * $Id: Postgres74.php,v 1.61 2007/09/19 14:42:12 ioguix Exp $
  */
 
 include_once('./classes/database/Postgres73.php');
@@ -280,14 +280,19 @@ class Postgres74 extends Postgres73 {
        function getTriggers($table = '') {
                $this->clean($table);
 
-               $sql = "SELECT t.tgname, pg_catalog.pg_get_triggerdef(t.oid) AS tgdef, t.tgenabled
-                       FROM pg_catalog.pg_trigger t
+               $sql = "SELECT 
+                               t.tgname, pg_catalog.pg_get_triggerdef(t.oid) AS tgdef, t.tgenabled, p.oid AS prooid,
+                               p.proname || ' (' || pg_catalog.oidvectortypes(p.proargtypes) || ')' AS proproto,
+                               ns.nspname AS pronamespace
+                       FROM pg_catalog.pg_trigger t, pg_catalog.pg_proc p, pg_catalog.pg_namespace ns
                        WHERE t.tgrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname='{$table}'
-                       AND relnamespace=(SELECT oid FROM pg_catalog.pg_namespace WHERE nspname='{$this->_schema}'))
-                       AND (NOT tgisconstraint OR NOT EXISTS
-                       (SELECT 1 FROM pg_catalog.pg_depend d    JOIN pg_catalog.pg_constraint c
-                       ON (d.refclassid = c.tableoid AND d.refobjid = c.oid)
-                       WHERE d.classid = t.tableoid AND d.objid = t.oid AND d.deptype = 'i' AND c.contype = 'f'))";
+                               AND relnamespace=(SELECT oid FROM pg_catalog.pg_namespace WHERE nspname='{$this->_schema}'))
+                               AND (NOT tgisconstraint OR NOT EXISTS
+                                               (SELECT 1 FROM pg_catalog.pg_depend d    JOIN pg_catalog.pg_constraint c
+                                                       ON (d.refclassid = c.tableoid AND d.refobjid = c.oid)
+                                               WHERE d.classid = t.tableoid AND d.objid = t.oid AND d.deptype = 'i' AND c.contype = 'f'))
+                               AND p.oid=t.tgfoid
+                               AND p.pronamespace = ns.oid";
 
                return $this->selectSet($sql);
        }
index 5c0ddd96e7aa2f811f03cc20c1ca0c16627510d7..7556a0bbcd9881da88fad09f93a61b1c652752af 100644 (file)
@@ -3,7 +3,7 @@
        /**
         * List triggers on a table
         *
-        * $Id: triggers.php,v 1.36 2007/08/31 18:30:11 ioguix Exp $
+        * $Id: triggers.php,v 1.37 2007/09/19 14:42:12 ioguix Exp $
         */
 
        // Include application functions
                                'title' => $lang['strdefinition'],
                                'field' => field('+tgdef'),
                        ),
+                       'function' => array(
+                               'title' => $lang['strfunction'],
+                               'field' => field('proproto'),
+                               'url' => "functions.php?action=properties&amp;server={$_REQUEST['server']}&amp;database={$_REQUEST['database']}&amp;",
+                               'vars' => array(
+                                       'schema' => 'pronamespace',
+                                       'function' => 'proproto',
+                                       'function_oid' => 'prooid',
+                               ),
+                       ),
                        'actions' => array(
                                'title' => $lang['stractions'],
                        ),
                                'vars'  => array('trigger' => 'tgname'),
                        ),
                );
+               if(!$data->hasSchemas()) unset($columns['function']['vars']['schema']);
                if($data->hasDisableTriggers()) {
                        if(!$data->phpBool($triggers->fields["tgenabled"])) {
                                $actions['enable'] = array(
                }
 
                if (!$data->hasAlterTrigger()) unset($actions['alter']);
-               
+
                $misc->printTable($triggers, $columns, $actions, $lang['strnotriggers'], 'tgPre');
                
                echo "<p><a class=\"navlink\" href=\"triggers.php?action=create&amp;{$misc->href}&amp;table=", urlencode($_REQUEST['table']), "\">{$lang['strcreatetrigger']}</a></p>\n";