• Andrei Elkin's avatar
    Bug#13437900 - VALGRIND REPORTS A LEAK FOR REPL_IGNORE_SERVER_IDS · ed3e19ac
    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.
    
    Actually the same bug58915 was fixed in trunk with relocating the dyn-array
    destruction into THD::cleanup_after_query() which can't be bypassed.
    The current patch backports magne.mahre@oracle.com-20110203101306-q8auashb3d7icxho
    and adds 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.
    mysql-test/suite/rpl/t/rpl_server_id_ignore.test:
      the test is binlog-format insensitive so it will be run with MIXED mode only.
    sql/sql_class.cc:
      relocating the dyn-array
      destruction into THD::cleanup_after_query().
    sql/sql_lex.cc:
      LEX.mi zero initialization is done in LEX().
    sql/sql_lex.h:
      Optimization for repl_ignore_server_ids to base on a static buffer
      which size is chosen to fit to most common use cases.
    sql/sql_repl.cc:
      dyn-array destruction is relocated to THD::cleanup_after_query().
    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.
    ed3e19ac
sql_class.cc 141 KB