* A class that implements the DB interface for Postgres
* Note: This class uses ADODB and returns RecordSets.
*
- * $Id: Postgres73.php,v 1.126 2004/07/12 07:13:33 chriskl Exp $
+ * $Id: Postgres73.php,v 1.127 2004/07/13 16:33:36 jollytoad Exp $
*/
// @@@ THOUGHT: What about inherits? ie. use of ONLY???
function &getTables($all = false) {
if ($all) {
// Exclude pg_catalog and information_schema tables
- $sql = "SELECT schemaname AS nspname, tablename AS relname, tableowner AS relname
+ $sql = "SELECT schemaname AS nspname, tablename AS relname, tableowner AS relowner
FROM pg_catalog.pg_tables
WHERE schemaname NOT IN ('pg_catalog', 'information_schema', 'pg_toast')
ORDER BY schemaname, tablename";
function &getIndexes($table = '') {
$this->clean($table);
- /* This select excludes any indexes that are just base indexes for constraints. */
$sql = "SELECT c2.relname AS indname, i.indisprimary, i.indisunique, i.indisclustered,
pg_catalog.pg_get_indexdef(i.indexrelid) AS inddef
FROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index i
WHERE c.relname = '{$table}' AND pg_catalog.pg_table_is_visible(c.oid)
AND c.oid = i.indrelid AND i.indexrelid = c2.oid
- AND 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 = c2.tableoid AND d.objid = c2.oid AND d.deptype = 'i' AND c.contype IN ('u', 'p')
- )
ORDER BY c2.relname";
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.35 2004/07/07 03:00:07 chriskl Exp $
+ * $Id: Postgres74.php,v 1.36 2004/07/13 16:33:37 jollytoad Exp $
*/
include_once('./classes/database/Postgres73.php');
function &getIndexes($table = '') {
$this->clean($table);
- /* This select excludes any indexes that are just base indexes for constraints. */
$sql = "SELECT c2.relname AS indname, i.indisprimary, i.indisunique, i.indisclustered,
pg_catalog.pg_get_indexdef(i.indexrelid, 0, true) AS inddef
FROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index i
WHERE c.relname = '{$table}' AND pg_catalog.pg_table_is_visible(c.oid)
AND c.oid = i.indrelid AND i.indexrelid = c2.oid
- AND 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 = c2.tableoid AND d.objid = c2.oid AND d.deptype = 'i' AND c.contype IN ('u', 'p')
- )
ORDER BY c2.relname";
return $this->selectSet($sql);
/**
* List constraints on a table
*
- * $Id: constraints.php,v 1.34 2004/07/13 16:13:15 jollytoad Exp $
+ * $Id: constraints.php,v 1.35 2004/07/13 16:33:37 jollytoad Exp $
*/
// Include application functions
$action = (isset($_REQUEST['action'])) ? $_REQUEST['action'] : '';
$PHP_SELF = $_SERVER['PHP_SELF'];
- /**
- * Show confirmation of cluster index and perform actual cluster
- */
- function doClusterIndex($confirm) {
- global $data, $misc, $action;
- global $PHP_SELF, $lang;
-
- if ($confirm) {
- // Default analyze to on
- $_REQUEST['analyze'] = true;
-
- echo "<h2>", $misc->printVal($_REQUEST['database']), ": {$lang['strtables']}: ",
- $misc->printVal($_REQUEST['table']), ": " , $misc->printVal($_REQUEST['constraint']), ": {$lang['strcluster']}</h2>\n";
-
- echo "<p>", sprintf($lang['strconfcluster'], $misc->printVal($_REQUEST['constraint'])), "</p>\n";
-
- echo "<form action=\"$PHP_SELF\" method=\"post\">\n";
- echo "<p><input type=\"checkbox\" name=\"analyze\"", (isset($_REQUEST['analyze']) ? ' checked="checked"' : ''), " /> {$lang['stranalyze']}</p>\n";
- echo "<input type=\"hidden\" name=\"action\" value=\"cluster_constraint\" />\n";
- echo "<input type=\"hidden\" name=\"table\" value=\"", htmlspecialchars($_REQUEST['table']), "\" />\n";
- echo "<input type=\"hidden\" name=\"constraint\" value=\"", htmlspecialchars($_REQUEST['constraint']), "\" />\n";
- echo $misc->form;
- echo "<input type=\"submit\" name=\"cluster\" value=\"{$lang['strcluster']}\" />\n";
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$lang['strcancel']}\" />\n";
- echo "</form>\n";
- }
- else {
- $status = $data->clusterIndex($_POST['constraint'], $_POST['table']);
- if ($status == 0)
- if (isset($_POST['analyze'])) {
- $status = $data->analyzeDB($_POST['table']);
- if ($status == 0)
- doDefault($lang['strclusteredgood'] . ' ' . $lang['stranalyzegood']);
- else
- doDefault($lang['stranalyzebad']);
- } else
- doDefault($lang['strclusteredgood']);
- else
- doDefault($lang['strclusteredbad']);
- }
- }
-
- function doReindex() {
- global $data, $lang;
-
- $status = $data->reindex('INDEX', $_REQUEST['constraint']);
- if ($status == 0)
- doDefault($lang['strreindexgood']);
- else
- doDefault($lang['strreindexbad']);
- }
-
/**
* Confirm and then actually add a FOREIGN KEY constraint
*/
echo "<tr>";
echo "<td class=\"data1\" colspan=\"3\"><select name=\"target\">";
while (!$tables->EOF) {
- $key = array('schemaname' => $tables->f['schemaname'], 'tablename' => $tables->f['tablename']);
+ $key = array('schemaname' => $tables->f['nspname'], 'tablename' => $tables->f['relname']);
$key = serialize($key);
echo "<option value=\"", htmlspecialchars($key), "\">";
- if ($data->hasSchemas() && $tables->f['schemaname'] != $_REQUEST['schema']) {
- echo htmlspecialchars($tables->f['schemaname']), '.';
+ if ($data->hasSchemas() && $tables->f['nspname'] != $_REQUEST['schema']) {
+ echo htmlspecialchars($tables->f['nspname']), '.';
}
- echo htmlspecialchars($tables->f['tablename']), "</option>\n";
+ echo htmlspecialchars($tables->f['relname']), "</option>\n";
$tables->moveNext();
}
echo "</select>\n";
global $PHP_SELF;
global $lang;
- function cnPre(&$rowdata, $actions) {
+ function cnPre(&$rowdata) {
global $data, $lang;
if (is_null($rowdata->f['consrc'])) {
$atts = &$data->getAttributeNames($_REQUEST['table'], explode(' ', $rowdata->f['indkey']));
} else {
$rowdata->f['+definition'] = $rowdata->f['consrc'];
}
-
- if ($rowdata->f['contype'] == 'u' || $rowdata->f['contype'] == 'p') {
- $rowdata->f['+clustered'] = $rowdata->f['indisclustered'];
- //$rowdata->f['+clustered'] = $data->phpBool($rowdata->f['indisclustered']) ? $lang['stryes'] : $lang['strno'];
- } else {
- $rowdata->f['+clustered'] = '';
-
- // Disable actions for non index constraints
- $actions['cluster']['disable'] = true;
- $actions['reindex']['disable'] = true;
- return $actions;
- }
}
$misc->printTitle(array($misc->printVal($_REQUEST['database']), $misc->printVal($_REQUEST['table']), $lang['strconstraints']),'constraints');
'field' => '+definition',
'type' => 'pre',
),
- 'clustered' => array(
- 'title' => $lang['strclustered'],
- 'field' => '+clustered',
- 'type' => 'yesno',
- ),
'actions' => array(
'title' => $lang['stractions'],
),
);
$actions = array(
- 'cluster' => array(
- 'title' => $lang['strcluster'],
- 'url' => "{$PHP_SELF}?action=confirm_cluster_constraint&{$misc->href}&table=".urlencode($_REQUEST['table'])."&",
- 'vars' => array('constraint' => 'conname'),
- ),
- 'reindex' => array(
- 'title' => $lang['strreindex'],
- 'url' => "{$PHP_SELF}?action=reindex&{$misc->href}&table=".urlencode($_REQUEST['table'])."&",
- 'vars' => array('constraint' => 'conname'),
- ),
'drop' => array(
'title' => $lang['strdrop'],
- 'url' => "{$PHP_SELF}?action=confirm_drop_index&{$misc->href}&table=".urlencode($_REQUEST['table'])."&",
+ 'url' => "{$PHP_SELF}?action=confirm_drop&{$misc->href}&table=".urlencode($_REQUEST['table'])."&",
'vars' => array('constraint' => 'conname', 'type' => 'contype'),
),
);
$misc->printNav('table','constraints');
switch ($action) {
- case 'cluster_constraint':
- if (isset($_POST['cluster'])) doClusterIndex(false);
- else doDefault();
- break;
- case 'confirm_cluster_constraint':
- doClusterIndex(true);
- break;
- case 'reindex':
- doReindex();
- break;
case 'add_foreign_key':
addForeignKey(1);
break;
/**
* List indexes on a table
*
- * $Id: indexes.php,v 1.30 2004/07/13 16:13:15 jollytoad Exp $
+ * $Id: indexes.php,v 1.31 2004/07/13 16:33:53 jollytoad Exp $
*/
// Include application functions
global $data, $misc;
global $PHP_SELF, $lang;
+ function indPre(&$rowdata, $actions) {
+ global $data, $lang;
+
+ if ($data->phpBool($rowdata->f['indisprimary'])) {
+ $rowdata->f['+constraints'] = $lang['strprimarykey'];
+ $actions['drop']['disable'] = true;
+ }
+ elseif ($data->phpBool($rowdata->f['indisunique'])) {
+ $rowdata->f['+constraints'] = $lang['struniquekey'];
+ $actions['drop']['disable'] = true;
+ }
+ else
+ $rowdata->f['+constraints'] = '';
+
+ return $actions;
+ }
+
$misc->printTitle(array($misc->printVal($_REQUEST['database']), $misc->printVal($_REQUEST['table']), $lang['strindexes']));
$misc->printMsg($msg);
'title' => $lang['strdefinition'],
'field' => 'inddef',
),
+ 'constraints' => array(
+ 'title' => $lang['strconstraints'],
+ 'field' => '+constraints',
+ 'type' => 'verbatim',
+ 'params'=> array('align' => 'center'),
+ ),
'clustered' => array(
'title' => $lang['strclustered'],
'field' => 'indisclustered',
if (!$data->hasIsClustered()) unset($column['clustered']);
- $misc->printTable($indexes, $columns, $actions, $lang['strnoindexes']);
+ $misc->printTable($indexes, $columns, $actions, $lang['strnoindexes'], 'indPre');
echo "<p><a class=\"navlink\" href=\"$PHP_SELF?action=create_index&{$misc->href}&table=", urlencode($_REQUEST['table']), "\">{$lang['strcreateindex']}</a></p>\n";
}