Metadata changes to tables or views referred to by prepared
statements are detected and cause automatic repreparation of the
statement when it is next executed. This applies to prepared
statements processed at the SQL level (using the
PREPARE statement) and those
processed using the binary client/server protocol (using the
mysql_stmt_prepare() C API
function).
The server attempts repreparation up to three times. An error occurs if all attempts fail.
Metadata changes occur for DDL statements such as those that
create, drop, alter, rename, or truncate tables, or that analyze,
optimize, or repair tables. Repreparation also occurs after
referenced tables or views are flushed from the table definition
cache, either implicitly to make room for new entries in the
cache, or explicitly due to
FLUSH TABLES.
Table content changes (for example, with
INSERT or
UPDATE) do not cause repreparation,
nor do SELECT statements.
Repreparation is automatic, but to the extent that it occurs, diminishes prepared statement performance.
Repreparation uses the default database and SQL mode that were in effect for the original preparation.
The
Com_stmt_reprepare
status variable tracks the number of repreparations.