diff options
author | unknown <cmiller@zippy.cornsilk.net> | 2007-04-06 09:15:18 -0400 |
---|---|---|
committer | unknown <cmiller@zippy.cornsilk.net> | 2007-04-06 09:15:18 -0400 |
commit | fcb52609e4727cdf6f246e7817c0fa625749c5c4 (patch) | |
tree | f80fd4f330f95124b1f5560ce915ec1765b8ec62 /mysql-test/t/mysqlcheck.test | |
parent | c717287c22f2e18b31338d6ac7af5bf9c97e0b1f (diff) | |
download | mariadb-git-fcb52609e4727cdf6f246e7817c0fa625749c5c4.tar.gz |
Changing the state of whether we're recording profiling information
halfway through a query (as happens in "SET SESSION PROFILING = ...")
has a few side-effects, the worst of which is a memory leak for
prepared statements, which poke directly from the parser into the
profiling code (we don't have the query text when we need it) and
that overwrites a pointer to heap-allocated memory when the previous
statement turns on profiling.
Instead, now set a flag when we begin a new statement that tracks
whether profiling is on _at the start_ of the query. Use that to
track whether we gather info.
Additionally, use that AND use the state of the profiling variable
after the end of a query to know whether to store information about
the query that just finished.
mysql-test/r/profiling.result:
Testing whether profiling is on at the beginning of a query and at
the end of a query makes "SET SESSION PROFILING = ..." statements
disappear from the profiling. They were never reliable before.
sql/sql_profile.cc:
Check to see if profiling was enabled at the beginning of this query
before trying to store query_source. This avoids a memory leak for
prepared statements, which get here by direct means.
If profiling was toggled in this query, then don't store this query
profile.
sql/sql_profile.h:
Keep track of whether profiling is on.
Diffstat (limited to 'mysql-test/t/mysqlcheck.test')
0 files changed, 0 insertions, 0 deletions