* @ingroup Deployment
*/
use Wikimedia\Rdbms\MySQLField;
+use Wikimedia\Rdbms\IDatabase;
use MediaWiki\MediaWikiServices;
/**
[ 'renameIndex', 'l10n_cache', 'lc_lang_key', 'PRIMARY', false,
'patch-l10n_cache-primary-key.sql' ],
[ 'doUnsignedSyncronisation' ],
+
+ // 1.31
+ [ 'addTable', 'slots', 'patch-slots.sql' ],
+ [ 'addTable', 'content', 'patch-content.sql' ],
+ [ 'addTable', 'slot_roles', 'patch-slot_roles.sql' ],
+ [ 'addTable', 'content_models', 'patch-content_models.sql' ],
+ [ 'migrateArchiveText' ],
];
}
) );
}
$sql = "SELECT cur_title, cur_namespace, cur_id, cur_timestamp FROM $cur WHERE ";
- $firstCond = true;
+ $dupeTitles = [];
foreach ( $duplicate as $ns => $titles ) {
- if ( $firstCond ) {
- $firstCond = false;
- } else {
- $sql .= ' OR ';
- }
- $sql .= "( cur_namespace = {$ns} AND cur_title in (";
- $first = true;
- foreach ( $titles as $t ) {
- if ( $first ) {
- $sql .= $this->db->addQuotes( $t );
- $first = false;
- } else {
- $sql .= ', ' . $this->db->addQuotes( $t );
- }
- }
- $sql .= ") ) \n";
+ $dupeTitles[] = "( cur_namespace = {$ns} AND cur_title in ("
+ . $this->db->makeList( $titles ) . ") ) \n";
}
+ $sql .= $this->db->makeList( $dupeTitles, IDatabase::LIST_OR );
# By sorting descending, the most recent entry will be the first in the list.
# All following entries will be deleted by the next while-loop.
$sql .= 'ORDER BY cur_namespace, cur_title, cur_timestamp DESC';
$this->applyPatch( 'patch-templatelinks.sql', false, "Creating templatelinks table" );
$this->output( "Populating...\n" );
- if ( wfGetLB()->getServerCount() > 1 ) {
+ $services = MediaWikiServices::getInstance();
+ if ( $services->getDBLoadBalancer()->getServerCount() > 1 ) {
// Slow, replication-friendly update
$res = $this->db->select( 'pagelinks', [ 'pl_from', 'pl_namespace', 'pl_title' ],
[ 'pl_namespace' => NS_TEMPLATE ], __METHOD__ );
foreach ( $res as $row ) {
$count = ( $count + 1 ) % 100;
if ( $count == 0 ) {
- $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+ $lbFactory = $services->getDBLoadBalancerFactory();
$lbFactory->waitForReplication( [ 'wiki' => wfWikiID() ] );
}
$this->db->insert( 'templatelinks',