MySQL ERROR 1093 forbids referencing the UPDATE target inside a subquery; the existing UPDATE ... WHERE id = (SELECT id FROM topology_mutations ...) form blew up on every mutation claim under the MySQL backend, so no mutation ever progressed past pending. Wrap the inner SELECT in a derived table (SELECT id FROM (...) AS _next). MySQL materialises the derived rowset before applying the UPDATE, sidestepping 1093. SQLite accepts both forms, so the single-statement atomic claim semantics are preserved on both backends — racing watchers still serialise correctly.
75 KiB
75 KiB