• unknown's avatar
    Background: · 91ab7076
    unknown authored
    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)
    91ab7076
sql_lex.h 34.5 KB