fixing enable/disable triggers for 8.3. This is implemented in a primarily backwards...
authorxzilla <xzilla>
Fri, 30 Nov 2007 07:56:06 +0000 (07:56 +0000)
committerxzilla <xzilla>
Fri, 30 Nov 2007 07:56:06 +0000 (07:56 +0000)
which is designed for replication solutions. It's possible we may want to revamp this whole thing someday, but hard to imagine someone wanting
to.

classes/database/Postgres83.php

index 5fa55ba1df6a56ca7dcff17be32cb460c140c076..3fb93e5cf2e91eba32a893045e61c3b74f0055d8 100644 (file)
@@ -3,7 +3,7 @@
 /**
  * PostgreSQL 8.3 support
  *
- * $Id: Postgres83.php,v 1.13 2007/11/23 17:58:47 xzilla Exp $
+ * $Id: Postgres83.php,v 1.14 2007/11/30 07:56:06 xzilla Exp $
  */
 
 include_once('./classes/database/Postgres82.php');
@@ -800,6 +800,34 @@ class Postgres83 extends Postgres82 {
                return $this->selectSet($sql);
        }
 
+       // Trigger functions
+
+       /**
+        * Grabs a list of triggers on a table
+        * @param $table The name of a table whose triggers to retrieve
+        * @return A recordset
+        */
+       function getTriggers($table = '') {
+               $this->clean($table);
+
+               $sql = "SELECT
+                               t.tgname, pg_catalog.pg_get_triggerdef(t.oid) AS tgdef, 
+                               CASE WHEN t.tgenabled = 'D' THEN FALSE ELSE TRUE END AS 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 p.oid=t.tgfoid
+                               AND p.pronamespace = ns.oid";
+
+               return $this->selectSet($sql);
+       }
+
 
 
        // Capabilities