Prove native transactional table capabilities - #403
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Follow-up to #393 for #377. Provide the transaction guarantees needed by identity reservation before advertising a backend capability.
The maintainer approved the capability as a backend-neutral integration API. This is not a claim of unchanged-consumer MySQL implementation parity. The temporary scope separation is superseded; the API is restored at
34057b03e535a0324802030ebed1118b53023d2f, whose tree is identical to the testeddcfe6b4tree.Consumer adapter: Extra-Chill/data-machine#3485. Land this engine prerequisite first.
wpdb::supports_transactional_tables(array $tables): boolfor exact table sets. Require recognized canonical providers, matching mutation runtimes, admitted roots and permanent registered tables. Reject unknown, shadowed, arbitrary-provider, outside-root and read-only configurations.This is bounded coarse serialization, not MVCC, an InnoDB engine label or physical mysqli support. Existing five-second lock waits can return explicit contention failures. Direct filesystem writers bypassing native locking are outside this contract.
Verification
Tested MDI:
dcfe6b467d9d509271204faa313fc0cefa35c444.Companion Data Machine candidate:
4432c2433dbce2985654cc88f57dc3d5abc411f0.Repo-native reproduction (PHP with process-control support for independent-process probes):
Paired unmodified DME consumer suite, WordPress 7.1 / PHP 8.3, managed multisite PHPUnit with the shared WP-CLI bootstrap:
All 15 prior identity/upsert failure identities disappear. The four remaining failures require physical mysqli connections/handles. Dedicated Data Machine reservation tests also pass: 26 passed, 0 failed, 1 skipped / 27 on MySQL.
Operator-retained runs:
transaction-capability-full-native-dcfe6b4-4432c243,transaction-capability-full-mysql-dcfe6b4-4432c243, anddm-post-identity-mysql-4432c243-dedicated. Each retains its recipe and full JUnit. These are operator artifacts, not publicly hosted links; the commands above reproduce this repository's conformance checks.The pre-existing
smoke-native-table-replace.phphas two failures on both the merged baseline and isolation candidate; this PR does not claim to fix them. Full MySQL parity remains tracked in #377. No release or deployment is included.AI Assistance
OpenAI GPT-6 Astra (
openai/gpt-6-astra) via OpenCode investigated the requirements, implemented and reviewed the engine and capability changes through isolated agents, corrected cache and capability-boundary defects during review, and ran independent-process and paired native/MySQL validation under maintainer direction.