HomePhabricator

Correct column mutations for old versions of MySQL

Description

Correct column mutations for old versions of MySQL

Summary:
Ref T1191. Although I fixed some of the mutations earlier (in D10598), I missed the column mutations under old versions of MySQL. In particular, this isn't valid:

  • ALTER TABLE ... MODIFY columnName VARCHAR(64) COLLATE binary

Issue the permitted version of this instead, which is:

  • ALTER TABLE ... MODIFY columnName VARBINARY(64)

Also fixed an issue where a clean schema had the wrong nullability for a column in the draft table. Force it to the expected nullability.

The other trick here is around the one column with a FULLTEXT index on it, which needs a little massaging.

Test Plan:

  • Forced my local install to return false for utf8mb4 support.
  • Did a clean adjust into binary columns.
  • Poked around, added emoji to things.
  • Reverted the fake check and did a clean adjust into utf8mb4 columns.
  • Emoji survived.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: fabe, epriestley

Maniphest Tasks: T1191

Differential Revision: https://secure.phabricator.com/D10627

Details