Comments 9
Такое поведение можно понять (хотя я бы не сказал, что оно очевидное), однако явных упоминаний этого я на сайте MySQL не нашёл. Например, тут про подобное поведение не сказано. Возможно, я плохо искал. Вы можете показать, где сказано, что prepare запоминает список колонок на момент создания statement?
Всё, что вы написали, действительно очевидно. Неочевидным, на мой взгляд, является тот факт, что при компиляции звёздочка разворачивается в полный список колонок. Вполне мог бы существовать байт-кодовый вариант, семантически эквивалентный выбору всех колонок.
Семантически это эквивалентно тому, что вы сами кешировали бы запросы в виде строк где-то у себя. И при изменении схемы Ваши кешированные запросы точно так же перестали бы работать.
Байт-код — это форма хранения для быстрого выполнения кешированных запросов, а не способ хранения.
Байт-код — это форма хранения для быстрого выполнения кешированных запросов, а не способ хранения.
Sign up to leave a comment.
MySQL prepared statement не переносит изменение таблицы