Page MenuHomePhabricator

Migrate raw SQL building in conditions to expression builder in WMF-deployed extensions
Open, Needs TriagePublic

Description

Now T210206: Deprecate raw SQL conditions for IDatabase methods (select, insert, etc.) is mostly done, devs should start migrating their codebases away from building raw SQL.

See below as examples of adoption:

Also these regexes can migrate simple cases:

'([A-Za-z_\.] ) ?(=|!=|<|<=|>|>=) ?' . (\$db(?:r|w|))->addQuotes\( (. ?) \)
to:
$3->expr\( '$1', '$2', $4 \)

and

'([A-Za-z_\.] ) IS NULL OR ([A-Za-z_\.] ) ?(=|!=|<|<=|>|>=) ?' . (\$db(?:r|w|))->addQuotes\( (. ?) \)
to:
$4->expr( '$1', '=', null )->or\( '$2', '$3', $5 \)

and

'([A-Za-z_\.] ) IS NOT NULL OR ([A-Za-z_\.] ) ?(=|!=|<|<=|>|>=) ?' . (\$db(?:r|w|))->addQuotes\( (. ?) \)
to:
$4->expr( '$1', '!=', null )->or\( '$2', '$3', $5 \)

Replacements for functions:

  • ISQLPlatform::unionQueries => UnionQueryBuilder::execute
  • ISQLPlatform::selectSQLText => SelectQueryBuilder::getSQL
  • ISQLPlatform::buildSelectSubquery => SelectQueryBuilder::getSQL new Subquery
  • ISQLPlatform::buildGroupConcatField => SelectQueryBuilder::buildGroupConcatField
  • ISQLPlatform::makeList => Expression::or / Expression::and / IReadableDatabase::orExpr / IReadableDatabase::andExpr
  • ISQLPlatform::buildLike => IReadableDatabase::expr IExpression::LIKE/IExpression::NOT_LIKE new LikeValue
  • DbQuoter::addQuotes => IReadableDatabase::expr (not all can be replaced, for example when used with other ISQLPlatform::build* functions)

Related Objects

StatusSubtypeAssignedTask
OpenNone
ResolvedUmherirrender
ResolvedAtieno
ResolvedSBisson
ResolvedUmherirrender
ResolvedWangombe
ResolvedUmherirrender
Resolvedmatmarex
ResolvedAtieno
ResolvedUmherirrender
ResolvedAtieno
ResolvedDreamy_Jazz
ResolvedNone
ResolvedUmherirrender
ResolvedMPGuy2824
OpenNone
ResolvedUmherirrender
Resolvedmatmarex
ResolvedUmherirrender
ResolvedUmherirrender
DeclinedFeatureNone
ResolvedDreamy_Jazz
ResolvedDreamy_Jazz
ResolvedDreamy_Jazz
ResolvedDreamy_Jazz
ResolvedDreamy_Jazz
ResolvedDreamy_Jazz
ResolvedDreamy_Jazz
ResolvedUmherirrender
ResolvedUmherirrender
ResolvedUmherirrender
Resolvedihurbain
ResolvedUmherirrender
Resolvedtstarling
ResolvedDreamy_Jazz
ResolvedUmherirrender
ResolvedUmherirrender
ResolvedLadsgroup
ResolvedMPGuy2824
ResolvedUmherirrender
ResolvedUmherirrender
ResolvedNone
ResolvedUmherirrender
ResolvedLadsgroup
Resolvedmatmarex
ResolvedUmherirrender
ResolvedUmherirrender
ResolvedAtieno
ResolvedAtieno

Event Timeline

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

Change #1023940 had a related patch set uploaded (by Umherirrender; author: Umherirrender):

[mediawiki/extensions/MobileFrontend@master] Migrate to IReadableDatabase::newSelectQueryBuilder

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

Change #1023940 merged by jenkins-bot:

[mediawiki/extensions/MobileFrontend@master] Migrate to IReadableDatabase::newSelectQueryBuilder

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