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.
Tags
None
Referenced Files
F14076449: D19800.diff
Thu, Nov 21, 5:28 PM
F14071589: D19800.diff
Wed, Nov 20, 5:54 PM
Unknown Object (File)
Fri, Nov 8, 10:34 PM
Unknown Object (File)
Oct 21 2024, 7:22 PM
Unknown Object (File)
Oct 16 2024, 9:48 AM
Unknown Object (File)
Oct 14 2024, 12:46 AM
Unknown Object (File)
Oct 9 2024, 4:55 PM
Unknown Object (File)
Oct 9 2024, 10:35 AM
Subscribers
None

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 Passed
Unit
Tests Passed
Build Status
Buildable 21140
Build 28737: Run Core Tests
Build 28736: arc lint + arc unit