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
F18782087: D19800.id.diff
Mon, Oct 13, 12:32 AM
F18737334: D19800.id47305.diff
Wed, Oct 1, 10:13 AM
F18733838: D19800.id.diff
Tue, Sep 30, 10:43 PM
F18695013: D19800.id47291.diff
Sat, Sep 27, 4:52 AM
F18671737: D19800.diff
Thu, Sep 25, 5:01 AM
F18623181: D19800.diff
Sep 15 2025, 2:39 PM
F18568776: D19800.id47305.diff
Sep 10 2025, 12:26 AM
F18568771: D19800.id47291.diff
Sep 10 2025, 12:25 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
Lint
Lint Not Applicable
Unit
Tests Not Applicable