Do not add limit to ApiQueryPagePropNames when database type is mysql
authorAmir Sarabadani <ladsgroup@gmail.com>
Mon, 24 Apr 2017 12:58:51 +0000 (17:28 +0430)
committerGergő Tisza <gtisza@wikimedia.org>
Mon, 24 Apr 2017 14:00:12 +0000 (14:00 +0000)
It's a known bug in some versions of mysql (including WMF dbs) that it
won't do a loose index scan when a limit is applied. Given that number
of possible types is still very low, this shouldn't be a problem.
More info: https://bugs.mysql.com/bug.php?id=61517

Bug: T115825
Change-Id: I4c3b885ac05b793088a92e054a38a36b9d07c0d4

includes/api/ApiQueryPagePropNames.php

index 4966bcd..ff97668 100644 (file)
@@ -57,7 +57,11 @@ class ApiQueryPagePropNames extends ApiQueryBase {
                }
 
                $limit = $params['limit'];
-               $this->addOption( 'LIMIT', $limit + 1 );
+
+               // mysql has issues with limit in loose index T115825
+               if ( $this->getDB()->getType() !== 'mysql' ) {
+                       $this->addOption( 'LIMIT', $limit + 1 );
+               }
 
                $result = $this->getResult();
                $count = 0;