From a3f0784b18c27f84399cafe501b71015c87076be Mon Sep 17 00:00:00 2001 From: Brad Jorsch Date: Thu, 23 May 2019 12:58:19 -0400 Subject: [PATCH] API: Add IGNORE INDEX to avoid bad plan in ApiQueryRevisions None of the queries generated by ApiQueryRevisions should be using the `rev_timestamp` index, but MariaDB is insisting on doing so for one particular query anyway. Bug: T224017 Change-Id: I9476532d5896d9ba901c4c7398890bfecb1a318d --- includes/api/ApiQueryRevisions.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/includes/api/ApiQueryRevisions.php b/includes/api/ApiQueryRevisions.php index e60835bb02..ee6a264281 100644 --- a/includes/api/ApiQueryRevisions.php +++ b/includes/api/ApiQueryRevisions.php @@ -389,6 +389,10 @@ class ApiQueryRevisions extends ApiQueryRevisionsBase { $this->addOption( 'LIMIT', $this->limit + 1 ); + // T224017: `rev_timestamp` is never the correct index to use for this module, but + // MariaDB (10.1.37-39) sometimes insists on trying to use it anyway. Tell it not to. + $this->addOption( 'IGNORE INDEX', [ 'revision' => 'rev_timestamp' ] ); + $count = 0; $generated = []; $hookData = []; -- 2.20.1