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 (not all can be replaced, see also T358961)
  • 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
OpenAtieno
ResolvedSBisson
ResolvedUmherirrender
ResolvedWangombe
ResolvedUmherirrender
Resolvedmatmarex
ResolvedAtieno
ResolvedUmherirrender
ResolvedAtieno
OpenNone
OpenNone
OpenNone
ResolvedMPGuy2824
OpenNone
OpenNone
Resolvedmatmarex
ResolvedUmherirrender
OpenNone
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
OpenNone
ResolvedUmherirrender
ResolvedLadsgroup
Resolvedmatmarex
OpenNone
ResolvedUmherirrender
OpenAtieno
OpenAtieno

Event Timeline

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