All other databases were changed to extend DatabaseBase instead of Database. Database was kept as an alias for DatabaseMysql for compatibility. Existing explicit references to Database that I could find were changed to DatabaseMysql for the sake of clarity. Should cause no functional changes.
51 lines
1.5 KiB
PHP
51 lines
1.5 KiB
PHP
<?php
|
|
|
|
abstract class MediaWiki_TestCase extends PHPUnit_Framework_TestCase {
|
|
/**
|
|
* @param string $serverType
|
|
* @param array $tables
|
|
*/
|
|
protected function buildTestDatabase( $tables ) {
|
|
global $testOptions, $wgDBprefix, $wgDBserver, $wgDBadminuser, $wgDBadminpassword, $wgDBname;
|
|
$wgDBprefix = 'parsertest_';
|
|
$db = new DatabaseMysql(
|
|
$wgDBserver,
|
|
$wgDBadminuser,
|
|
$wgDBadminpassword,
|
|
$wgDBname );
|
|
if( $db->isOpen() ) {
|
|
if (!(strcmp($db->getServerVersion(), '4.1') < 0 and stristr($db->getSoftwareLink(), 'MySQL'))) {
|
|
# Database that supports CREATE TABLE ... LIKE
|
|
foreach ($tables as $tbl) {
|
|
$newTableName = $db->tableName( $tbl );
|
|
#$tableName = $this->oldTableNames[$tbl];
|
|
$tableName = $tbl;
|
|
$db->query("CREATE TEMPORARY TABLE $newTableName (LIKE $tableName)");
|
|
}
|
|
} else {
|
|
# Hack for MySQL versions < 4.1, which don't support
|
|
# "CREATE TABLE ... LIKE". Note that
|
|
# "CREATE TEMPORARY TABLE ... SELECT * FROM ... LIMIT 0"
|
|
# would not create the indexes we need....
|
|
foreach ($tables as $tbl) {
|
|
$res = $db->query("SHOW CREATE TABLE $tbl");
|
|
$row = $db->fetchRow($res);
|
|
$create = $row[1];
|
|
$create_tmp = preg_replace('/CREATE TABLE `(.*?)`/', 'CREATE TEMPORARY TABLE `'
|
|
. $wgDBprefix . '\\1`', $create);
|
|
if ($create === $create_tmp) {
|
|
# Couldn't do replacement
|
|
wfDie( "could not create temporary table $tbl" );
|
|
}
|
|
$db->query($create_tmp);
|
|
}
|
|
|
|
}
|
|
return $db;
|
|
} else {
|
|
// Something amiss
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
|