>>>> 2011/12/13 16:10 -0500, Shawn Green (MySQL) >>>>
Many of you are missing the big picture. This flag (along with most of the others you can
use to describe a stored procedure) are meant to indicate to the replication system
whether it needs to log the CALL to this procedure and in which format.
Statements that only collect data (and don't even write to temporary tables) do not need
to be written into the binary log. Any stored procedures that change a table, even if
it's a temporary table, need to be marked as MODIFIES_SQL_DATA.
This answers my question! that the flags are for the replicator. I had the idea that they
were for the optimizer. In spite of my sharp comments, I know that in general it is
impossible to determine whether any program does anything, a reason for the compiler not
to enforce the flags on any procedure.