Database

MySQL 9.7 Just Made Enterprise-Only Features Free — and Your Laravel App Should Care

2026.05.11 · 65 views
MySQL 9.7 Just Made Enterprise-Only Features Free — and Your Laravel App Should Care

In-database JavaScript, JSON Duality, Dynamic Data Masking, the Hypergraph Optimizer, and OpenID Connect — the first MySQL LTS since 8.4 ships features that used to require Enterprise Edition (or a switch to PostgreSQL).

For 18 months the conventional advice for serious MySQL workloads in 2026 has been: stay on 8.4 LTS, watch the 9.x Innovation track from a safe distance, and do not even think about JavaScript stored functions until they are proven on someone else's production cluster. Last month that advice quietly expired.


MySQL 9.7.0 reached general availability on April 7, 2026, and as it lands in distribution channels through May, it is the first new MySQL LTS since 8.4. Under the "LTS" label Oracle is putting its name behind a list of features that the Postgres camp has been smug about for years — and a few that Postgres still doesn't have.


1. What actually shipped


The headline is in-database JavaScript (GraalVM-powered), finally promoted from preview to LTS-grade. You can now write CREATE FUNCTION ... LANGUAGE JAVASCRIPT directly in MySQL and call it from any SQL query. For PHP / Laravel teams who have been bouncing data out to a Node microservice just to do non-trivial transforms, that round trip becomes one query.


JSON Duality lets you project the same row set as both relational tables and JSON documents. For a React or Flutter front-end consuming a Laravel API, this means you can serve nested API payloads out of a single SELECT — with no Eloquent N+1, no overfetching, and no Mongo-shaped denormalization in your write path.


Dynamic data masking is the one feature I would push past every other for client work. PII (national ID, phone, email, address) can now be masked at column-grant time. A junior developer logged into staging sees ***-****-1234; the same query from the production payment service sees the real value. Previously this required Enterprise Edition.


OpenID Connect authentication lets you sign in to MySQL with the same identity provider you already use for SSO. No more shared service-account passwords sitting in .env files.


The Hypergraph Optimizer continues maturing, with much better plans for queries with many joins — typical CRM, e-commerce and reporting queries that used to need hand-tuned hints.


2. Why this matters for PHP, Laravel, and Flutter teams


If your stack is Laravel + MySQL, three things change immediately. First, your service layer can shrink — features that were "the database can't do this, write a job" are now SQL. Second, php artisan db:seed against staging can drop into masked mode, so you can hand the seed dump to a contractor without redacting it. Third, Laravel 13's first-party AI SDK plus in-database JavaScript means embedding generation, classification, or scoring can run inside the same transaction as the write — no eventual-consistency window, no broken queue worker leaving you with half-classified rows.


For Flutter teams hitting that same Laravel API, JSON Duality kills the most common backend complaint we hear: "the API response shape doesn't match the screen." You can shape responses per route from the database itself.


3. What to do this week


Don't upgrade production today. Do these in this order: spin up a 9.7 container, restore a recent staging dump, and run your full Pest / PHPUnit suite — looking for collation drift (utf8mb4_0900 defaults changed) and any reliance on the legacy optimizer's plan order. Then pick one read-heavy query that has more than four joins and benchmark on the hypergraph optimizer with EXPLAIN FORMAT=TREE. Then write your first JavaScript stored function — a slug normalizer, a phone-number canonicalizer, anything you currently do in middleware — and time how much PHP you delete. Then decide whether you adopt 9.7 LTS now or wait a quarter. If your client load is heavy on PII handling or many-join reports, the upgrade pays for itself by the end of June.


My Take


The story everyone is telling about 9.7 is "MySQL is catching up to Postgres." That misses the point. The actual story is that Oracle just made the upgrade boring — no migrations, no separate licensing, masking and JS and OIDC are simply on — and all the Laravel / Symfony / CodeIgniter shops who were wavering on PostgreSQL now have one fewer reason to switch. For independent web shops like ours, that is great news. We get to keep our deepest expertise and ship features that previously required either a second database or an Enterprise license your client wouldn't pay for.


The shops that will lose this year are the ones who treat MySQL as a passive data store. The shops that will win — including many of our small studio peers — are the ones who treat 9.7 as the application layer it now actually is.


Sources