Skip to content

v0.2.10

Choose a tag to compare

@jonbaldie jonbaldie released this 09 Sep 21:34
· 241 commits to main since this release
2a8b33e

What changed since v0.2.9

v0.2.10 adds the remaining MySQL CAST and CONVERT destinations and fixes durability, parsing, arithmetic, and DDL behaviour so it matches the documented MySQL 8.4 contracts.

New SQL capabilities

  • Accepted the remaining MySQL cast destinations in CAST and CONVERT: BINARY with its optional length, DOUBLE, REAL, FLOAT, DATE, DATETIME and TIME with their optional fractional-second precision, and YEAR. A temporal or approximate-numeric result advertises the target family's wire metadata, a temporal source contributes its date or clock part to a narrower target, and a malformed or out-of-range value still fails with the family's MySQL error identity.

Durability and DDL

  • Dropped a table's durable rows and indexes with DROP TABLE instead of keeping them until a later CREATE TABLE of the same name adopted them.
  • Persisted ALTER TABLE changes that modify only a column type or nullability so they survive a graceful restart.
  • Renamed the column references held by PRIMARY KEY, UNIQUE, and FOREIGN KEY constraints when ALTER TABLE ... RENAME COLUMN or CHANGE COLUMN renames a column, instead of failing with MySQL error 1072 or publishing constraints that name a column that no longer exists.
  • Rejected DROP DATABASE with MySQL error 3730 when a table in the database is referenced by a foreign key constraint in another database, instead of dropping it and leaving the child table's constraint pointing at an unknown database.
  • Reported MySQL error 1452 for foreign key violations on new or changed child rows in self-referencing tables, including orphan INSERT values, instead of MySQL error 1451, which stays reserved for deleted or updated parent rows.

SQL parsing and expressions

  • Accepted LIKE 'pattern' ESCAPE '' as disabling the escape character instead of failing with error 1064.
  • Returned the BIGINT result for DIV by a floating-point value when the truncated quotient equals MaxInt64, instead of a false overflow error 1690.
  • Prevented the overflow guard for MinInt64 * -1 from trapping on x86_64; the expression now returns MinInt64 as MySQL does.
  • Negated unsigned values in the signed BIGINT domain: a value at or below MaxInt64 + 1 negates to a signed result, and only a value above that fails with MySQL error 1690, instead of rejecting every unary minus on an unsigned value.

The release includes native binaries for macOS Apple Silicon, Linux amd64, and Linux arm64. It also includes a multi-architecture OCI image archive for linux/amd64 and linux/arm64/v8.

See the full changelog.