--- db_maintenance.module 2008-10-01 07:43:02.000000000 +0200 +++ db_maintenance_new.module 2009-01-13 17:42:07.000000000 +0200 @@ -88,10 +88,10 @@ function _db_maintenance_list_tables($db $table_names = array(); // Set the database to query. $previous = db_set_active($db); - if (_db_maintenance_determine_software() == 'mysql') { + if (_db_maintenance_determine_software($db) == 'mysql') { $result = db_query('SHOW TABLES'); } - elseif (_db_maintenance_determine_software() == 'pgsql') { + elseif (_db_maintenance_determine_software($db) == 'pgsql') { $result = db_query("SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_name"); } // Return to the previously set database. @@ -163,7 +163,7 @@ function db_maintenance_optimize_tables( // Set the database to query. $previous = db_set_active($db); if (db_table_exists($table_name)) { - if (_db_maintenance_determine_software() == 'mysql') { + if (_db_maintenance_determine_software($db) == 'mysql') { $result = db_query('OPTIMIZE TABLE %s', $table_name); $status = db_fetch_array($result); while($status[] = db_fetch_array($result)) { @@ -171,7 +171,7 @@ function db_maintenance_optimize_tables( } db_maintenance_check_status($status, 'OPTIMIZE'); } - elseif (_db_maintenance_determine_software() == 'pgsql') { + elseif (_db_maintenance_determine_software($db) == 'pgsql') { db_query('VACUUM ANALYZE %s', $table_name); } } @@ -358,18 +358,20 @@ function db_maintenance_admin_settings_v /** * Determine which database software is in use */ -function _db_maintenance_determine_software() { +function _db_maintenance_determine_software($db=NULL) { global $db_url; - static $db_type; - if (!empty($db_type)) { - return $db_type; + if (is_array($db_url)) { // multiple DB definitions + $db_url_str = $db_url[$db]; + } else { + $db_url_str = $db_url; } - elseif (strpos($db_url, 'mysql://') === 0 || strpos($db_url, 'mysqli://') === 0) { + + if (strpos($db_url_str, 'mysql://') === 0 || strpos($db_url_str, 'mysqli://') === 0) { $db_type = 'mysql'; return $db_type; } - elseif (strpos($db_url, 'pgsql://') === 0) { + elseif (strpos($db_url_str, 'pgsql://') === 0) { $db_type = 'pgsql'; return $db_type; }