The purgeOldText.php script can be used to purge text no longer active on the text table. However, as the text_table description says, this table not only contains revision texts, but can potentially contain blobs from extensions.
For example, AbuseFilter extension stores data there. See storeVarDump method. Log details of past edits are stored there.
Looking at the code of purgeRedundantText it only looks for text referenced from the revision and archive tables. It’s not taking into account extensions, and this could potentially cause data loss.
Note that the purgeRedundantText method is in the Maintenance class, because it’s used by several maintenance scripts, which is scary.
grep for purgeRedundantText on MediaWiki 1.31:
./maintenance/nukeNS.php:93: $this->purgeRedundantText( true );
./maintenance/deleteOrphanedRevisions.php:80: $this->purgeRedundantText( true );
./maintenance/deleteArchivedRevisions.php:59: $this->purgeRedundantText( true );
./maintenance/deleteOldRevisions.php:97: $this->purgeRedundantText( true );
./maintenance/nukePage.php:88: $this->purgeRedundantText( true );
./maintenance/Maintenance.php:1241: public function purgeRedundantText( $delete = true ) {
./maintenance/purgeOldText.php:40: $this->purgeRedundantText( $this->hasOption( 'purge' ) );
After investigating it, I found that, effectively, AbuseFilter log history data was wiped from my database after I ran nukePage.php maintenance script. I find this unacceptable.