Add ar_text to the list from Revision::selectArchiveFields(). It is checked later.
authorJoerg <mueller062001-reg@yahoo.de>
Tue, 27 May 2014 13:37:09 +0000 (09:37 -0400)
committerMark A. Hershberger <mah@everybody.org>
Tue, 27 May 2014 13:44:56 +0000 (09:44 -0400)
See Revision::newFromArchiveRow().  This is called from
populateRevisionLength.php's upgradeRow() which ultimately populates
$row from the fields returned by Revision::selectArchiveFields().

Revision::newFromArchiveRow() has the following condition:

if ( isset( $row->ar_text ) && !$row->ar_text_id ) {

And from the bug report:

> for old archived revisions, the rows in the archive table do _not_
> contain a pointer to the text in the text table, but that the text
> is stored in the archive table directly. Obviously the above code
> cannot handle this situation properly.

Credit goes to Joerg who found this and figured out the problem.

Bug: 65765
Change-Id: Iadcaae5e531d439780f5b6095286df78926ccaa7

includes/Revision.php

index 86c3057..a403e37 100644 (file)
@@ -444,6 +444,7 @@ class Revision implements IDBAccessObject {
                        'ar_id',
                        'ar_page_id',
                        'ar_rev_id',
+                       'ar_text',
                        'ar_text_id',
                        'ar_timestamp',
                        'ar_comment',