Page MenuHomePhabricator

PHP Notice: Array to string conversion in Special:NewFiles
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error
normalized_message
[{reqId}] {exception_url}   PHP Notice: Array to string conversion
exception.trace
from /srv/mediawiki/php-1.40.0-wmf.7/includes/pager/RangeChronologicalPager.php(53)
#0 /srv/mediawiki/php-1.40.0-wmf.7/includes/pager/RangeChronologicalPager.php(53): MWExceptionHandler::handleError(integer, string, string, integer, array)
#1 /srv/mediawiki/php-1.40.0-wmf.7/includes/specials/pagers/NewFilesPager.php(82): RangeChronologicalPager->getDateRangeCond(string, string)
#2 /srv/mediawiki/php-1.40.0-wmf.7/includes/specials/SpecialNewFiles.php(133): NewFilesPager->__construct(DerivativeContext, MediaWiki\Permissions\GroupPermissionsLookup, MediaWiki\Cache\LinkBatchFactory, MediaWiki\Linker\LinkRenderer, Wikimedia\Rdbms\LoadBalancer, FormOptions)
#3 /srv/mediawiki/php-1.40.0-wmf.7/includes/specialpage/SpecialPage.php(701): SpecialNewFiles->execute(NULL)
#4 /srv/mediawiki/php-1.40.0-wmf.7/includes/specialpage/SpecialPageFactory.php(1451): SpecialPage->run(NULL)
#5 /srv/mediawiki/php-1.40.0-wmf.7/includes/MediaWiki.php(316): MediaWiki\SpecialPage\SpecialPageFactory->executePath(string, RequestContext)
#6 /srv/mediawiki/php-1.40.0-wmf.7/includes/MediaWiki.php(904): MediaWiki->performRequest()
#7 /srv/mediawiki/php-1.40.0-wmf.7/includes/MediaWiki.php(562): MediaWiki->main()
#8 /srv/mediawiki/php-1.40.0-wmf.7/index.php(50): MediaWiki->run()
#9 /srv/mediawiki/php-1.40.0-wmf.7/index.php(46): wfIndexMain()
#10 /srv/mediawiki/w/index.php(3): require(string)
#11 {main}
normalized_message
[{reqId}] {exception_url}   Wikimedia\Rdbms\DBQueryError: Error 1054: Unknown column 'Array' in 'where clause'
Function: IndexPager::buildQueryInfo (NewFilesPager)
Query: SELECT  /*! STRAIGHT_JOIN */ img_name,img_timestamp,actor_user,actor_name  FROM `ima
exception.trace
from /srv/mediawiki/php-1.40.0-wmf.7/includes/libs/rdbms/database/Database.php(1558)
#0 /srv/mediawiki/php-1.40.0-wmf.7/includes/libs/rdbms/database/Database.php(1542): Wikimedia\Rdbms\Database->getQueryException(string, integer, string, string)
#1 /srv/mediawiki/php-1.40.0-wmf.7/includes/libs/rdbms/database/Database.php(1516): Wikimedia\Rdbms\Database->getQueryExceptionAndLog(string, integer, string, string)
#2 /srv/mediawiki/php-1.40.0-wmf.7/includes/libs/rdbms/database/Database.php(892): Wikimedia\Rdbms\Database->reportQueryError(string, integer, string, string, boolean)
#3 /srv/mediawiki/php-1.40.0-wmf.7/includes/libs/rdbms/database/Database.php(1648): Wikimedia\Rdbms\Database->query(string, string, integer)
#4 /srv/mediawiki/php-1.40.0-wmf.7/includes/libs/rdbms/database/DBConnRef.php(119): Wikimedia\Rdbms\Database->select(array, array, array, string, array, array)
#5 /srv/mediawiki/php-1.40.0-wmf.7/includes/libs/rdbms/database/DBConnRef.php(338): Wikimedia\Rdbms\DBConnRef->__call(string, array)
#6 /srv/mediawiki/php-1.40.0-wmf.7/includes/pager/IndexPager.php(460): Wikimedia\Rdbms\DBConnRef->select(array, array, array, string, array, array)
#7 /srv/mediawiki/php-1.40.0-wmf.7/includes/pager/IndexPager.php(277): IndexPager->reallyDoQuery(string, integer, boolean)
#8 /srv/mediawiki/php-1.40.0-wmf.7/includes/pager/IndexPager.php(564): IndexPager->doQuery()
#9 /srv/mediawiki/php-1.40.0-wmf.7/includes/specials/SpecialNewFiles.php(141): IndexPager->getBody()
#10 /srv/mediawiki/php-1.40.0-wmf.7/includes/specialpage/SpecialPage.php(701): SpecialNewFiles->execute(NULL)
#11 /srv/mediawiki/php-1.40.0-wmf.7/includes/specialpage/SpecialPageFactory.php(1451): SpecialPage->run(NULL)
#12 /srv/mediawiki/php-1.40.0-wmf.7/includes/MediaWiki.php(316): MediaWiki\SpecialPage\SpecialPageFactory->executePath(string, RequestContext)
#13 /srv/mediawiki/php-1.40.0-wmf.7/includes/MediaWiki.php(904): MediaWiki->performRequest()
#14 /srv/mediawiki/php-1.40.0-wmf.7/includes/MediaWiki.php(562): MediaWiki->main()
#15 /srv/mediawiki/php-1.40.0-wmf.7/index.php(50): MediaWiki->run()
#16 /srv/mediawiki/php-1.40.0-wmf.7/index.php(46): wfIndexMain()
#17 /srv/mediawiki/w/index.php(3): require(string)
#18 {main}
Notes

Observed initially on mediawikiwiki and commonswiki after deployment of 1.40.0-wmf.7 to groups 0 & 1. I also reproduced it on wikibooks (group 1).

The page fails to render and shows an error. Error reproduces consistently by specifying one of From date or To date fields in the Special:NewFiles page. For example: https://commons.wikimedia.org/wiki/Special:NewFiles?end=2019-05-14

The code seems to be putting together a DB query with a non-existent column Array.

T321551 was logged recently and might be indirectly related.

Details

Request URL
https://commons.wikimedia.org/wiki/Special:NewFiles?end=2019-05-09&limit=500&mediatype%5B%5D=UNKNOWN&mediatype%5B%5D=VIDEO&offset=20051020212952&start=&user=&wpFormIdentifier=specialnewimages
Related Changes in Gerrit:

Event Timeline

The full select is

SELECT /*! STRAIGHT_JOIN */ img_name,img_timestamp,actor_user,actor_name FROM `image` JOIN `actor` ON ((actor_id=img_actor)) LEFT JOIN `user_groups` ON (ug_group = 'bot' AND (ug_user = actor_user) AND (ug_expiry IS NULL OR ug_expiry >= '20221026175134')) WHERE (ug_group IS NULL) AND img_media_type IN ('VIDEO','UNKNOWN') AND (img_timestamp >= '20190509235959') AND (Array<='20190509235959') ORDER BY img_timestamp,img_name LIMIT 1

The array is from https://gerrit.wikimedia.org/r/c/mediawiki/core/+/787832

Change 849636 had a related patch set uploaded (by Umherirrender; author: Umherirrender):

[mediawiki/core@master] specials: RangeChronologicalPager has to use first index column

https://gerrit.wikimedia.org/r/849636

Change 849636 merged by jenkins-bot:

[mediawiki/core@master] specials: RangeChronologicalPager has to use first index column

https://gerrit.wikimedia.org/r/849636