bug #39113 [DoctrineBridge] drop binary variants of UID types (nicolas-grekas)
authorFabien Potencier <fabien@potencier.org>
Thu, 19 Nov 2020 09:31:30 +0000 (10:31 +0100)
committerFabien Potencier <fabien@potencier.org>
Thu, 19 Nov 2020 09:31:30 +0000 (10:31 +0100)
commitc13d5b5053ead20800656a18252565a7d8676db4
tree22f156e8fb9b130f35eb2004db03bc5609166894
parentde09329253e994861fd00ae6d3c8c6da5037679d
parentbdfc20520e7055fd5172aa5dcaf2eb27becc0470
bug #39113 [DoctrineBridge] drop binary variants of UID types (nicolas-grekas)

This PR was merged into the 5.2 branch.

Discussion
----------

[DoctrineBridge] drop binary variants of UID types

| Q             | A
| ------------- | ---
| Branch?       | 5.2
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | #39112
| License       | MIT
| Doc PR        | -

#39112 made me realize that when the DB engine doesn't have a native UUID/GUID type, there's no benefit to representing ULIDs as UUIDs.

This PR proposes to use the native GUID type for both UUIDs and ULIDs only when the DB engine provides such a type, and to use `BINARY(16)` when the DB engine doesn't have a native GUID type.

This leaves us in a situation where, whether the DB engine supports GUID natively or not, UUID and ULID are always stored in the most compact format.

This makes the "binary" variants useless.

MySQL 8 has [functions](https://mysqlserverteam.com/mysql-8-0-uuid-support/) to deal with binary GUID, and so does [SQLite](https://sqlite.org/src/file/ext/misc/uuid.c).

Commits
-------

bdfc20520e [DoctrineBridge] drop binary variants of UID types