Page MenuHomePhabricator

Some SemanticMediaWiki queries fail due to duplicated table prefix
Closed, DuplicatePublic

Description

[2022-06-08T11:35:25.114705+00:00] exception.ERROR: [f0c6b668a519147c86754de6] /wiki/Support   RuntimeException: Error 1146: Table 'translatewiki_net.bw_`bw_smw_object_ids`' doesn't 
exist
Function: SMW\SQLStore\EntityStore\AuxiliaryFields::fetchCountMap
Query: SELECT  t.smw_id,t.smw_hash,p.smw_countmap  FROM `bw_``bw_smw_object_ids``` `t` JOIN `bw_``bw_smw_object_aux``` `p` ON ((p.smw_id=t.smw_id))   WHERE t.smw_hash = '4dab28b47b0ae35d02a3285c2f01c4c433acde41'  

#0 /srv/mediawiki/workdir/includes/libs/rdbms/database/Database.php(1751): Wikimedia\Rdbms\Database->getQueryException()
#1 /srv/mediawiki/workdir/includes/libs/rdbms/database/Database.php(1725): Wikimedia\Rdbms\Database->getQueryExceptionAndLog()
#2 /srv/mediawiki/workdir/includes/libs/rdbms/database/Database.php(1226): Wikimedia\Rdbms\Database->reportQueryError()
#3 /srv/mediawiki/workdir/includes/libs/rdbms/database/Database.php(1857): Wikimedia\Rdbms\Database->query()
#4 /srv/mediawiki/workdir/includes/libs/rdbms/database/DBConnRef.php(68): Wikimedia\Rdbms\Database->select()
#5 /srv/mediawiki/workdir/includes/libs/rdbms/database/DBConnRef.php(277): Wikimedia\Rdbms\DBConnRef->__call()
#6 /srv/mediawiki/workdir/extensions/SemanticMediaWiki/src/MediaWiki/Connection/Database.php(246): Wikimedia\Rdbms\DBConnRef->select()
#7 /srv/mediawiki/workdir/extensions/SemanticMediaWiki/src/SQLStore/EntityStore/AuxiliaryFields.php(147): SMW\MediaWiki\Connection\Database->select()
#8 /srv/mediawiki/workdir/extensions/SemanticMediaWiki/src/SQLStore/EntityStore/AuxiliaryFields.php(66): SMW\SQLStore\EntityStore\AuxiliaryFields->fetchCountMap()
#9 /srv/mediawiki/workdir/extensions/SemanticMediaWiki/src/SQLStore/EntityStore/EntityIdManager.php(1124): SMW\SQLStore\EntityStore\AuxiliaryFields->prefetchFieldList()
#10 /srv/mediawiki/workdir/extensions/SemanticMediaWiki/src/MediaWiki/Hooks/ArticleViewHeader.php(83): SMW\SQLStore\EntityStore\EntityIdManager->preload()
#11 /srv/mediawiki/workdir/extensions/SemanticMediaWiki/src/MediaWiki/Hooks.php(696): SMW\MediaWiki\Hooks\ArticleViewHeader->process()
#12 /srv/mediawiki/workdir/includes/HookContainer/HookContainer.php(338): SMW\MediaWiki\Hooks->onArticleViewHeader()
#13 /srv/mediawiki/workdir/includes/HookContainer/HookContainer.php(137): MediaWiki\HookContainer\HookContainer->callLegacyHook()
#14 /srv/mediawiki/workdir/includes/HookContainer/HookRunner.php(852): MediaWiki\HookContainer\HookContainer->run()
#15 /srv/mediawiki/workdir/includes/page/Article.php(579): MediaWiki\HookContainer\HookRunner->onArticleViewHeader()
#16 /srv/mediawiki/workdir/includes/page/Article.php(517): Article->generateContentOutput()
#17 /srv/mediawiki/workdir/extensions/LiquidThreads/pages/TalkpageView.php(62): Article->view()
#18 /srv/mediawiki/workdir/extensions/LiquidThreads/pages/TalkpageView.php(286): TalkpageView->showHeader()
#19 /srv/mediawiki/workdir/extensions/LiquidThreads/classes/LqtDispatch.php(67): TalkpageView->show()
#20 /srv/mediawiki/workdir/extensions/LiquidThreads/classes/LqtDispatch.php(223): LqtDispatch::talkpageMain()
#21 /srv/mediawiki/workdir/includes/HookContainer/HookContainer.php(338): LqtDispatch::tryPage()
#22 /srv/mediawiki/workdir/includes/HookContainer/HookContainer.php(137): MediaWiki\HookContainer\HookContainer->callLegacyHook()
#23 /srv/mediawiki/workdir/includes/HookContainer/HookRunner.php(2504): MediaWiki\HookContainer\HookContainer->run()
#24 /srv/mediawiki/workdir/includes/MediaWiki.php(510): MediaWiki\HookContainer\HookRunner->onMediaWikiPerformAction()
#25 /srv/mediawiki/workdir/includes/MediaWiki.php(322): MediaWiki->performAction()
#26 /srv/mediawiki/workdir/includes/MediaWiki.php(916): MediaWiki->performRequest()
#27 /srv/mediawiki/workdir/includes/MediaWiki.php(570): MediaWiki->main()
#28 /srv/mediawiki/workdir/index.php(50): MediaWiki->run()
#29 /srv/mediawiki/workdir/index.php(46): wfIndexMain()
#30 {main}

Reverting rMWdd9b44b16714: rdbms: Move selectSQLText to SQLPlatform locally fixes this. rMWd67c91a36a39: rdbms: make DatabaseSqlite::doSelectDomain() handle table prefix changes does not fix this.

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript
Nikerabbit triaged this task as Unbreak Now! priority.Jun 8 2022, 11:52 AM

Blocks deployment -> UBN!

I am not sure which method exactly is affected. Most queries do work fine.

Nikerabbit renamed this task from Broken queries with prefixed tables to Some queries are broken due to duplicated table prefixes..Jun 8 2022, 11:57 AM
Nikerabbit updated the task description. (Show Details)

FYI I had filed https://github.com/SemanticMediaWiki/SemanticMediaWiki/issues/5261 but I closed it because there was no indication that SMW is at fault here.

Krinkle renamed this task from Some queries are broken due to duplicated table prefixes. to Some SemanticMediaWiki queries fail due to duplicated table prefix.Jun 8 2022, 8:09 PM

It is not only double-prefixing, but it is also double-escaping. That looks a lot like T310214, which might end up fixing this as well.

If it isn't fixed after T310214, then unless there's more information to go on I'd say this is something for the SMW side to investigate first. I do note that SMW re-creates a fair bit of the Database abstraction so it's quite likely that the refactorings in core require it to change some things internally.