Fix various MySQL version issues with new charset stuff
Summary:
Ref T1191. Notable stuff:
- Adds --disable-utf8mb4 to bin/storage to make it easier to test what things will (approximately) do on old MySQL. This isn't 100% perfect but should catch all the major stuff. It basically makes us pretend the server is an old server.
- Require utf8mb4 to dump a quickstart.
- Fix some issues with quickstart generation, notably special casing the FULLTEXT handling.
- Add an --unsafe flag to bin/storage adjust to let it truncate data to fix schemata.
- Fix some old patches which don't work if the default table charset is utf8mb4.
Test Plan:
- Dumped a quickstart.
- Loaded the quickstart with utf8mb4.
- Loaded the quickstart with --disable-utf8mb4 (verified that we get binary columns, etc).
- Adjusted schema with --disable-utf8mb4 (got a long adjustment with binary columns, some truncation stuff with weird edge case test data).
- Adjusted schema with --disable-utf8mb4 --unsafe (got truncations and clean adjust).
- Adjusted schema back without --disable-utf8mb4 (got a long adjustment with utf8mb4 columns, some invalid data on truncated utf8).
- Adjusted schema without --disable-utf8mb4, but with --unsafe (got truncations on the invalid data).
Reviewers: btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T1191
Differential Revision: https://secure.phabricator.com/D10757