Extension talk:Cargo

Pins on Openlayers map not clickable on mobile
I can't get the pins on Openlayers maps to be clickable on mobile (or whatever the word is - touchable?). The same query with Google maps works all right. Jonathan3 (talk) 13:23, 9 January 2023 (UTC)


 * Any ideas? :-) Jonathan3 (talk) 22:42, 27 January 2023 (UTC)

Stripmarkers displayed in query output when using Template Styles Extension on wikitext field
We frequently use templates to inject additional information or styling into wikitext, some of which gets stored in the Cargo tables. When the styling is handled by Common.css, all behavior is normal. If the CSS is moved such that it's managed by the TemplateStyles extension, then the Cargo Query will begin to display Strip Markers in the output. How can this be resolved without moving styling back into Common.css?

I attempted to add a link to an example of this error, but Mediawiki would not allow me. 67.191.180.153 18:47, 10 January 2023 (UTC)


 * Do you mean that this error can be seen on a public wiki? If so, could you put the URL here without the "http" part? Yaron Koren (talk) 03:57, 11 January 2023 (UTC)
 * I set up a demo of the error here. The page is a query which displays a wikitext summary. Cargo behaved as intended in the past, but after introducing TemplateStyles, cargo now displays the stripmarkers for the wikitext fileds' template calls. www.dustloop.com/w/User:PrivateTarkus/sandbox 67.191.180.153 05:51, 12 January 2023 (UTC)
 * As a temporary solution, I've disabled Templatestyles for templates which frequently appear within Cargo fields. As expected, this workaround does resolve the issue for now. It seems to be a problem of cross-compatability between Templatestyles and Cargo, @Yaron Koren. 67.191.180.153 14:05, 16 January 2023 (UTC)

Sort from largest to smallest
Hello, how can I sort the rows in the table so that the table starts from 10 to 1, and not 1 to 10. I use Lua. -- Oleksii 212.80.47.83 07:47, 18 January 2023 (UTC)


 * Just add " DESC" at the end of the "order by" value. Yaron Koren (talk) 19:02, 18 January 2023 (UTC)

Compound Query ordering
Cargo 3.3.1

MW 1.39.0

Is it possible to set the Order by so that it affects all the queries in a compound query?

Example query

This has two queries, but the results are displayed in order for each individual query. Temujen510 (talk) 20:12, 21 January 2023 (UTC)


 * Unfortunately, no. Yaron Koren (talk) 01:22, 23 January 2023 (UTC)

Page references in columns not updated after moving page
What is the expected behavior for a Page data type in a Cargo column? I had expected that when I move a page, all references to that page in Cargo table columns would then be updated, but that doesn't appear to be happening. What is the best approach to keeping two tables, one of which references the other's page name, in sync after page moves? Nicholasalanbrown (talk) 02:08, 5 February 2023 (UTC)


 * No, what's in Cargo just reflects what's in the wikitext (well, usually). You can do something like joining on the _pageData table and using its _pageNameOrRedirect field, but I would recommend just using the Replace Text extension. Yaron Koren (talk) 03:27, 6 February 2023 (UTC)

Hide "Go to date" part of calendar
This part of the calendar doesn't look well when the screen is narrow. What is the best way to hide it? I see that one of the calendars linked to on the documentation page is https://icannwiki.org/IG_Hub/Calendar and it does not have the "Go to date" part. Thanks. Jonathan3 (talk) 08:25, 14 February 2023 (UTC)


 * I'd still be interested in a parameter to remove this. It only appears on recent Cargo versiosn (e.g. on https://discoursedb.org/wiki/Opinion_calendar but not on https://icannwiki.org/IG_Hub/Calendar). I've managed to hide it with CSS, but the lack of id's makes it imperfect:



Link do Drilldown
I am trying to put a link to a pre-filtered drilldown on a wiki page. The link looks fine when I hover over it, but I actually click on it the "&" and other special characters get changed. For example, instead of what it should be and is in the hover over  it becomes , and when I click on it I get an error. How would I build a link to a drilldown in a wiki page? Tenbergen (talk) 16:10, 15 February 2023 (UTC)


 * Right - the only solution I can think of is to make an external link (with the full "http..."), instead of an internal link. Yaron Koren (talk) 16:47, 15 February 2023 (UTC)


 * That works for explicit links, thanks! I was trying to generate the links inside a query (I have an aggregate query that provides counts, and want to link to a drilldown that would list the values that are counted). Some of the values have spaces in them, so the only way I can think of to make this work is to enable the "replace" function in SQL and then turn the spaces into "+" to generate the link. This works, but REPLACE seems to be an especially problematic function to enable. Is there a better solution to generate that link? Tenbergen (talk) 18:06, 15 February 2023 (UTC)
 * Oh, I see. That seems fine - I don't see anything wrong with using REPLACE. Yaron Koren (talk) 20:10, 15 February 2023 (UTC)


 * My concern with enabling the replace function was that it might allow re-writing things inside an SQL query, e.g. SQL injection. Maybe I am being paranoid. Tenbergen (talk) 19:17, 16 February 2023 (UTC)

"Recreate data" issue with Mediawiki 1.39.1
I'm getting the following error. I have ran update.php since upgrading Mediawiki and Cargo. Any ideas?

Error 1054: Unknown column 'tl_namespace' in 'where clause'

Function: SpecialCargoRecreateData::getNumPagesThatCallTemplate

Query: SELECT COUNT(*) AS total FROM `page`,`templatelinks` WHERE (tl_from=page_id) AND tl_namespace = 10 AND tl_title = 'CMTS'

Backtrace:

from /var/www/html/wiki/includes/libs/rdbms/database/Database.php(1618)


 * 1) 0 /var/www/html/wiki/includes/libs/rdbms/database/Database.php(1602): Wikimedia\Rdbms\Database->getQueryException


 * 1) 1 /var/www/html/wiki/includes/libs/rdbms/database/Database.php(1576): Wikimedia\Rdbms\Database->getQueryExceptionAndLog


 * 1) 2 /var/www/html/wiki/includes/libs/rdbms/database/Database.php(952): Wikimedia\Rdbms\Database->reportQueryError


 * 1) 3 /var/www/html/wiki/includes/libs/rdbms/database/Database.php(1708): Wikimedia\Rdbms\Database->query


 * 1) 4 /var/www/html/wiki/includes/libs/rdbms/database/DBConnRef.php(103): Wikimedia\Rdbms\Database->select


 * 1) 5 /var/www/html/wiki/includes/libs/rdbms/database/DBConnRef.php(325): Wikimedia\Rdbms\DBConnRef->__call


 * 1) 6 /var/www/html/wiki/extensions/Cargo/includes/specials/SpecialCargoRecreateData.php(164): Wikimedia\Rdbms\DBConnRef->select


 * 1) 7 /var/www/html/wiki/extensions/Cargo/includes/specials/SpecialCargoRecreateData.php(79): SpecialCargoRecreateData->getNumPagesThatCallTemplate


 * 1) 8 /var/www/html/wiki/extensions/Cargo/includes/CargoRecreateDataAction.php(43): SpecialCargoRecreateData->execute


 * 1) 9 /var/www/html/wiki/includes/MediaWiki.php(542): CargoRecreateDataAction->show


 * 1) 10 /var/www/html/wiki/includes/MediaWiki.php(322): MediaWiki->performAction


 * 1) 11 /var/www/html/wiki/includes/MediaWiki.php(904): MediaWiki->performRequest


 * 1) 12 /var/www/html/wiki/includes/MediaWiki.php(562): MediaWiki->main


 * 1) 13 /var/www/html/wiki/index.php(50): MediaWiki->run


 * 1) 14 /var/www/html/wiki/index.php(46): wfIndexMain


 * 1) 15 {main} Brian Coulter (talk) 05:36, 16 February 2023 (UTC)


 * Please make sure you're using version 3.3.1 or higher of Cargo. Yaron Koren (talk) 13:39, 16 February 2023 (UTC)
 * Sure enough, I was on version 3.2. I thought I was on the latest version.  Thank you. Brian Coulter (talk) 15:28, 16 February 2023 (UTC)

Error using Display Format Tree
I have a query that uses format=tree. The query works fine with default format, but when it includes the tree format I get An error occurred while attempting to preview your changes. [Y@6B0PewgK-G5pKpZ7wu1AAAAA8] Caught exception of type TypeError When I enable debug, it gives [Y@0OWaDWU8Gc8kr4BU0dggAAAA8] /index.php?title=Org_Chart&action=submit TypeError: array_key_exists: Argument #2 ($array) must be of type array, CargoFieldDescription given Backtrace: from /.../extensions/Cargo/includes/formats/CargoTreeFormat.php(40) This CargoTreeFormat.php(40) is if ( array_key_exists( 'isList', $fieldDescriptions[$this->mParentField] ) ) { What is actually wrong here? I think an exception isn't being trapped as intended, but I don't understand what. What do I need to change? Tenbergen (talk) 19:23, 16 February 2023 (UTC)


 * Wow! It must have been a long time since anyone tried to use the "tree" format, because there were various things that were not working there - that "isList" check was just one of them. I just checked in a fix, so it all should work better. Yaron Koren (talk) 21:37, 16 February 2023 (UTC)


 * That fixed it! Yes, it's been a problem for a long time, I just had not got back to troubleshooting it. Thanks! Tenbergen (talk) 00:12, 17 February 2023 (UTC)

Add table row [edit link] when using format=template
I'm displaying results in a table, using format=template for the rows. How can I add a Page Forms edit link next to each row? I know this is possible using format=table by adding the parameter "edit link=yes", but I haven't figured out how to do it when using format=template. Note that I'm using unique numbers as the pagename for each country.

Template:Country

Template:Country row









Template:List of countries

120.28.64.1 09:23, 19 February 2023 (UTC)


 * It sounds like you need to add _pageName to the list of fields in the query - and then have #formlink include . Yaron Koren (talk) 16:09, 20 February 2023 (UTC)
 * Thank you very much! 120.28.64.1 17:29, 21 February 2023 (UTC)

Database error when trying to concat a list field in Cargo Query
I was doing some troubleshooting and tried to run a query in the Special Cargo Query. The query is where SecretaryTo is of type "List of Page, delimiter: ,". When I run the query with a text field I get no error. The query runs and provides sort of the expected result when I just use the field, no Concat. But I think I have some blanks or other problem, so I wanted to add the xs before and the ys after. When I do that, get a red crash:
 * [Y-angD@M5u2uPkXmix1j2QAAAA8] 2023-02-22 23:38:40: Fatal exception of type "Wikimedia\Rdbms\DBQueryError"

With debugging enabled it becomes
 * [Y-amLT@M5u2uPkXmix1jdwAAAA8] /index.php?title=Special%3ACargoQuery&tables=Person&fields=CONCAT%28%22xxx%22%2C+Person.SecretaryTo%2C+%22yyy%22%29&where=_pageName%3D%22Tina+Tenbergen%22&join_on=&group_by=&having=&order_by%5B0%5D=&order_by_options%5B0%5D=ASC&limit=&offset=&format= Wikimedia\Rdbms\DBQueryError: A database query error has occurred. Did you forget to run your application's database schema updater after upgrading or after adding a new extension?
 * Please see https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Upgrading and https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:How_to_debug for more information.
 * Error 1054: Unknown column 'mw_cargo__Person.SecretaryTo' in 'field list'
 * Function: CargoQueryPage::reallyDoQuery
 * Query: SELECT CONCAT("xxx", `mw_cargo__Person`.`SecretaryTo`, "yyy") AS `SecretaryTo, "yyy")` FROM `mw_cargo__Person` WHERE (_pageName="Tina Tenbergen") ::ORDER BY CONCAT("xxx",`mw_cargo__Person`.`SecretaryTo__full`, "yyy") LIMIT 1001
 * Backtrace:
 * from /home/ /includes/libs/rdbms/database/Database.php(1618)
 * 0 /home/ /includes/libs/rdbms/database/Database.php(1602): Wikimedia\Rdbms\Database->getQueryException(string, integer, string, string)
 * 1 /home/ /includes/libs/rdbms/database/Database.php(1576): Wikimedia\Rdbms\Database->getQueryExceptionAndLog(string, integer, string, string)
 * 2 /home/ /includes/libs/rdbms/database/Database.php(952): Wikimedia\Rdbms\Database->reportQueryError(string, integer, string, string, boolean)
 * 3 /home/ /includes/libs/rdbms/database/Database.php(1708): Wikimedia\Rdbms\Database->query(string, string, integer)
 * 4 /home/ /includes/specialpage/QueryPage.php(540): Wikimedia\Rdbms\Database->select(array, array, array, string, array, array)
 * 5 /home/ /includes/specialpage/QueryPage.php(726): QueryPage->reallyDoQuery(integer, integer)
 * 6 /home/ /extensions/Cargo/includes/specials/SpecialCargoQuery.php(36): QueryPage->execute(NULL)
 * 7 /home/ /includes/specialpage/SpecialPage.php(701): SpecialCargoQuery->execute(NULL)
 * 8 /home/ /includes/specialpage/SpecialPageFactory.php(1428): SpecialPage->run(NULL)
 * 9 /home/ /includes/MediaWiki.php(316): MediaWiki\SpecialPage\SpecialPageFactory->executePath(string, RequestContext)
 * 10 /home/ /includes/MediaWiki.php(904): MediaWiki->performRequest
 * 11 /home/ /includes/MediaWiki.php(562): MediaWiki->main
 * 12 /home/ /index.php(50): MediaWiki->run
 * 13 /home/ /index.php(46): wfIndexMain
 * 14 {main}
 * 11 /home/ /includes/MediaWiki.php(562): MediaWiki->main
 * 12 /home/ /index.php(50): MediaWiki->run
 * 13 /home/ /index.php(46): wfIndexMain
 * 14 {main}

I suspect something about lists isn't handled right in this context. Tenbergen (talk) 23:37, 22 February 2023 (UTC)


 * A list field is not a string, so it's not surprising that the CONCAT failed. (And actually, list fields aren't even really fields at all - they're "virtual" fields.) I think you can get this query working by replacing  with  . Yaron Koren (talk) 15:45, 23 February 2023 (UTC)


 * Thanks, I got it working with __full. Error Fatal exception of type "Wikimedia\Rdbms\DBQueryError wasn't very helpful, though, and not all query builders would have access to enable debug to show something more helpful. So, I posted it in case you want to turn the error into something more descriptive. Thanks for your help! Tenbergen (talk) 22:31, 2 March 2023 (UTC)

Duplicate results in Special:Drilldown
Any news on this?


 * Extension_talk:Cargo/Archive_June_to_August_2022
 * Phabricator T317306: On Special:Drilldown, a page which matches n selected values on a filter field is displayed n times (instead of just once)]

Thanks. Jonathan3 (talk) 10:41, 2 March 2023 (UTC)


 * No, sorry - I'm guessing it's still a problem? Yaron Koren (talk) 14:49, 2 March 2023 (UTC)
 * Yes, I'm afraid so - quite a big one, for some tables at least.
 * I had a look at the code and added a suggestion on the Phabricator task. Jonathan3 (talk) 21:40, 2 March 2023 (UTC)

Hidden category for pages containing Cargo queries
Is it possible to set this up? Thanks. Jonathan3 (talk) 22:59, 6 March 2023 (UTC)


 * The cargo_backlinks DB table holds the IDs of all pages containing queries - maybe that's good enough? Yaron Koren (talk) 16:55, 7 March 2023 (UTC)
 * That sounds all right. Can it be queried from a wiki page? Jonathan3 (talk) 21:58, 8 March 2023 (UTC)
 * Not really with the current software... what's the ultimate goal? Yaron Koren (talk) 23:25, 8 March 2023 (UTC)
 * I'm considering changing a Cargo table's structure, and wanted to update queries where necessary. I considered writing a short script querying the cargo_backlinks table, but there aren't that many Cargo queries so I think I can just use Extension:ReplaceText (to search for ). Jonathan3 (talk) 22:39, 16 March 2023 (UTC)

List not populated
Hi! First of all, thanks for creating this extension :D I have some issues however, that I'm trying to sort out. Right now, my main table is not completely getting populated. It should have ~250,000 rows, but it just stops, sometimes at 300, sometimes at 17,0000, but never near expected. I have tried creating replacement tables, but has no effect. Does anyone by any chance know what could be the issue here? Dajasj (talk) 14:55, 16 March 2023 (UTC)


 * I would try populating the table from the command line, by calling cargoRecreateData.php - it might work better, or it might point to whatever is crashing the recreate process. Yaron Koren (talk) 15:01, 16 March 2023 (UTC)

cargoRecreateData.php not working properly with --replacement parameter
I changed a field of an existing table from  to   and ran   with the   parameter. The  table was created, but when switching in the replacement table using the web interface the "NEXT" tables were not dropped (I've not noticed whether that is normal or not) but more importantly no   was created. This meant that the associated Page Form form didn't work.

I dropped the NEXT tables manually and ran  without the   parameter and it all worked as expected.

MW 1.35.8, Cargo 3.3.1 (dac6b0d). Jonathan3 (talk) 21:53, 19 March 2023 (UTC)


 * It sounds like the problem is with the switch call via the web interface, not with cargoRecreateData.php - no? Yaron Koren (talk) 17:20, 20 March 2023 (UTC)
 * Yes, agreed. Jonathan3 (talk) 19:18, 20 March 2023 (UTC)

Error: the string "`" cannot be used within #cargo_query
I started getting this error since Cargo 3.4.1. In my case, I have a label for a column that contains a space, i.e., and then I'm trying also sort on this column with. This used to work. I can fix it by using  instead, but without seeing the query plan, I think I'm experiencing a slower query because it's not using the same value already calculated in the SELECT clause. I don't know if that's really true, though.

What is the recommendation on sorting or grouping by columns with spaces in their names? &mdash; MusikAnimal  talk  16:52, 20 March 2023 (UTC)


 * Sorry about that - yes, backticks were recently disallowed in #cargo_query, for better or for worse. Yes, I would recommend just sorting on the COUNT call. I don't think it will be slower, but I don't know for sure. You could test it with a no-spaces alias. Yaron Koren (talk) 17:29, 20 March 2023 (UTC)
 * I also have the same problem, this is the only code I am managing in my personal wiki using the Cargo extension --Hispano76 (talk) 17:35, 20 March 2023 (UTC)
 * What is the #cargo_query call that is failing? Yaron Koren (talk) 17:42, 20 March 2023 (UTC)
 * That's the thing. i'm not using #cargo_query: anywhere and i only use the image thing; to use the data collected in Special:Drilldown to better manage the articles i make, ehm, like using the special page as a dictionary or database to create lists or people pages. --Hispano76 (talk) 17:49, 20 March 2023 (UTC)
 * So what is the error you are seeing? Yaron Koren (talk) 19:11, 20 March 2023 (UTC)
 * It occurs on two different special page, for example:
 * Special:CargoTables/Personas:
 * When entering one of the conditions of Special:Drilldown/Personas?_single&Genero=Mujeres:
 * Even when recreating the table, the error persists. --Hispano76 (talk) 19:28, 20 March 2023 (UTC)
 * Please try using the latest Cargo code, if you are not already; there have been some fixes for this "backticks" change, including one last week that may fix at least the Special:Drilldown problem. Yaron Koren (talk) 19:47, 20 March 2023 (UTC)

Cannot Create Cargo Tables
'''SOLVED: I think the problem is that my table name was "STAT_Faction." I removed the underscore...and now it behaves.'''

Might want to update the error text I saw below (testing, shockingly, dashes) to include underscores as not allowed either.

Error: table name "Dash-Test" cannot contain any of the following characters: .,-&lt;&gt;{}[]\/

Original description of problem
 * MediaWiki 	1.39.2
 * PHP 	7.4.33 (litespeed)
 * MySQL 	8.0.32-cll-lve
 * ICU 	64.2

Using Page Forms 5.6.

Tried to create a basic one-parameter template/table (a single text field). Neither SSH nor Create Data Table worked. I confirmed the MediaWiki user has all permissions to the MediaWiki table. Enabling $wgShowSQLErrors = true; and $wgShowExceptionDetails = true; revealed no error messages when running Create Data Table from a Template page.

I temporarily edited ext.cargo.recreatedata.js to log its error in my browser console. It's a database problem of some kind--"internal_api_error_DBQueryError" that doesn't expand (it's not a JSON object with more detail than just the message).

More data, used the old college try and here's what it was trying to send: Going to submit the following query string to MWAPI: {"action":"cargorecreatetables","format":"json","template":"Faction"}

SovereignGFC (talk) 11:28, 22 March 2023 (UTC)


 * Creating and recreating tables with underscores in their names works for me. What version of Cargo are you running? And what error(s) did you see when running cargoRecreateData.php from the command line, if any? Yaron Koren (talk) 14:53, 22 March 2023 (UTC)
 * Cargo version is 3.4.1.
 * When executing from SSH on the command line, no errors were displayed. SovereignGFC (talk) 20:45, 26 March 2023 (UTC)
 * Okay - so what happened when you ran cargoRecreateData.php? Yaron Koren (talk) 02:07, 27 March 2023 (UTC)
 * That's what is weird. Literally nothing.  No output, no errors, no actions taken in the database. SovereignGFC (talk) 01:16, 28 March 2023 (UTC)
 * Let me see if I understand this right: you had exactly one table defined, "STAT_Faction". Calling cargoRecreateData.php at that point did nothing. Then you renamed the table to "STATFaction", and calling cargoRecreateData.php started to work (and still works). Is that correct? Yaron Koren (talk) 14:52, 28 March 2023 (UTC)
 * That is correct.
 * I tried to debug it as described above but couldn't really get any useful data.
 * Since it works for you I'll just assume there's something weird with my web host/server and not put underscores in table names. SovereignGFC (talk) 12:29, 29 March 2023 (UTC)
 * Could it be that just resaving the template fixed the issue, somehow? I'd be very curious to know whether, if you changed the table name back to having an underscore, the problem came back. Yaron Koren (talk) 12:48, 29 March 2023 (UTC)

Missing Columns in CSV
I believe this is a bug. If you output to CSV, and not all rows have the fields you selected, then the output will not have that column in the headers or result set at all. If you output to Table it does. If you output to JSON only the records that have that field will include it. I did not test any other formats but they may be affected as well. I suspect the columns are selected based on the first result set, which is missing the column in my case, and only further rows have it. This is all from a single table. May be related to virtual list fields. BalmyRemission (talk) 17:05, 23 March 2023 (UTC)


 * Do you mean that this only happens if list fields contain empty values? Or does it happen for empty values in all kinds of fields? Yaron Koren (talk) 02:49, 24 March 2023 (UTC)
 * I didn't previously do extensive testing. Here's an example query (edit: I can't seem to post external links, so please visit poewiki dot net, go to CargoQuery, and fill in `items` for tables, `name, drop_areas, acquisition_tags, removal_version` for fields, and `rarity_id="unique"` for WHERE, and set the output format to CSV) where you can see the CSV is missing `drop_areas`, `acquisition_tags` and `removal_version`, and not just in the header, but in the result set as well. The first two are lists, and the last one is a string. If you modify the query at the bottom to output in table or json, those fields show up and are populated normally, but notice they aren't assigned for every row (since they have no data). I thought I ran into the problem in another combination of displays, but I can't remember where and it may have just been csv as well but from one of the other ways to invoke the cargo api. I just tried api.php and ApiSandbox now with json and that one is OK. CargoExport also shows the problem when dumping to CSV but again JSON is fine. So it seems like the problem is only with CSV and only if some of your fields are not populated for every row? And that it affects regular fields and virtual list fields. Hope this helps! BalmyRemission (talk) 04:04, 24 March 2023 (UTC)
 * I see the problem on your wiki, yes - although I can't reproduce that same issue locally. There's at least one other strange thing happening on your wiki, which is that submitting Special:CargoQuery twice (i.e., modifying the values and submitting again) results in all the values going blank. You're using a somewhat old version of Cargo on that wiki - could that be the cause of both of these problems? Or maybe your wiki has some custom modifications? Yaron Koren (talk) 13:27, 24 March 2023 (UTC)
 * Thank you for your time troubleshooting this Yaron, I've reported this to the admins of poewiki and we'll see what they say. I have no access to other wikis so didn't have a way to narrow my testing further. BalmyRemission (talk) 15:22, 24 March 2023 (UTC)