Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into bodhi.(none):/opt/local/work/mysql-5.0-runtime sql/sql_prepare.cc: Auto merged
This commit is contained in:
commit
42a41896f8
@ -1900,13 +1900,6 @@ void mysql_stmt_prepare(THD *thd, const char *packet, uint packet_length)
|
||||
/* Statement map deletes statement on erase */
|
||||
thd->stmt_map.erase(stmt);
|
||||
}
|
||||
else
|
||||
{
|
||||
const char *format= "[%lu] %.*b";
|
||||
mysql_log.write(thd, COM_STMT_PREPARE, format, stmt->id,
|
||||
stmt->query_length, stmt->query);
|
||||
|
||||
}
|
||||
/* check_prepared_statemnt sends the metadata packet in case of success */
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
@ -2289,13 +2282,6 @@ void mysql_stmt_execute(THD *thd, char *packet_arg, uint packet_length)
|
||||
test(flags & (ulong) CURSOR_TYPE_READ_ONLY));
|
||||
if (!(specialflag & SPECIAL_NO_PRIOR))
|
||||
my_pthread_setprio(pthread_self(), WAIT_PRIOR);
|
||||
if (error == 0)
|
||||
{
|
||||
const char *format= "[%lu] %.*b";
|
||||
mysql_log.write(thd, COM_STMT_EXECUTE, format, stmt->id,
|
||||
thd->query_length, thd->query);
|
||||
}
|
||||
|
||||
DBUG_VOID_RETURN;
|
||||
|
||||
set_params_data_err:
|
||||
@ -2879,6 +2865,29 @@ bool Prepared_statement::prepare(const char *packet, uint packet_len)
|
||||
init_stmt_after_parse(lex);
|
||||
state= Query_arena::PREPARED;
|
||||
flags&= ~ (uint) IS_IN_USE;
|
||||
|
||||
/*
|
||||
Log COM_EXECUTE to the general log. Note, that in case of SQL
|
||||
prepared statements this causes two records to be output:
|
||||
|
||||
Query PREPARE stmt from @user_variable
|
||||
Prepare <statement SQL text>
|
||||
|
||||
This is considered user-friendly, since in the
|
||||
second log entry we output the actual statement text.
|
||||
|
||||
Do not print anything if this is an SQL prepared statement and
|
||||
we're inside a stored procedure (also called Dynamic SQL) --
|
||||
sub-statements inside stored procedures are not logged into
|
||||
the general log.
|
||||
*/
|
||||
if (thd->spcont == NULL)
|
||||
{
|
||||
const char *format= "[%lu] %.*b";
|
||||
mysql_log.write(thd, COM_STMT_PREPARE, format, id,
|
||||
query_length, query);
|
||||
|
||||
}
|
||||
}
|
||||
DBUG_RETURN(error);
|
||||
}
|
||||
@ -3016,6 +3025,28 @@ bool Prepared_statement::execute(String *expanded_query, bool open_cursor)
|
||||
if (state == Query_arena::PREPARED)
|
||||
state= Query_arena::EXECUTED;
|
||||
|
||||
/*
|
||||
Log COM_EXECUTE to the general log. Note, that in case of SQL
|
||||
prepared statements this causes two records to be output:
|
||||
|
||||
Query EXECUTE <statement name>
|
||||
Execute <statement SQL text>
|
||||
|
||||
This is considered user-friendly, since in the
|
||||
second log entry we output values of parameter markers.
|
||||
|
||||
Do not print anything if this is an SQL prepared statement and
|
||||
we're inside a stored procedure (also called Dynamic SQL) --
|
||||
sub-statements inside stored procedures are not logged into
|
||||
the general log.
|
||||
*/
|
||||
if (error == 0 && thd->spcont == NULL)
|
||||
{
|
||||
const char *format= "[%lu] %.*b";
|
||||
mysql_log.write(thd, COM_STMT_EXECUTE, format, id,
|
||||
thd->query_length, thd->query);
|
||||
}
|
||||
|
||||
error:
|
||||
flags&= ~ (uint) IS_IN_USE;
|
||||
return error;
|
||||
|
Loading…
x
Reference in New Issue
Block a user