Do not insert page titles into querycache.qc_value
authormszabo-wikia <mszabo@wikia-inc.com>
Wed, 14 Mar 2018 14:38:14 +0000 (15:38 +0100)
committerReedy <reedy@wikimedia.org>
Mon, 4 Nov 2019 17:49:05 +0000 (17:49 +0000)
commit4d8248ff97278627902974bd1726c6a3c0a70f50
tree8fe43276a448c989f5efc9ec6fd25170fe72f74d
parent6504d6460eb1a0d6cebbc7d973b3e685674368fd
Do not insert page titles into querycache.qc_value

querycache.qc_value column is used to store a numeric value related
to the query results, generally a COUNT(*) aggregation or timestamp,
but some query pages insert the page title here after passing it through
PHP's intval() function to parse it into a number.
While this will cause 0 to be inserted for pages whose title is not numeric
(i.e. most titles), a DB error may occur for numeric page titles that exceed
the maximum value for unsigned integers, depending on relevant DB settings,
such as MySQL's strict mode.[1]

This patch changes query pages not to insert page titles into the qc_value
column. Also, it adds the getOrderFields() method to query pages that were
missing them, to ensure that the result set inserted into the querycache
table is correctly ordered by title.

---
[1] https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sql-mode-strict

Bug: T181658
Change-Id: I1ef297257c6f419826ba4ffc6e875389ccec46db
includes/specials/SpecialBrokenRedirects.php
includes/specials/SpecialDoubleRedirects.php
includes/specials/SpecialListredirects.php
includes/specials/SpecialLonelypages.php
includes/specials/SpecialUncategorizedimages.php
includes/specials/SpecialUncategorizedpages.php
includes/specials/SpecialUnusedcategories.php
includes/specials/SpecialUnusedtemplates.php
includes/specials/SpecialWithoutinterwiki.php
tests/phpunit/includes/specials/SpecialUncategorizedcategoriesTest.php