• Команда MySQL закрыла один из самых известных багов-долгожителей. Тикет для баги зав...
• Команда MySQL закрыла один из самых известных багов-долгожителей. Тикет для баги завели ещё летом 2005 года, а исправили спустя 20 лет и 9 месяцев, 20 марта 2026 года. На этом фоне пользователи иронично шутили, поздравляя баг каждый год с днём рождения! • Суть ошибки заключалась в том, что при каскадных изменениях через внешние ключи MySQL обновлял строки в дочерних таблицах, но не запускал для них триггеры. Например, если в родительской таблице удаляли запись, то в дочерней таблице срабатывал ON DELETE SET NULL или ON DELETE CASCADE, и данные в ней действительно менялись. При этом триггер AFTER UPDATE или AFTER DELETE, который разработчик ожидал увидеть при таком изменении, не запускался. • Разработчики отмечают, что это давнее архитектурное ограничение MySQL. Всё из-за того, что каскадные операции внешних ключей выполняются внутри InnoDB, а триггеры находятся на SQL-уровне. Возможность исправить этот баг появилась только в MySQL 9.6, когда команда перенесла обработку внешних ключей на SQL-уровень. • Новое поведение по умолчанию выключено, а для активации предусмотрена переменная enable_cascade_triggers. Разработчики просят внедрять опцию внимательно. Если приложение годами нормально работало без запуска триггеров при каскадных изменениях, то активация опции может изменить результаты операций и нарушить логику. • К слову, на Reddit продолжают обсуждать ошибку и шутить о возрасте бага: - Какого хрена? Я полагался на этот функционал. Верните все обратно! - Если этот баг фиксили так долго, то у многих должно быть бесчисленное количество костылей, и я не удивлюсь, если хотя бы один из них сломается из-за этого исправления. - Ребята, моя девушка говорит, что выйдет за меня замуж, как только эта ошибка будет решена. У нас есть какие-нибудь новости по этому поводу? P.S: Мы ждем с 2017 года. - [18 января 2021 0:49] Просто проверял, не пережил ли наш любимый баг пандемию covid-19. Рад видеть, что все хорошо. - эта ошибка старше меня. - Я никогда не думал, что доживу до этого дня! https://bugs.mysql.com/bug.php?id=11472 #SQL #Разное