Page MenuHomePhabricator

Add "%Z" (Raw Query) and "%LK" (List of Columns for Keys) to qsprintf()
ClosedPublic

Authored by epriestley on Nov 13 2018, 6:29 PM.

Details

Summary

Ref T13217. Ref T13216.

First, we still need a way to pass a raw, unsafe query to qsprintf(...) so we can apply .sql migrations. There's no way to make these "safe" so introduce a new "raw unsafe query" conversion which works like the old %Q: %Z.

Second, when bin/storage adjust adds or modifies keys, it needs to run a query like this:

ALTER TABLE x ADD KEY y (u, w);

The (u, w) part is usually a list of columns (same as %LC) but may look like (u(16), w(64)) if the key is on prefix substrings of the column values.

Introduce %LK to escape this particular kind of column list grammar.

Test Plan

See next revision.

Diff Detail

Repository
rPHU libphutil
Branch
query4
Lint
Lint OK
Unit
Unit Tests OK
Build Status
Buildable 21140
Build 28737: Run Core Tests
Build 28736: arc lint + arc unit

Event Timeline

epriestley created this revision.Nov 13 2018, 6:29 PM
epriestley requested review of this revision.Nov 13 2018, 6:29 PM
amckinley accepted this revision.Nov 15 2018, 3:26 AM
amckinley added inline comments.
src/xsprintf/qsprintf.php
193–203

tarnation

This revision is now accepted and ready to land.Nov 15 2018, 3:26 AM
This revision was automatically updated to reflect the committed changes.