Page MenuHomePhabricator

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

Authored by epriestley on Tue, Nov 13, 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
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

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

tarnation

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