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
F17295225: D19800.diff
Thu, Jun 26, 4:04 AM
Unknown Object (File)
Thu, Jun 19, 11:05 PM
Unknown Object (File)
Thu, Jun 19, 2:23 PM
Unknown Object (File)
May 6 2025, 8:48 PM
Unknown Object (File)
Apr 23 2025, 7:01 PM
Unknown Object (File)
Apr 20 2025, 8:22 PM
Unknown Object (File)
Apr 15 2025, 3:01 PM
Unknown Object (File)
Apr 14 2025, 10:23 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