8.0 defaults to utf8mb4_0900_ai_ci and a table converted from 5.7 is almost certainly utf8mb4_general_ci — and joining two columns with different collations cannot use an index on either.…
Almost every MySQL tuning guide lists forty variables, and on a dedicated server the first one accounts for most of the difference — it is the cache that…
array_column has worked on objects since 7.0, and it reads properties rather than calling getters — so it silently returns nothing for a well-encapsulated class. It does respect…
A repository test against a mocked connection asserts that the code calls the methods you expected, which is a restatement of the code rather than a check on…
Every option with autoload set to yes is fetched in a single query on every page load, and a plugin storing a megabyte there makes every request slower…
A full analysis on a large codebase takes long enough that nobody runs it before committing, so every finding arrives from CI after the context has been lost.…
3.7 shipped in November with optional chaining, which had been the most-requested feature for years and which replaces a specific and very common defensive pattern. The distinction from…