diff options
author | unknown <pem@mysql.com> | 2005-11-17 11:11:48 +0100 |
---|---|---|
committer | unknown <pem@mysql.com> | 2005-11-17 11:11:48 +0100 |
commit | 91ab707678870966b9410cd3bdd783eb2a7c19e4 (patch) | |
tree | 56f597a525587468da328317b4cb9b936d5a2d3f /sql/sp_pcontext.h | |
parent | 14637f97cdd7ff4a7d60c09052e2e280ee57c957 (diff) | |
download | mariadb-git-91ab707678870966b9410cd3bdd783eb2a7c19e4.tar.gz |
Background:
Since long, the compiled code of stored routines has been printed in the trace file
when starting mysqld with the "--debug" flag. (At creation time only, and only in
debug builds of course.) This has been helpful when debugging stored procedure
execution, but it's a bit awkward to use. Also, the printing of some of the
instructions is a bit terse, in particular for sp_instr_stmt where only the command
code was printed.
This improves the printout of several of the instructions, and adds the debugging-
only commands "show procedure code <name>" and "show function code <name>".
(In non-debug builds they are not available.)
sql/lex.h:
New symbol for debug-only command (e.g. show procedure code).
sql/sp_head.cc:
Fixed some minor debug-mode bugs in show_create_*().
New method for debugging: sp_head::show_routine_code() - returns the "assembly code"
for a stored routine as a result set.
Improved the print() methods for many sp_instr* classes, particularly for
sp_instr_stmt where the query string is printed as well (up to a max length, just
to give a hint of which statement it is). Also print the names of variables and
cursors in some instruction.
sql/sp_head.h:
New debugging-only method in sp_head: show_routine_code().
Added offset member to sp_instr_cpush for improved debug printing.
sql/sp_pcontext.cc:
Moved find_pvar(uint i) method from sp_pcontext.h, and made it work for all
frames, not just the first one. (For debugging purposes)
Added a similar find_cursor(uint i, ...) method, for debugging.
sql/sp_pcontext.h:
Moved find_pvar(uint i) method to sp_pcontext.cc.
Added a similar find_cursor(uint i, ...) method, for debugging.
sql/sql_lex.h:
Added new sql_command codes for debugging.
sql/sql_parse.cc:
Added new commands for debugging, e.g. "show procedure code".
sql/sql_yacc.yy:
Added new commands for debugging purposes:
"show procedure code ..." and "show function code ...".
These are only enabled in debug builds, otherwise they result in a syntax error.
(I.e. they don't exist)
Diffstat (limited to 'sql/sp_pcontext.h')
-rw-r--r-- | sql/sp_pcontext.h | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/sql/sp_pcontext.h b/sql/sp_pcontext.h index bd2259cb6fb..77e749fe3ad 100644 --- a/sql/sp_pcontext.h +++ b/sql/sp_pcontext.h @@ -172,16 +172,7 @@ class sp_pcontext : public Sql_alloc // Find by index sp_pvar_t * - find_pvar(uint i) - { - sp_pvar_t *p; - - if (i < m_pvar.elements) - get_dynamic(&m_pvar, (gptr)&p, i); - else - p= NULL; - return p; - } + find_pvar(uint i); // // Labels @@ -261,6 +252,10 @@ class sp_pcontext : public Sql_alloc my_bool find_cursor(LEX_STRING *name, uint *poff, my_bool scoped=0); + /* Find by index (for debugging only) */ + my_bool + find_cursor(uint i, LEX_STRING *n); + inline uint max_cursors() { |