Sand Fox (old posts, page 8)
-
Generating UUIDv7 in MySQL and MariaDB
A quick way to generate UUIDv7 in MySQL 8 and MariaDB 11:
select concat( -- Use NOW(3) to get milliseconds lpad(hex(unix_timestamp(now(3)) * 1000), 12, '0'), '7', -- version substr(hex(random_bytes(2)), 2), hex(floor(rand() * 4 + 8)), -- variant bits substr(hex(random_bytes(8)), 2) ) as uuid;
This will generate a hex string that can be inserted into MariaDB's UUID type as is, dashes will be added automatically.
If you need it as a binary value, wrap with unhex:
select unhex(concat( lpad(hex(unix_timestamp(now(3)) * 1000), 12, '0'), '7', substr(hex(random_bytes(2)), 2), hex(floor(rand() * 4 + 8)), substr(hex(random_bytes(8)), 2) )) as uuid;
If you specifically need a valid RFC 4122 string representation, use a bin formatter function (MySQL) or a type cast (MariaDB):
-- MySQL select bin_to_uuid(unhex(concat( lpad(hex(unix_timestamp(now(3)) * 1000), 12, '0'), '7', substr(hex(random_bytes(2)), 2), hex(floor(rand() * 4 + 8)), substr(hex(random_bytes(8)), 2) ))) as uuid; -- MariaDB select cast((concat( lpad(hex(unix_timestamp(now(3)) * 1000), 12, '0'), '7', substr(hex(random_bytes(2)), 2), hex(floor(rand() * 4 + 8)), substr(hex(random_bytes(8)), 2) )) as uuid) as uuid;
-
De-hybridize Torrent
A feature that may be desired for some anti-V2 trackers. While I would like to see the torrent community going the other way around, some trackers choose not to allow version 2 torrents and sometimes even hybrids.
The torrent file library now allows cleaning unnecessary or undesired metadata versions from a torrent file.
The intended use and the primary future scope is actually the other way around: the ability to remove version 1 metadata to make use of easy mutability of version 2 torrents to add or remove files in existing torrent structures.
-
PHP Requirements on Packagist
A followup for the previous post: the minimum required PHP versions in packages on the Packagist.