• Andrei Elkin's avatar
    Bug#13437900 - VALGRIND REPORTS A LEAK FOR REPL_IGNORE_SERVER_IDS · 8d154f7a
    Andrei Elkin authored
    There was memory leak when running some tests on PB2.
    The reason of the failure is an early return from change_master()
    that was supposed to deallocate a dyn-array.
    
    Fixed with relocating the dyn-array's destructor at ~LEX() that is
    the end of the session, per Gleb's patch idea.
    Two optimizations were done: the static buffer for the dyn-array to base on,
    and the array initialization is called precisely when it's necessary rather than
    per each CHANGE-MASTER as before.
     
    
    mysql-test/suite/rpl/t/rpl_empty_master_host.test:
      the test is binlog-format insensitive so it will be run with MIXED mode only.
    sql/sql_lex.cc:
      the new flag is initialized.
    sql/sql_lex.h:
      A new bool flag new member to LEX.mi is added to stay UP since after
      LEX.mi.repl_ignore_server_ids dynarray initialization was called
      for the first time on the session. So it is set once and its life time 
      is session.
      
      The array is destroyed at the end of the session.
    sql/sql_repl.cc:
      dyn-array destruction is relocated to ~LEX.
    sql/sql_yacc.yy:
      Refining logics of Lex->mi.repl_ignore_server_ids initialization.
      The array is initialized once a corresponding option in CHANGE MASTER token sequence
      is found.
      The fact of initialization is memorized into the new flag.
    8d154f7a
sql_lex.cc 92.6 KB