Hello, Two changes is being made on MediaWiki databases: *First:* We are reworking how extensions manage their database schema. The idea is to basically deprecate LoadExtensionSchemaUpdates hook[1] and replace it with structured values in extension.json.
This is needed to avoid arbitrary php code execution during database update which can cause problems and was a contributing factor in one of our major outages [2]. The other reason for this change is to be able to wire abstract schema of extensions to core so it can be tested in CI (for example for having a valid json, having prefixes set correctly, etc.) You can see a POC of that in [3] Given that once the change is merged to core, breaking changs to extension registry schema would require a lot of work (updating the maniphest version and so on), it's better to get it right before merge. I have proposed something like [4]. For any feedback on this, please go to https://phabricator.wikimedia.org/T237839, *Second:* We are working to provide a replacement for raw SQL for query conditions. When the query condition is exact equality condition (e.g. rev_id = 123), you don't need to provide raw SQL but for most other cases you need to either provide it or build it via IDatabase methods. For example: 'rev_timestamp > ' . $db->addQuotes( $db->timestamp( $since ) ). You can see an example of this in [5] (being changed to something much better via a newly introduced method). This is not optimal and not very developer friendly, to solve that, we are proposing to have something like ExpressionBuilder::greater( 'rev_timestamp', $db->timestamp( $since ) ) supported in SelectQueryBuilder::where(). You can see the POC in [6]. For any feedback on this please go to https://phabricator.wikimedia.org/T210206 [1] https://www.mediawiki.org/wiki/Manual:Hooks/LoadExtensionSchemaUpdates [2] https://wikitech.wikimedia.org/wiki/Incidents/2020-04-07_Wikidata%27s_wb_items_per_site_table_dropped [3] https://gerrit.wikimedia.org/r/c/mediawiki/core/+/816262/10/tests/phpunit/structure/AbstractSchemaValidationTest.php [4] https://phabricator.wikimedia.org/T237839#8268173 [5] https://gerrit.wikimedia.org/r/c/mediawiki/core/+/832625/6/includes/api/ApiQueryDeletedrevs.php [6] https://gerrit.wikimedia.org/r/c/mediawiki/core/+/841940/ Thank you -- *Amir Sarabadani (he/him)* Staff Database Architect Wikimedia Foundation <https://wikimediafoundation.org/>
_______________________________________________ Wikitech-l mailing list -- wikitech-l@lists.wikimedia.org To unsubscribe send an email to wikitech-l-le...@lists.wikimedia.org https://lists.wikimedia.org/postorius/lists/wikitech-l.lists.wikimedia.org/