X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=maintenance%2FbackupTextPass.inc;h=7aac4d4a6a0d50ff9e7d09a819f8e6b67ed44200;hb=f3b38123cbd8ac70dcdcbbd5489c588038fc317e;hp=547abab1b1d1e970af2387de1af8c95f84db9256;hpb=59f06176c3598c9ed46ed4f08317a656f0e82b62;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/backupTextPass.inc b/maintenance/backupTextPass.inc index 547abab1b1..7aac4d4a6a 100644 --- a/maintenance/backupTextPass.inc +++ b/maintenance/backupTextPass.inc @@ -24,7 +24,7 @@ * @ingroup Maintenance */ -require_once( __DIR__ . '/backup.inc' ); +require_once __DIR__ . '/backup.inc'; /** * @ingroup Maintenance @@ -414,6 +414,8 @@ class TextPassDumper extends BackupDumper { * @throws MWException */ function getText( $id ) { + global $wgContentHandlerUseDB; + $prefetchNotTried = true; // Whether or not we already tried to get the text via prefetch. $text = false; // The candidate for a good text. false if no proper value. $failures = 0; // The number of times, this invocation of getText already failed. @@ -479,7 +481,23 @@ class TextPassDumper extends BackupDumper { if ( ! isset( $this->db ) ) { throw new MWException( "No database available" ); } - $revLength = $this->db->selectField( 'revision', 'rev_len', array( 'rev_id' => $revID ) ); + + $revLength = strlen( $text ); + if ( $wgContentHandlerUseDB ) { + $row = $this->db->selectRow( 'revision', array( 'rev_len', 'rev_content_model' ), array( 'rev_id' => $revID ), __METHOD__ ); + if ( $row ) { + // only check the length for the wikitext content handler, + // it's a wasted (and failed) check otherwise + if ( $row->rev_content_model == CONTENT_MODEL_WIKITEXT ) { + $revLength = $row->rev_len; + } + } + + } + else { + $revLength = $this->db->selectField( 'revision', 'rev_len', array( 'rev_id' => $revID ) ); + } + if ( strlen( $text ) == $revLength ) { if ( $tryIsPrefetch ) { $this->prefetchCount++;