Page MenuHomePhabricator

Migrate Database::select usages to SelectQueryBuilder (in WMF-deployed extensions)
Closed, ResolvedPublic

Description

After T243051: A query builder for MediaWiki core being done, we should use it which would improve readability of the code, avoids mistakes by passing the wrong order of arguments, etc. and would pave the way for further improvements such as T210206.

Note: It's not just select(). selectField(), selectFieldValues(), selectRow(), estimateRowCount(), and selectRowCount() also need to phased out.

Replacement for read queries:

  • IReadableDatabase::select => SelectQueryBuilder::fetchResultSet
  • IReadableDatabase::selectField => SelectQueryBuilder::fetchField
  • IReadableDatabase::selectFieldValues => SelectQueryBuilder::fetchFieldValues
  • IReadableDatabase::selectRow => SelectQueryBuilder::fetchRow
  • IReadableDatabase::selectRowCount => SelectQueryBuilder::fetchRowCount
  • IReadableDatabase::estimateRowCount => SelectQueryBuilder::estimateRowCount
  • ISQLPlatform::unionQueries => UnionQueryBuilder::execute
  • ISQLPlatform::selectSQLText => SelectQueryBuilder::getSQL
  • ISQLPlatform::buildGroupConcatField => SelectQueryBuilder::buildGroupConcatField

Additional query builder for write queries:

  • IDatabase::delete => DeleteQueryBuilder::execute
  • IDatabase::insert => InsertQueryBuilder::execute
  • IDatabase::replace => ReplaceQueryBuilder::execute
  • IDatabase::update => UpdateQueryBuilder::execute
  • IDatabase::upsert => InsertQueryBuilder::execute

Details

SubjectRepoBranchLines +/-
mediawiki/coremaster+26 -19
mediawiki/coremaster+131 -68
mediawiki/coremaster+13 -0
mediawiki/coremaster+100 -138
mediawiki/coremaster+376 -398
mediawiki/coremaster+243 -293
mediawiki/coremaster+251 -269
mediawiki/coremaster+101 -33
mediawiki/coremaster+449 -459
mediawiki/coremaster+66 -43
mediawiki/coremaster+53 -64
mediawiki/coremaster+41 -52
mediawiki/coremaster+379 -354
mediawiki/coremaster+65 -77
mediawiki/coremaster+76 -63
mediawiki/coremaster+46 -52
mediawiki/coremaster+28 -38
mediawiki/coremaster+12 -10
mediawiki/coremaster+7 -0
mediawiki/coremaster+105 -136
mediawiki/coremaster+115 -75
mediawiki/coremaster+30 -19
mediawiki/coremaster+14 -16
mediawiki/coremaster+8 -8
mediawiki/coremaster+11 -17
mediawiki/coremaster+14 -8
mediawiki/coremaster+16 -20
mediawiki/coremaster+57 -84
mediawiki/coremaster+81 -64
mediawiki/coremaster+6 -8
mediawiki/coremaster+42 -61
mediawiki/coremaster+17 -21
mediawiki/coremaster+36 -40
mediawiki/coremaster+2 -1
mediawiki/coremaster+33 -52
mediawiki/coremaster+10 -10
mediawiki/coremaster+33 -28
mediawiki/coremaster+5 -6
mediawiki/coremaster+21 -19
mediawiki/coremaster+12 -11
mediawiki/coremaster+46 -36
mediawiki/coremaster+236 -269
mediawiki/coremaster+67 -49
mediawiki/coremaster+11 -10
mediawiki/coremaster+12 -11
mediawiki/coremaster+12 -27
mediawiki/coremaster+62 -57
mediawiki/coremaster+84 -76
mediawiki/coremaster+18 -0
mediawiki/coremaster+11 -15
mediawiki/coremaster+9 -9
Show related patches Customize query in gerrit

Related Objects

StatusSubtypeAssignedTask
ResolvedNone
InvalidNone
Resolvedsguebo_WMF
ResolvedUmherirrender
ResolvedUmherirrender
ResolvedUmherirrender
InvalidNone
ResolvedKrinkle
ResolvedUmherirrender
ResolvedDreamy_Jazz
ResolvedNone
InvalidNone
InvalidNone
ResolvedUmherirrender
InvalidNone
InvalidNone
InvalidNone
ResolvedWangombe
ResolvedUmherirrender
ResolvedUmherirrender
InvalidNone
InvalidNone
InvalidNone
InvalidNone
InvalidNone
InvalidNone
ResolvedUmherirrender
ResolvedUmherirrender
Resolvedmatmarex
InvalidNone
InvalidNone
ResolvedUmherirrender
InvalidNone
DeclinedNone
InvalidNone
ResolvedAtieno
InvalidNone
InvalidNone
ResolvedHasanAkgun_WMDE
InvalidNone
ResolvedLadsgroup
InvalidNone
ResolvedLucas_Werkmeister_WMDE
InvalidNone
InvalidNone
InvalidNone
InvalidNone
InvalidNone
ResolvedUmherirrender
InvalidNone
ResolvedDreamy_Jazz
InvalidNone
InvalidNone
InvalidNone
InvalidNone
InvalidNone
Resolvedori
ResolvedUmherirrender
Resolvedhoo
ResolvedUmherirrender
InvalidNone
DuplicateNone
InvalidNone
InvalidNone
InvalidNone
InvalidNone
InvalidNone
ResolvedUmherirrender
ResolvedUmherirrender
ResolvedUmherirrender
InvalidNone
InvalidNone
InvalidNone
ResolvedZabe
ResolvedUmherirrender
InvalidNone
InvalidNone
InvalidNone
ResolvedZabe
InvalidNone
InvalidNone
InvalidNone
InvalidNone
InvalidNone
InvalidNone
InvalidNone
InvalidNone
InvalidNone
ResolvedUmherirrender
ResolvedUmherirrender
InvalidNone
InvalidNone
InvalidNone
InvalidNone
ResolvedLadsgroup
InvalidNone
InvalidNone
ResolvedUmherirrender
Resolvedtaavi
ResolvedUmherirrender
Resolved EJoseph
ResolvedNone
OpenNone
ResolvedUmherirrender
ResolvedUmherirrender
ResolvedUmherirrender
Resolved TThoabala
InvalidNone
InvalidNone
InvalidNone
ResolvedUmherirrender
InvalidNone
InvalidNone
InvalidNone
ResolvedSbailey
InvalidNone
InvalidNone
InvalidNone
InvalidNone
DeclinedNone
ResolvedSD0001
InvalidNone
ResolvedUmherirrender
InvalidNone
InvalidNone
ResolvedBluDoge
InvalidNone
ResolvedUmherirrender
InvalidNone
ResolvedUmherirrender
DuplicateNone
ResolvedUmherirrender
InvalidNone
InvalidNone
ResolvedNone
ResolvedUmherirrender
InvalidNone
InvalidNone
InvalidNone
InvalidNone
InvalidNone
InvalidNone
ResolvedLucas_Werkmeister_WMDE
InvalidNone
InvalidNone
ResolvedUmherirrender
Resolvedmatmarex
ResolvedTheDJ
InvalidNone
ResolvedUmherirrender
InvalidNone
InvalidNone
Resolvedmatmarex
InvalidNone
InvalidNone
InvalidNone
ResolvedUmherirrender
InvalidNone
InvalidNone
ResolvedDreamy_Jazz
ResolvedTchanders
Resolved TThoabala
Resolved TThoabala
ResolvedScardenasmolinar
ResolvedNone
ResolvedAtieno
InvalidNone
InvalidNone
InvalidNone
InvalidNone
InvalidNone
InvalidNone
InvalidNone
InvalidNone
InvalidNone
InvalidNone
ResolvedUmherirrender
InvalidNone
InvalidNone
InvalidNone
ResolvedUmherirrender
InvalidNone
InvalidNone
ResolvedUmherirrender
ResolvedUmherirrender
InvalidNone
InvalidNone
InvalidNone
ResolvedLucas_Werkmeister_WMDE
DuplicateNone
ResolvedLadsgroup

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes

Change 941404 merged by jenkins-bot:

[mediawiki/core@master] Migrate more calls of Database::select* to SelectQueryBuilder

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

Change 944261 had a related patch set uploaded (by Ladsgroup; author: Amir Sarabadani):

[mediawiki/core@master] Migrate last batch of simple Database::select* calls to SQB

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

Change 944261 merged by jenkins-bot:

[mediawiki/core@master] Migrate last batch of simple Database::select* calls to SQB

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

Change 944317 had a related patch set uploaded (by Ladsgroup; author: Amir Sarabadani):

[mediawiki/core@master] [WIP] Introduce FileSelectQueryBuilder

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

Change 944317 merged by jenkins-bot:

[mediawiki/core@master] Introduce FileSelectQueryBuilder

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

We now have around 600 calls to select query builder in core. And only 200-ish left. The ones left are rather complex. e.g. some build the query array and then pass it to a hook runner. RevisionStore and some other classes have a decent chunks of calls to select because of ::getSlotsQueryInfo() and similar. In some cases it makes sense to make a new function that return a query builder object, in some cases it makes sense to create a sub-class of SQB (e.g. what we did for User and File). But the 200 cases left are going to take a while to migrate.

Change 952166 had a related patch set uploaded (by Ladsgroup; author: Amir Sarabadani):

[mediawiki/core@master] Migrate several more Database::select calls to SQB

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

Change 952166 merged by jenkins-bot:

[mediawiki/core@master] Migrate several more Database::select calls to SQB

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

Change 810856 abandoned by Ladsgroup:

[mediawiki/core@master] rdbms: Soft-deprecate IDatabase::select() and similar methods

Reason:

These methods are now @internal making this patch moot

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

Change 851080 abandoned by Ladsgroup:

[mediawiki/core@master] RevisionStore: Add support for transforming SelectQueryBuilder

Reason:

We actually built RevisionSQB making this patch moot

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

Change 982813 had a related patch set uploaded (by D3r1ck01; author: Derick Alangi):

[mediawiki/core@master] language: Migrate Database::select() to SQB

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

Krinkle renamed this task from Migrate Database::select usages to SelectQueryBuilder to Migrate Database::select usages to SelectQueryBuilder (in WMF-deployed extensions).Mar 5 2024, 7:37 PM

Change #982813 abandoned by Umherirrender:

[mediawiki/core@master] Migrate Database::select() to SelectQueryBuilder

Reason:

Code already migrated

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