Fix various MySQL version issues with new charset stuff


Fix various MySQL version issues with new charset stuff

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