Add ar_text to the list from Revision::selectArchiveFields(). It is checked later.
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