Index: wp-admin/maint/repair.php
===================================================================
--- wp-admin/maint/repair.php	(revision 12644)
+++ wp-admin/maint/repair.php	(working copy)
@@ -31,10 +31,8 @@
 
 	$okay = true;
 
-	// Loop over the WP tables, checking and repairing as needed.
-	foreach ($wpdb->tables as $table) {
-		if ( in_array($table, $wpdb->old_tables) )
-			continue;
+	// Loop over the WP tables, checking and repairing as needed.	
+	foreach ($wpdb->get_tables() as $table) {
 
 		$check = $wpdb->get_row("CHECK TABLE {$wpdb->prefix}$table");
 		if ( 'OK' == $check->Msg_text ) {
Index: wp-includes/wp-db.php
===================================================================
--- wp-includes/wp-db.php	(revision 12644)
+++ wp-includes/wp-db.php	(working copy)
@@ -1129,6 +1129,39 @@
 	function db_version() {
 		return preg_replace('/[^0-9.].*/', '', mysql_get_server_info( $this->dbh ));
 	}
+	
+	/**
+	 * get tables
+	 * 
+	 * get list of a set of tables
+	 * 
+	 * Sets:
+	 * 
+	 *   all     : all names
+	 *   current : active tables
+	 *   old     : deprecated tables 
+	 * 
+	 * 
+	 * @param  string $set (optional) 'all', 'current' or 'old'. defaults to 'current'
+	 * @return array  list of old table names (w/o prefix), false on error
+	 */
+	function get_tables( $set = 'current' ) {
+		$tables = false;
+		
+		switch ( $set ) {
+			case 'all':
+				$tables = $this->tables;
+				break;				
+			case 'current':
+				$tables = array_diff( $this->tables, $this->old_tables );
+				break;				
+			case 'old':
+				$tables = $this->old_tables;
+				break;
+		}
+
+		return $tables;
+	}
 }
 
 if ( ! isset($wpdb) ) {
