Not sure when this started, but every time I run update.php, it processes the whole category links table, and does nothing...
```
Updating category collations...Selecting next 100 pages from cl_from = 0... processing...0 done.
Selecting next 100 pages from cl_from = 100... processing...0 done.
Selecting next 100 pages from cl_from = 200... processing...0 done.
Selecting next 100 pages from cl_from = 300... processing...0 done.
Selecting next 100 pages from cl_from = 400... processing...0 done.
Selecting next 100 pages from cl_from = 500... processing...0 done.
Selecting next 100 pages from cl_from = 600... processing...0 done.
Selecting next 100 pages from cl_from = 700... processing...0 done.
Selecting next 100 pages from cl_from = 800... processing...0 done.
Selecting next 100 pages from cl_from = 900... processing...0 done.
Selecting next 100 pages from cl_from = 1000... processing...0 done.
Selecting next 100 pages from cl_from = 1100... processing...0 done.
Selecting next 100 pages from cl_from = 1200... processing...0 done.
Selecting next 100 pages from cl_from = 1300... processing...0 done.
Selecting next 100 pages from cl_from = 1400... processing...0 done.
Selecting next 100 pages from cl_from = 1500... processing...0 done.
Selecting next 100 pages from cl_from = 1600... processing...0 done.
Selecting next 100 pages from cl_from = 1700... processing...0 done.
Selecting next 100 pages from cl_from = 1800... processing...0 done.
Selecting next 100 pages from cl_from = 1900... processing...0 done.
Selecting next 100 pages from cl_from = 2000... processing...0 done.
Selecting next 100 pages from cl_from = 2100... processing...0 done.
Selecting next 100 pages from cl_from = 2200... processing...0 done.
Selecting next 100 pages from cl_from = 2300... processing...0 done.
Selecting next 100 pages from cl_from = 2400... processing...0 done.
Selecting next 100 pages from cl_from = 2500... processing...0 done.
Selecting next 100 pages from cl_from = 2600... processing...0 done.
Selecting next 100 pages from cl_from = 2700... processing...0 done.
Selecting next 100 pages from cl_from = 2800... processing...0 done.
Selecting next 100 pages from cl_from = 2900... processing...0 done.
Selecting next 100 pages from cl_from = 3000... processing...0 done.
Selecting next 100 pages from cl_from = 3100... processing...0 done.
Selecting next 100 pages from cl_from = 3200... processing...0 done.
Selecting next 100 pages from cl_from = 3300... processing...0 done.
Selecting next 100 pages from cl_from = 3400... processing...0 done.
Selecting next 100 pages from cl_from = 3500... processing...0 done.
Selecting next 100 pages from cl_from = 3600... processing...0 done.
Selecting next 100 pages from cl_from = 3700... processing...0 done.
Selecting next 100 pages from cl_from = 3800... processing...0 done.
Selecting next 100 pages from cl_from = 3900... processing...0 done.
Selecting next 100 pages from cl_from = 4000... processing...0 done.
Selecting next 100 pages from cl_from = 4100... processing...0 done.
Selecting next 100 pages from cl_from = 4200... processing...0 done.
Selecting next 100 pages from cl_from = 4300... processing...0 done.
Selecting next 100 pages from cl_from = 4400... processing...0 done.
0 rows processed
```
Some minor spacing issues in the above (patch up, not tagged against this bug), but...
```lang=php
protected function doCollationUpdate() {
global $wgCategoryCollation;
if ( $this->updateRowExists( 'UpdateCollation::' . $wgCategoryCollation ) ) {
$this->output( "...collations up-to-date.\n" );
return;
}
$this->output( "Updating category collations..." );
$task = $this->maintenance->runChild( UpdateCollation::class );
$task->execute();
$this->output( "...done.\n" );
}
```
It would seem the update log row isn't being written...
Related to {T342854}, and caused by {16b468b515da957398b95c602f9db7a9bd87cdbc}, which added the `updateRowExists` but didn't write it anywhere...