@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator

Convert `pushlog` and `refcursor` to BLOB storage

Summary:
Fixes T5840. Some time ago I incorrectly believed that `latin1_bin` collation was synonymous with "binary". It is not, and does not permit UTF8 characters outside of BMP, among other sequences.

These two tables currently have `LONGTEXT` columns which should be `LONGBLOB`. The table design is explicilty intended to accommodate invalid/unreasonably long ref names, but the collation prevents this from working properly.

After T1191, we'll have a general system for resolving this, but a user hit an issue yesterday (T5840) with a brnach name containing Chinese characters.

Test Plan:
- Tried emoji inserts into both tables, was rebuffed.
- Ran migration.
- Performed emoji inserts into both tables.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T5840

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

+4
+2
resources/sql/autopatches/20140811.blob.1.sql
··· 1 + ALTER TABLE {$NAMESPACE}_repository.repository_refcursor 2 + CHANGE refNameRaw refNameRaw LONGBLOB NOT NULL;
+2
resources/sql/autopatches/20140811.blob.2.sql
··· 1 + ALTER TABLE {$NAMESPACE}_repository.repository_pushlog 2 + CHANGE refNameRaw refNameRaw LONGBLOB;