From 5df07f5b9f7aa840891f15ec628c7c9507beec6b Mon Sep 17 00:00:00 2001 From: Robert Treat Date: Thu, 19 Feb 2009 11:29:48 -0500 Subject: [PATCH] postgres 8.4 replaces pg_autovacuum system table with reloptions on the tables themselves, so we need to avoid trying to show this in future versions. I think this might be the first feature we have both coming and going --- classes/database/Postgres.php | 1 + classes/database/Postgres80.php | 1 + classes/database/Postgres83.php | 3 + database.php | 122 +++++++++++++++++--------------- 4 files changed, 69 insertions(+), 58 deletions(-) diff --git a/classes/database/Postgres.php b/classes/database/Postgres.php index e0a0108e..e459f7f6 100755 --- a/classes/database/Postgres.php +++ b/classes/database/Postgres.php @@ -7480,6 +7480,7 @@ class Postgres extends ADODB_base { function hasAlterTrigger() { return true; } function hasAnalyze() { return true; } function hasAutovacuum() { return true; } + function hasAutovacuumSysTable() { return false; } function hasCasts() { return true; } function hasCompositeTypes() { return true; } function hasConstraintsInfo() { return true; } diff --git a/classes/database/Postgres80.php b/classes/database/Postgres80.php index 1e1d6ce9..0cb4263b 100644 --- a/classes/database/Postgres80.php +++ b/classes/database/Postgres80.php @@ -318,6 +318,7 @@ class Postgres80 extends Postgres81 { function hasAggregateSortOp() { return false; } function hasAlterTableSchema() { return false; } function hasAutovacuum() { return false; } + function hasAutovacuumSysTable() { return false; } function hasDisableTriggers() { return false; } function hasFunctionAlterSchema() { return false; } function hasPreparedXacts() { return false; } diff --git a/classes/database/Postgres83.php b/classes/database/Postgres83.php index 49f704c9..f8e3a505 100644 --- a/classes/database/Postgres83.php +++ b/classes/database/Postgres83.php @@ -26,6 +26,9 @@ class Postgres83 extends Postgres { include_once('./help/PostgresDoc83.php'); return $this->help_page; } + + function hasAutovacuumSysTable() { return true; } + } ?> diff --git a/database.php b/database.php index c730a0ad..789ef23a 100755 --- a/database.php +++ b/database.php @@ -621,67 +621,73 @@ $enabled = $data->getVariable('autovacuum'); echo "

{$lang['strautovacuum']}

"; echo '

' . (($enabled->fields['autovacuum'] == 'on') ? $lang['strturnedon'] : $lang['strturnedoff'] ) . '

'; - // Fetch the processes from the database - $autovac = $data->getAutovacuum(); - - $columns = array( - 'namespace' => array( - 'title' => $lang['strschema'], - 'field' => field('nspname'), - ), - 'relname' => array( - 'title' => $lang['strtable'], - 'field' => field('relname'), - ), - 'enabled' => array( - 'title' => $lang['strenabled'], - 'field' => field('enabled'), - ), - 'vac_base_thresh' => array( - 'title' => $lang['strvacuumbasethreshold'], - 'field' => field('vac_base_thresh'), - ), - 'vac_scale_factor' => array( - 'title' => $lang['strvacuumscalefactor'], - 'field' => field('vac_scale_factor'), - ), - 'anl_base_thresh' => array( - 'title' => $lang['stranalybasethreshold'], - 'field' => field('anl_base_thresh'), - ), - 'anl_scale_factor' => array( - 'title' => $lang['stranalyzescalefactor'], - 'field' => field('anl_scale_factor'), - ), - 'vac_cost_delay' => array( - 'title' => $lang['strvacuumcostdelay'], - 'field' => field('vac_cost_delay'), - ), - 'vac_cost_limit' => array( - 'title' => $lang['strvacuumcostlimit'], - 'field' => field('vac_cost_limit'), - ), - ); - // Maybe we need to check permissions here? - $columns['actions'] = array('title' => $lang['stractions']); + if($data->hasAutovacuumSysTable()) { + + // Fetch the processes from the database + $autovac = $data->getAutovacuum(); + + $columns = array( + 'namespace' => array( + 'title' => $lang['strschema'], + 'field' => field('nspname'), + ), + 'relname' => array( + 'title' => $lang['strtable'], + 'field' => field('relname'), + ), + 'enabled' => array( + 'title' => $lang['strenabled'], + 'field' => field('enabled'), + ), + 'vac_base_thresh' => array( + 'title' => $lang['strvacuumbasethreshold'], + 'field' => field('vac_base_thresh'), + ), + 'vac_scale_factor' => array( + 'title' => $lang['strvacuumscalefactor'], + 'field' => field('vac_scale_factor'), + ), + 'anl_base_thresh' => array( + 'title' => $lang['stranalybasethreshold'], + 'field' => field('anl_base_thresh'), + ), + 'anl_scale_factor' => array( + 'title' => $lang['stranalyzescalefactor'], + 'field' => field('anl_scale_factor'), + ), + 'vac_cost_delay' => array( + 'title' => $lang['strvacuumcostdelay'], + 'field' => field('vac_cost_delay'), + ), + 'vac_cost_limit' => array( + 'title' => $lang['strvacuumcostlimit'], + 'field' => field('vac_cost_limit'), + ), + ); + + // Maybe we need to check permissions here? + $columns['actions'] = array('title' => $lang['stractions']); + + $actions = array( + 'edit' => array( + 'title' => $lang['stredit'], + 'url' => "database.php?action=editautovac&schema=pg_catalog&{$misc->href}&", + 'vars' => array('key[vacrelid]' => 'vacrelid') + ), + 'delete' => array( + 'title' => $lang['strdelete'], + 'url' => "database.php?action=delautovac&{$misc->href}&", + 'vars' => array('key[vacrelid]' => 'vacrelid') + ) + ); + + $misc->printTable($autovac, $columns, $actions, $lang['strnodata']); + + } - $actions = array( - 'edit' => array( - 'title' => $lang['stredit'], - 'url' => "database.php?action=editautovac&schema=pg_catalog&{$misc->href}&", - 'vars' => array('key[vacrelid]' => 'vacrelid') - ), - 'delete' => array( - 'title' => $lang['strdelete'], - 'url' => "database.php?action=delautovac&{$misc->href}&", - 'vars' => array('key[vacrelid]' => 'vacrelid') - ) - ); - - $misc->printTable($autovac, $columns, $actions, $lang['strnodata']); } - + break; } } -- 2.39.5