• unknown's avatar
    Fix for BUG#13549 "Server crash with nested stored procedures · 6574612d
    unknown authored
    if inner routine has more local variables than outer one, and
    one of its last variables was used as argument to NOT operator".
    
    THD::spcont was non-0 when we were parsing stored routine/trigger
    definition during execution of another stored routine. This confused
    methods of Item_splocal and forced them use wrong runtime context.
    Fix ensures that we always have THD::spcont equal to zero during
    routine/trigger body parsing. This also allows to avoid problems
    with errors which occur during parsing and SQL exception handlers.
    
    
    mysql-test/r/sp.result:
      Test suite for bug#13549.
    mysql-test/r/trigger.result:
      Test suite for bug#13549.
    mysql-test/t/sp.test:
      Test suite for bug#13549.
    mysql-test/t/trigger.test:
      Test suite for bug#13549.
    sql/item.cc:
      Protection against using wrong context by SP local variable.
    sql/item.h:
      Protection against using wrong context by SP local variable.
    sql/protocol.cc:
      An incorrect macro name fixed.
    sql/protocol.h:
      An incorrect macro name fixed.
    sql/sp.cc:
      Do not allow SP which we are parsing to use other SP
      context (BUG#13549).
    sql/sp_head.cc:
      Protection against using wrong context by SP local variable.
    sql/sp_rcontext.h:
      Protection against using wrong context by SP local variable.
    sql/sql_cache.h:
      An incorrect macro name fixed.
    sql/sql_class.cc:
      Protection against using wrong context by SP local variable.
    sql/sql_class.h:
      Protection against using wrong context by SP local variable.
    sql/sql_trigger.cc:
      Do not allow Trigger which we are parsing to use
      other SP context (BUG#13549).
    sql/sql_yacc.yy:
      Protection against using wrong context by SP local variable.
    6574612d
sql_trigger.cc 26.2 KB