diff -ruaN db_maintenance-6.x-1.2/db_maintenance.module db_maintenance/db_maintenance.module --- db_maintenance-6.x-1.2/db_maintenance.module 2009-12-23 21:42:22.000000000 +0200 +++ db_maintenance/db_maintenance.module 2010-12-23 11:40:06.217647252 +0200 @@ -88,11 +88,14 @@ $table_names = array(); // Set the database to query. $previous = db_set_active($db); - if (_db_maintenance_determine_software() == 'mysql') { - $result = db_query('SHOW TABLES'); - } - elseif (_db_maintenance_determine_software() == 'pgsql') { - $result = db_query("SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_name"); + + switch(_db_maintenance_determine_software($db)){ + case 'mysql': + $result = db_query('SHOW TABLES'); + break; + case 'pgsql': + $result = db_query("SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_name"); + break; } // Return to the previously set database. db_set_active($previous); @@ -143,10 +146,10 @@ $previous = db_set_active($db); $table_check_name = $is_prefixed ? str_replace($db_prefix, '', $table_name) : $table_name; if (db_table_exists($table_check_name)) { - if (_db_maintenance_determine_software() == 'mysql') { + if (_db_maintenance_determine_software($db) == 'mysql') { db_query('OPTIMIZE TABLE %s', $table_name); } - elseif (_db_maintenance_determine_software() == 'pgsql') { + elseif (_db_maintenance_determine_software($db) == 'pgsql') { db_query('VACUUM ANALYZE %s', $table_name); } } @@ -231,18 +234,26 @@ /** * Determine which database software is in use */ -function _db_maintenance_determine_software() { +function _db_maintenance_determine_software($db = 'default') { global $db_url; static $db_type; + // Set the databases array if not already set in $db_url. + if (is_array($db_url)) { + $db_url_str = $db_url[$db]; + } + else { + $db_url_str = $db_url; + } + if (!empty($db_type)) { return $db_type; } - elseif (strpos($db_url, 'mysql://') === 0 || strpos($db_url, 'mysqli://') === 0) { + elseif (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; }