Skip to content

fix(mysql): framework wire-compat — WordPress and Laravel run over the MySQL frontend - #11

Merged
ephpm-claude[bot] merged 2 commits into
mainfrom
fix/mysql-frontend-framework-compat
Jul 16, 2026
Merged

fix(mysql): framework wire-compat — WordPress and Laravel run over the MySQL frontend#11
ephpm-claude[bot] merged 2 commits into
mainfrom
fix/mysql-frontend-framework-compat

Conversation

@luthermonson

Copy link
Copy Markdown
Contributor

Closes the nine wire-compat gaps found by ePHPm's Turso gate-5 testing (ephpm/ephpm#188) — full WordPress 7.0 and Laravel 13 installs failed identically on BOTH backends, proving the gaps were frontend/translation-layer, not engine. Details in the commit message.

With this patch both suites run 20/20 green on rusqlite AND turso (turso == control exactly). 13 regression tests.

Includes a clearly-marked workaround for tursodatabase/turso#7466 (pragma TVF phantom-transaction, data-loss class) — our upstream fix PR is in flight; the heal is annotated for removal once a fixed engine version is pinned.

Suites: litewire-translate + litewire-mysql 212 tests, litewire-turso 44 tests, clippy clean.

luthermonson and others added 2 commits July 15, 2026 08:09
…r the MySQL frontend

Gate-5 testing (ephpm#188) pushed full WordPress 7.0 and Laravel 13
through the MySQL frontend for the first time and found nine gaps that
made BOTH installs fail identically on rusqlite and turso backends:

1. handshake banner "5.1.10-alpha-msql-proxy" - WP >= 6.5 refuses;
   now reports a modern MySQL-compatible version string
2. index prefix lengths `col(191)` unparseable (7/12 WP core tables)
3. CREATE TABLE options (ENGINE/CHARSET/COLLATE) passed through to
   SQLite (killed every Laravel migration)
4. inline KEY/INDEX constraints emitted verbatim (5 more WP tables)
5. INSERT ... ON DUPLICATE KEY UPDATE col=VALUES(col) upserts
6. SHOW FULL COLUMNS missing/mis-shaped (WP read core options as '')
7. SQL_CALC_FOUND_ROWS / FOUND_ROWS()
8. information_schema existence probes (Laravel migrate gate)
9. qualified UPDATE t SET t.col = ... column references

Plus a backend workaround: turso 0.7.0 pragma table-valued functions
leave the connection in a phantom-transaction state where later writes
are silently non-durable (tursodatabase/turso#7466 - upstream fix PR
in flight from us; the sql_uses_pragma_tvf() heal is marked for
removal when a fixed engine version is pinned).

Evidence: with this patch, WordPress (install, theme render, posts,
comments, options x100, generate 50, search-replace, plugin DDL) and
Laravel (migrate, seed, CRUD, tx commit/rollback, rollback, re-migrate)
run 20/20 green on BOTH engines - turso matches the rusqlite control
exactly. 13 new regression tests cover every gap.
The wire-compat fix was functionally complete (test + clippy green) but the
rustfmt check was red. This is `cargo fmt --all` output only — line-wrapping,
trailing commas, import collapsing — no logic change.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ChVRC9ZrvQarrctDwSy1S5
@ephpm-claude
ephpm-claude Bot merged commit 699e634 into main Jul 16, 2026
3 checks passed
luthermonson added a commit to ephpm/turso-cluster-e2e that referenced this pull request Jul 16, 2026
Both upstream gates are now closed: tursodatabase/turso#7855 merged
2026-07-16 (merge commit f2ba5a2) and ephpm/litewire#11 merged as
699e634. All turso pins move from the mutable fork branch
luthermonson/turso@fix/pragma-vtab-txn-state to the immutable upstream
main merge commit.

Re-verified on the upstream rev with the heal still disabled: all 44
litewire-turso tests pass, including the incident regression
pragma_tvf_read_does_not_poison_session.

Remaining unwind waits only on a turso crates.io release containing
f2ba5a2.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant