25if ( !defined(
'MEDIAWIKI' ) ) {
28 require_once __DIR__ .
'/../commandLine.inc';
38 $fname =
'resolveStubs';
41 $maxID =
$dbr->selectField(
'text',
'MAX(old_id)',
'', $fname );
43 $numBlocks = intval( $maxID / $blockSize ) + 1;
45 for ( $b = 0; $b < $numBlocks; $b++ ) {
48 printf(
"%5.2f%%\n", $b / $numBlocks * 100 );
49 $start = intval( $maxID / $numBlocks ) * $b + 1;
50 $end = intval( $maxID / $numBlocks ) * ( $b + 1 );
52 $res =
$dbr->select(
'text', [
'old_id',
'old_text',
'old_flags' ],
53 "old_id>=$start AND old_id<=$end " .
54 "AND old_flags LIKE '%object%' AND old_flags NOT LIKE '%external%' " .
55 'AND LOWER(CONVERT(LEFT(old_text,22) USING latin1)) = \'o:15:"historyblobstub"\'',
57 foreach (
$res as $row ) {
58 resolveStub( $row->old_id, $row->old_text, $row->old_flags );
71 $fname =
'resolveStub';
74 $flags = explode(
',', $flags );
79 if ( strtolower( get_class( $stub ) ) !==
'historyblobstub' ) {
80 print "Error found object of class " . get_class( $stub ) .
", expecting historyblobstub\n";
85 # Get the (maybe) external row
86 $externalRow =
$dbr->selectRow(
90 'old_id' => $stub->mOldId,
91 'old_flags' .
$dbr->buildLike(
$dbr->anyString(),
'external',
$dbr->anyString() )
96 if ( !$externalRow ) {
97 # Object wasn't external
101 # Preserve the legacy encoding flag, but switch from object to external
102 if ( in_array(
'utf-8', $flags ) ) {
103 $newFlags =
'external,utf-8';
105 $newFlags =
'external';
109 # print "oldid=$id\n";
110 $dbw->update(
'text',
112 'old_flags' => $newFlags,
113 'old_text' => $externalRow->old_text .
'/' . $stub->mHash
unserialize( $serialized)
wfWaitForSlaves( $ifWritesSince=null, $wiki=false, $cluster=false, $timeout=null)
Waits for the replica DBs to catch up to the master position.
wfGetDB( $db, $groups=[], $wiki=false)
Get a Database object.
while(( $__line=Maintenance::readconsole()) !==false) print
resolveStub( $id, $stubText, $flags)
Resolve a history stub.
if(!defined('MEDIAWIKI')) resolveStubs()
Convert history stubs that point to an external row to direct external pointers.