Skip to content

MySQL's documented degradations are still source comments, not published support-matrix caveats — ruling item 2 of #8739 has no card #9029

Description

@qq9340100

Filed unassigned by the dev seat working ruling item 1 of #8739 (teaching DIALECT_LEAK_PHRASINGS MySQL's phrasings). Duplicate-searched first, keyword + title over open issues: no existing card. Filed rather than ridden along — it lands in content/docs/**, outside that card's packages/types file surface, and the dispatch fenced it explicitly.

What was ruled, and what is missing

The maintainer's 2026-08-15 ruling on #8739 (comment 5302926756, provenance 「接受你的所有建议。」) declared MySQL a supported deployment target and enumerated four consequences. Three have a home:

itemwhere it lives
1 — teach the leak predicate MySQL's phrasingsdispatched, PR open
2 — publish the documented degradations as support-matrix caveatsnowhere — this card
3 — the same false claim in metadata-protocol's test prose#8822, merged via PR #8859
4 — the value-bearing Duplicate entry phrasing#8823, in the engine-core lane

Item 2 is the only one with no card, so it is the one that evaporates quietly.

The substance

Declaring MySQL supported converts two known degradations from implementation notes into promises a deployer needs before choosing MySQL. Both are currently recorded only in source comments, where a deployer will never see them:

  • No partial-index integrity guarantee on MySQL.metadata-protocol's view-definition-active-index.ts logs an operator-facing ERROR telling MySQL deployments to run the platform on SQLite or PostgreSQL for the guarantee. That sentence only makes sense addressed to a real deployment — and now that MySQL is one, it belongs in the docs rather than in a log line the deployer reads after committing.
  • uniqueViolationColumn usually returns nothing on MySQL.packages/types/src/unique-violation.ts states this as an accepted cost: MySQL's duplicate-entry message names an INDEX, never a column, so the conflicting-field answer degrades to generic copy. Deriving a column from an index name is explicitly refused there, with reasons. User-visible consequence: import errors and form-field conflict messages are less specific on MySQL than on SQLite or Postgres.

The docs already publish the capability side of MySQL (OS_DATABASE_DRIVER=mysql as a deployment knob, MysqlConfig as authorable datasource config, per-field MySQL DDL in types.mdx) — that asymmetry is precisely what made Option A the only answer consistent with what is published. The caveats are the other half of the same promise.

Not claimed

  • No defect, no failing test, no leak. Both degradations are deliberate, documented and correct where they live; this is about where they live now that the support question has an answer.
  • No opinion on the page or format. Whether this is a support-matrix table, a MySQL section on an existing deployment page, or per-page notes is the docs owner's call.
  • Scope not swept. I did not sweep content/docs/** for other places that imply dialect parity. Treat the two above as the ruling's named pair, not as an exhaustive list.

Related

Metadata

Metadata

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions