SECURITY: LogPager: Don't STRAIGHT_JOIN when using log_search
authorBrad Jorsch <bjorsch@wikimedia.org>
Thu, 2 May 2019 17:54:42 +0000 (10:54 -0700)
committerJames D. Forrester <jforrester@wikimedia.org>
Thu, 2 May 2019 17:54:42 +0000 (10:54 -0700)
We'll hope MariaDB doesn't trigger T221458 in that situation.

Bug: T222324
Signed-off-by: Scott Bassett <sbassett@deploy1001.eqiad.wmnet>
Signed-off-by: James D. Forrester <jforrester@wikimedia.org>
Change-Id: I06364e9d0bce45bd97b2ec837d1f479feff76699

includes/logging/LogPager.php

index 0eeb544..4ecc368 100644 (file)
@@ -337,9 +337,9 @@ class LogPager extends ReverseChronologicalPager {
 
                // T221458: MySQL/MariaDB (10.1.37) can sometimes irrationally decide that querying `actor` before
                // `logging` and filesorting is somehow better than querying $limit+1 rows from `logging`.
-               // Tell it not to reorder the query. But not when tag filtering was used, as it seems as likely
-               // to be harmed as helped in that case.
-               if ( !$this->mTagFilter ) {
+               // Tell it not to reorder the query. But not when tag filtering or log_search was used, as it
+               // seems as likely to be harmed as helped in that case.
+               if ( !$this->mTagFilter && !array_key_exists( 'ls_field', $this->mConds ) ) {
                        $options[] = 'STRAIGHT_JOIN';
                }