Add "%Z" (Raw Query) and "%LK" (List of Columns for Keys) to qsprintf()
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.
Reviewers: amckinley
Reviewed By: amckinley
Maniphest Tasks: T13217, T13216
Differential Revision: https://secure.phabricator.com/D19800