* 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
* 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???
$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);
}
* 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');
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);
}
/**
* 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&server={$_REQUEST['server']}&database={$_REQUEST['database']}&",
+ '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&{$misc->href}&table=", urlencode($_REQUEST['table']), "\">{$lang['strcreatetrigger']}</a></p>\n";