[datatables] Table name component contains unexpected quote or dot character with SearchPane
Encountered the following error when attempting to enable search pane for some of the datatables. Live demo: https://starcitizen.tools/List_of_pledge_vehicles
Code: internal_api_error_DBLanguageError
Information: [4179acf03d61be85a0234530] Exception caught: Table name component contains unexpected quote or dot character
Error Class: Wikimedia\Rdbms\DBLanguageError
Trace:
Wikimedia\Rdbms\DBLanguageError at /var/www/mediawiki/includes/libs/rdbms/platform/SQLPlatform.php(1154)
from /var/www/mediawiki/includes/libs/rdbms/platform/SQLPlatform.php(1154)
#0 /var/www/mediawiki/includes/libs/rdbms/platform/SQLPlatform.php(1094): Wikimedia\Rdbms\Platform\SQLPlatform->extractTableNameComponents(string)
#1 /var/www/mediawiki/includes/libs/rdbms/platform/SQLPlatform.php(1060): Wikimedia\Rdbms\Platform\SQLPlatform->qualifiedTableComponents(string)
#2 /var/www/mediawiki/includes/libs/rdbms/platform/SQLPlatform.php(1023): Wikimedia\Rdbms\Platform\SQLPlatform->tableName(string)
#3 /var/www/mediawiki/includes/libs/rdbms/platform/SQLPlatform.php(924): Wikimedia\Rdbms\Platform\SQLPlatform->tableNameWithAlias(string, string)
#4 /var/www/mediawiki/includes/libs/rdbms/platform/SQLPlatform.php(711): Wikimedia\Rdbms\Platform\SQLPlatform->tableNamesWithIndexClauseOrJOIN(array, array, array, array)
#5 /var/www/mediawiki/includes/libs/rdbms/database/Database.php(3305): Wikimedia\Rdbms\Platform\SQLPlatform->selectSQLText(array, string, string, string, array, array)
#6 /var/www/mediawiki/includes/libs/rdbms/database/DatabaseMySQL.php(644): Wikimedia\Rdbms\Database->selectSQLText(string, string, string, string, array, array)
#7 /var/www/mediawiki/includes/libs/rdbms/database/Database.php(1337): Wikimedia\Rdbms\DatabaseMySQL->selectSQLText(string, string, string, string, array, array)
#8 /var/www/mediawiki/includes/libs/rdbms/database/Database.php(1296): Wikimedia\Rdbms\Database->select(string, string, string, string, array, array)
#9 /var/www/mediawiki/includes/libs/rdbms/database/DBConnRef.php(127): Wikimedia\Rdbms\Database->selectField(string, string, string, string, array)
#10 /var/www/mediawiki/includes/libs/rdbms/database/DBConnRef.php(338): Wikimedia\Rdbms\DBConnRef->__call(string, array)
#11 /var/www/mediawiki/extensions/SemanticMediaWiki/src/MediaWiki/Connection/Database.php(654): Wikimedia\Rdbms\DBConnRef->selectField(string, string, string, string, array)
#12 /var/www/mediawiki/extensions/SemanticResultFormats/formats/datatables/SearchPanes.php(227): SMW\MediaWiki\Connection\Database->selectField(string, string, string, string, array)
#13 /var/www/mediawiki/extensions/SemanticResultFormats/formats/datatables/SearchPanes.php(73): SRF\DataTables\SearchPanes->getPanesOptions(SMW\Query\PrintRequest, string, array, array)
#14 /var/www/mediawiki/extensions/SemanticResultFormats/formats/datatables/DataTables.php(577): SRF\DataTables\SearchPanes->getSearchPanes(array, array)
#15 /var/www/mediawiki/extensions/SemanticResultFormats/formats/datatables/DataTables.php(424): SRF\DataTables->getResultText(SMW\Query\QueryResult, int)
#16 /var/www/mediawiki/extensions/SemanticMediaWiki/src/Query/ResultPrinters/ResultPrinter.php(302): SRF\DataTables->buildResult(SMW\Query\QueryResult)
#17 /var/www/mediawiki/extensions/SemanticMediaWiki/includes/query/SMW_QueryProcessor.php(345): SMW\Query\ResultPrinters\ResultPrinter->getResult(SMW\Query\QueryResult, array, int)
#18 /var/www/mediawiki/extensions/SemanticMediaWiki/src/ParserFunctions/AskParserFunction.php(363): SMWQueryProcessor::getResultFromQuery(SMWQuery, array, int, int)
#19 /var/www/mediawiki/extensions/SemanticMediaWiki/src/ParserFunctions/AskParserFunction.php(200): SMW\ParserFunctions\AskParserFunction->doFetchResultsFromFunctionParameters(array, array)
#20 /var/www/mediawiki/extensions/SemanticMediaWiki/src/ParserFunctionFactory.php(393): SMW\ParserFunctions\AskParserFunction->parse(array)
#21 /var/www/mediawiki/includes/parser/Parser.php(3436): SMW\ParserFunctionFactory->SMW{closure}(MediaWiki\Parser\Parser, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string) 1
#22 /var/www/mediawiki/includes/parser/Parser.php(3117): MediaWiki\Parser\Parser->callParserFunction(MediaWiki\Parser\PPFrame_Hash, string, array)
#23 /var/www/mediawiki/includes/parser/PPFrame_Hash.php(280): MediaWiki\Parser\Parser->braceSubstitution(array, MediaWiki\Parser\PPFrame_Hash)
#24 /var/www/mediawiki/includes/parser/Parser.php(2951): MediaWiki\Parser\PPFrame_Hash->expand(MediaWiki\Parser\PPNode_Hash_Tree, int)
#25 /var/www/mediawiki/includes/parser/Parser.php(1599): MediaWiki\Parser\Parser->replaceVariables(string)
#26 /var/www/mediawiki/includes/parser/Parser.php(701): MediaWiki\Parser\Parser->internalParse(string)
#27 /var/www/mediawiki/includes/content/WikitextContentHandler.php(384): MediaWiki\Parser\Parser->parse(string, MediaWiki\Title\Title, MediaWiki\Parser\ParserOptions, bool, bool, null)
#28 /var/www/mediawiki/includes/content/ContentHandler.php(1691): MediaWiki\Content\WikitextContentHandler->fillParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams, MediaWiki\Parser\ParserOutput)
#29 /var/www/mediawiki/includes/content/Renderer/ContentRenderer.php(79): MediaWiki\Content\ContentHandler->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Title\Title, null, MediaWiki\Parser\ParserOptions)
#30 /var/www/mediawiki/includes/api/ApiParse.php(155): MediaWiki\Content\Renderer\ContentRenderer->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Title\Title, null, MediaWiki\Parser\ParserOptions)
#31 /var/www/mediawiki/includes/poolcounter/PoolCounterWorkViaCallback.php(73): MediaWiki\Api\ApiParse->MediaWiki\Api{closure}()
#32 /var/www/mediawiki/includes/poolcounter/PoolCounterWork.php(171): MediaWiki\PoolCounter\PoolCounterWorkViaCallback->doWork()
#33 /var/www/mediawiki/includes/api/ApiParse.php(164): MediaWiki\PoolCounter\PoolCounterWork->execute()
#34 /var/www/mediawiki/includes/api/ApiParse.php(440): MediaWiki\Api\ApiParse->getContentParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Title\Title, null, MediaWiki\Parser\ParserOptions)
#35 /var/www/mediawiki/includes/api/ApiMain.php(1974): MediaWiki\Api\ApiParse->execute()
#36 /var/www/mediawiki
Okay I have found more details, live demo: https://starcitizen.tools/User:Alistair3149/sandbox/datatableBug
The error is always reproducible when all of these are true:
- SearchPane is enabled (any column would work)
- The SMW query contains at least one property value that has multiple values
@thomas-topway-it I think it might be related to the SQL queries being done for searchPane.
thank you, this clarifies the problem
I believe this has been fixed upstream in SemanticMediaWiki
SemanticMediaWiki/SemanticMediaWiki@600f520
Will be in 6.0.0 release
@alistair3149 can you please test this ? https://github.com/SemanticMediaWiki/SemanticResultFormats/pull/961 it may fix the problem but requires more testing
I only noticed the changes in feature branch feat-datatables-searchpanes-structured-queries after composing #975 - not sure whether my fix conflicts with your on-going constructions
Update: reading changes happening in #968 , I realized that my fix could be a reasonable hotfix, though in the long run it would be far more maintainable to have a structured searchpanes.
@huaj1ng yeah structured queries provides a solution for the issue that you also patched. Do you have a chance to test this as well https://github.com/SemanticMediaWiki/SemanticResultFormats/pull/968 ?
I will refactor the use of QuerySegmentListProcessor but the logic will remain the same
...Do you have a chance to test this as well #968 ?...
For the current status of the feature branch, I run into:
{"exception":"[object] (RuntimeException(code: 0): Identifier must not contain quote, dot or null characters: got '`smw_fpt_subc`'
#0 /app/bluespice/w/includes/libs/rdbms/platform/SQLPlatform.php(1044): Wikimedia\\Rdbms\\Platform\\SQLPlatform->addIdentifierQuotes()
#1 /app/bluespice/w/includes/libs/rdbms/platform/SQLPlatform.php(924): Wikimedia\\Rdbms\\Platform\\SQLPlatform->tableNameWithAlias()
#2 /app/bluespice/w/includes/libs/rdbms/platform/SQLPlatform.php(711): Wikimedia\\Rdbms\\Platform\\SQLPlatform->tableNamesWithIndexClauseOrJOIN()
#3 /app/bluespice/w/includes/libs/rdbms/database/Database.php(3305): Wikimedia\\Rdbms\\Platform\\SQLPlatform->selectSQLText()
#4 /app/bluespice/w/includes/libs/rdbms/database/DatabaseMySQL.php(644): Wikimedia\\Rdbms\\Database->selectSQLText()
#5 /app/bluespice/w/includes/libs/rdbms/database/Database.php(1337): Wikimedia\\Rdbms\\DatabaseMySQL->selectSQLText()
#6 /app/bluespice/w/includes/libs/rdbms/database/DBConnRef.php(127): Wikimedia\\Rdbms\\Database->select()
#7 /app/bluespice/w/includes/libs/rdbms/database/DBConnRef.php(351): Wikimedia\\Rdbms\\DBConnRef->__call()
#8 /app/bluespice/w/extensions/SemanticMediaWiki/src/MediaWiki/Connection/Database.php(246): Wikimedia\\Rdbms\\DBConnRef->select()
#9 /app/bluespice/w/extensions/SemanticResultFormats/formats/datatables/QuerySegmentListProcessor.php(347): SMW\\MediaWiki\\Connection\\Database->select()
#10 /app/bluespice/w/extensions/SemanticResultFormats/formats/datatables/QuerySegmentListProcessor.php(130): SRF\\DataTables\\QuerySegmentListProcessor->hierarchy()
#11 /app/bluespice/w/extensions/SemanticResultFormats/formats/datatables/QuerySegmentListProcessor.php(143): SRF\\DataTables\\QuerySegmentListProcessor->segment()
#12 /app/bluespice/w/extensions/SemanticResultFormats/formats/datatables/QuerySegmentListProcessor.php(120): SRF\\DataTables\\QuerySegmentListProcessor->table()
#13 /app/bluespice/w/extensions/SemanticResultFormats/formats/datatables/QuerySegmentListProcessor.php(237): SRF\\DataTables\\QuerySegmentListProcessor->segment()
#14 /app/bluespice/w/extensions/SemanticResultFormats/formats/datatables/QuerySegmentListProcessor.php(123): SRF\\DataTables\\QuerySegmentListProcessor->conjunction()
#15 /app/bluespice/w/extensions/SemanticResultFormats/formats/datatables/QuerySegmentListProcessor.php(143): SRF\\DataTables\\QuerySegmentListProcessor->segment()
#16 /app/bluespice/w/extensions/SemanticResultFormats/formats/datatables/QuerySegmentListProcessor.php(120): SRF\\DataTables\\QuerySegmentListProcessor->table()
#17 /app/bluespice/w/extensions/SemanticResultFormats/formats/datatables/QuerySegmentListProcessor.php(114): SRF\\DataTables\\QuerySegmentListProcessor->segment()
#18 /app/bluespice/w/extensions/SemanticResultFormats/formats/datatables/SearchPanes.php(178): SRF\\DataTables\\QuerySegmentListProcessor->process()
#19 /app/bluespice/w/extensions/SemanticResultFormats/formats/datatables/SearchPanes.php(115): SRF\\DataTables\\SearchPanes->getPanesOptions()
#20 /app/bluespice/w/extensions/SemanticResultFormats/formats/datatables/DataTables.php(616): SRF\\DataTables\\SearchPanes->getSearchPanes()
#21 /app/bluespice/w/extensions/SemanticResultFormats/formats/datatables/DataTables.php(434): SRF\\DataTables->getResultText()
#22 /app/bluespice/w/extensions/SemanticMediaWiki/src/Query/ResultPrinters/ResultPrinter.php(302): SRF\\DataTables->buildResult()
#23 /app/bluespice/w/extensions/SemanticMediaWiki/src/MediaWiki/Specials/SpecialAsk.php(493): SMW\\Query\\ResultPrinters\\ResultPrinter->getResult()
#24 /app/bluespice/w/extensions/SemanticMediaWiki/src/MediaWiki/Specials/SpecialAsk.php(307): SMW\\MediaWiki\\Specials\\SpecialAsk->fetchResults()
#25 /app/bluespice/w/extensions/SemanticMediaWiki/src/MediaWiki/Specials/SpecialAsk.php(167): SMW\\MediaWiki\\Specials\\SpecialAsk->makeHTMLResult()
#26 /app/bluespice/w/includes/specialpage/SpecialPage.php(728): SMW\\MediaWiki\\Specials\\SpecialAsk->execute()
#27 /app/bluespice/w/includes/specialpage/SpecialPageFactory.php(1717): MediaWiki\\SpecialPage\\SpecialPage->run()
#28 /app/bluespice/w/includes/actions/ActionEntryPoint.php(504): MediaWiki\\SpecialPage\\SpecialPageFactory->executePath()
#29 /app/bluespice/w/includes/actions/ActionEntryPoint.php(146): MediaWiki\\Actions\\ActionEntryPoint->performRequest()
#30 /app/bluespice/w/includes/MediaWikiEntryPoint.php(200): MediaWiki\\Actions\\ActionEntryPoint->execute()
#31 /app/bluespice/w/index.php(58): MediaWiki\\MediaWikiEntryPoint->run()
#32 {main} at /app/bluespice/w/extensions/SemanticMediaWiki/src/MediaWiki/Connection/Database.php:255)","exception_url":"/w/index.php?title=Special:Ask&","reqId":"d6271e07875a296ef2471d4b","caught_by":"entrypoint"} {"host":"23d358894a77","wiki":"bluespice","mwversion":"1.43.5","reqId":"d6271e07875a296ef2471d4b"}
My wiki is with SMW 6.0.1 (448a112). The test setup is:
- on page
Property:TestMultiValue, add source text[[Has type::Page]] - on page
TestMultiValue/Test_page_1, add source text[[Category:Test Pages]][[TestMultiValue::Main Page]][[TestMultiValue::TestMultiValue]] - on page
TestMultiValue/Test_page_2, add source text[[Category:Test Pages]][[TestMultiValue::Main Page]][[TestMultiValue::TestMultiValue]] - on page
Special:Ask, query with condition[[Category:Test Pages]]and printout?TestMultiValue. This leads to no error with #975 and the error above with #968, where for the options I take DataTables anddatatables: searchpanes.collapse:selected. One can also consider testing with condition[[~TestMultiValue/Test*]]or similar.
thanks a lot, I will check soon