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
Unknown Object (File)
Tue, Mar 19, 10:34 PM
Unknown Object (File)
Sat, Mar 16, 9:28 PM
Unknown Object (File)
Tue, Mar 5, 3:12 PM
Unknown Object (File)
Feb 16 2024, 2:32 PM
Unknown Object (File)
Feb 3 2024, 7:51 PM
Unknown Object (File)
Dec 25 2023, 2:13 AM
Unknown Object (File)
Dec 22 2023, 12:45 AM
Unknown Object (File)
Dec 22 2023, 12:45 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