An error occurred fetching the project authors.
  1. 07 Apr, 2013 1 commit
    • Sergei Golubchik's avatar
      my_dir() cleanup · bbbd7ced
      Sergei Golubchik authored
      * replace pointer acrobatics with a struct
      * make sorting explicit: MY_DONT_SORT -> MY_WANT_SORT
      (if you want something to be done - say it. fixes all places where
      my_dir() was used without thinking)
      * typo s/number_off_files/number_of_files/
      * directory_file_name() doesn't need to be extern
      * remove #ifdef __BORLANDC__
      * ignore '.' and '..' entries
      bbbd7ced
  2. 28 Mar, 2013 1 commit
  3. 27 Mar, 2013 2 commits
    • unknown's avatar
      MDEV-26: Global transaction ID. · b0389850
      unknown authored
      Test crashing the master, check that it recovers the binlog state.
      
      Fix one bug introduced by previous commit (crash-recoved binlog state was
      overwritten by loading stale binlog state file).
      
      Fix Windows build error.
      b0389850
    • unknown's avatar
      MDEV-26: Global transaction ID. · 0fdbdde4
      unknown authored
      Implement test case rpl_gtid_stop_start.test to test normal stop and restart
      of master and slave mysqld servers.
      
      Fix a couple bugs found with the test:
      
       - When InnoDB is disabled (no XA), the binlog state was not read when master
         mysqld starts.
      
       - Remove old code that puts a bogus D-S-0 into the initial binlog state, it
         is not correct in current design.
      
       - Fix memory leak in gtid_find_binlog_file().
      0fdbdde4
  4. 25 Mar, 2013 1 commit
    • unknown's avatar
      MDEV-4322: Race in binlog checkpointing during server shutdown. · 22f91edd
      unknown authored
      During server shutdown, we need to wait for binlog checkpointing to
      finish in the binlog background thread before closing the binlog.
      
      This was not done, so we could get assert and failure to finish the
      final binlog checkpoint if shutdown happened in the middle.
      22f91edd
  5. 21 Mar, 2013 1 commit
    • unknown's avatar
      MDEV-26: Global transaction ID. · 9bb989a9
      unknown authored
      Fix MDEV-4275 - I/O thread restart duplicates events in the relay log.
      The first time we connect to master after CHANGE MASTER or restart, we connect
      from the GTID position. But then subsequent reconnects or IO thread restarts
      reconnect with the old-style file/offset binlog pos from where it left off at
      last disconnect. This is necessary to avoid duplicate events in the relay
      logs, as there is nothing that synchronises the SQL thread update of GTID
      state (multiple threads in case of multi-source) with IO thread reconnects.
      
      Test cases.
      
      Some small cleanups and fixes.
      9bb989a9
  6. 18 Mar, 2013 1 commit
    • unknown's avatar
      MDEV-26: Global transaction ID. · 9d9ddad7
      unknown authored
      Fix things so that a master can switch with MASTER_GTID_POS=AUTO to a slave
      that was previously running with log_slave_updates=0, by looking into the
      slave replication state on the master when the slave requests something not
      present in the binlog.
      
      Be a bit more strict about what position the slave can ask for, to avoid some
      easy-to-hit misconfiguration errors.
      
      Start over with seq_no counter when RESET MASTER.
      9d9ddad7
  7. 22 Feb, 2013 2 commits
    • unknown's avatar
      MDEV-26: Global Transaction ID · 2cf3d61f
      unknown authored
       - Fix skipping initial MyISAM DML when connecting using GTID.
      
       - Fix RESET MASTER not clearing in-memory binlog state.
      
       - Fix not reading standalone flag in Gtid_log_event::peek().
      
       - Fix skipping DDL that the slave has already seen when using GTID position.
      2cf3d61f
    • unknown's avatar
      MDEV-26: Global Transaction ID · fff47f40
      unknown authored
       - Fix that binlog_gtid_pos() (and hence slave connect) does not work
         correctly in the very first binlog file (due to not logging empty
         Gtid_list_log_event).
      
       - Remove one instance of the stupid domain_id-0-is-implicit.
      
       - Rename the confusing Gtid_Pos_Auto in SHOW SLAVE STATUS to Using_Gtid.
      
       - Fix memory leak.
      fff47f40
  8. 25 Jan, 2013 1 commit
    • unknown's avatar
      MDEV-26: Global transaction ID. · 1d357776
      unknown authored
      When starting slave, check binlog state in addition to mysql.rpl_slave.state.
      
      This allows to switch a previous master to be a slave directly
      with MASTER_GTID_POS=AUTO.
      1d357776
  9. 23 Jan, 2013 2 commits
    • Sergei Golubchik's avatar
      cleanup: use MYF() for mysys flags · 682da0aa
      Sergei Golubchik authored
      682da0aa
    • Michael Widenius's avatar
      MDEV-4011 Added per thread memory counting and usage · a260b155
      Michael Widenius authored
      Base code and idea from a patch from by plinux at Taobao.
      
      The idea is that we mark all memory that are thread specific with MY_THREAD_SPECIFIC.
      Memory counting is done per thread in the my_malloc_size_cb_func callback function from my_malloc().
      There are plenty of new asserts to ensure that for a debug server the counting is correct.
      
      Information_schema.processlist gets two new columns: MEMORY_USED and EXAMINED_ROWS.
      - The later is there mainly to show how query is progressing.
      
      The following changes in interfaces was needed to get this to work:
      - init_alloc_root() amd init_sql_alloc() has extra option so that one can mark memory with MY_THREAD_SPECIFIC
      - One now have to use alloc_root_set_min_malloc() to set min memory to be allocated by alloc_root()
      - my_init_dynamic_array()  has extra option so that one can mark memory with MY_THREAD_SPECIFIC
      - my_net_init() has extra option so that one can mark memory with MY_THREAD_SPECIFIC
      - Added flag for hash_init() so that one can mark hash table to be thread specific.
      - Added flags to init_tree() so that one can mark tree to be thread specific.
      - Removed with_delete option to init_tree(). Now one should instead use MY_TREE_WITH_DELETE_FLAG.
      - Added flag to Warning_info::Warning_info() if the structure should be fully initialized.
      - String elements can now be marked as thread specific.
      - Internal HEAP tables are now marking it's memory as MY_THREAD_SPECIFIC.
      - Changed type of myf from int to ulong, as this is always a set of bit flags.
      
      Other things:
      - Removed calls to net_end() and thd->cleanup() as these are now done in ~THD()
      - We now also show EXAMINED_ROWS in SHOW PROCESSLIST
      - Added new variable 'memory_used'
      - Fixed bug where kill_threads_for_user() was using the wrong mem_root to allocate memory.
      - Removed calls to the obsoleted function init_dynamic_array()
      - Use set_current_thd() instead of my_pthread_setspecific_ptr(THR_THD,...)
      
      
      client/completion_hash.cc:
        Updated call to init_alloc_root()
      client/mysql.cc:
        Updated call to init_alloc_root()
      client/mysqlbinlog.cc:
        init_dynamic_array() -> my_init_dynamic_array()
        Updated call to init_alloc_root()
      client/mysqlcheck.c:
        Updated call to my_init_dynamic_array()
      client/mysqldump.c:
        Updated call to init_alloc_root()
      client/mysqltest.cc:
        Updated call to init_alloc_root()
        Updated call to my_init_dynamic_array()
        Fixed compiler warnings
      extra/comp_err.c:
        Updated call to my_init_dynamic_array()
      extra/resolve_stack_dump.c:
        Updated call to my_init_dynamic_array()
      include/hash.h:
        Added HASH_THREAD_SPECIFIC
      include/heap.h:
        Added flag is internal temporary table.
      include/my_dir.h:
        Safety fix: Ensure that MY_DONT_SORT and MY_WANT_STAT don't interfer with other mysys flags
      include/my_global.h:
        Changed type of myf from int to ulong, as this is always a set of bit flags.
      include/my_sys.h:
        Added MY_THREAD_SPECIFIC and MY_THREAD_MOVE
        Added malloc_flags to DYNAMIC_ARRAY
        Added extra mysys flag argument to my_init_dynamic_array()
        Removed deprecated functions init_dynamic_array() and my_init_dynamic_array.._ci
        Updated paramaters for init_alloc_root()
      include/my_tree.h:
        Added my_flags to allow one to use MY_THREAD_SPECIFIC with hash tables.
        Removed with_delete. One should now instead use MY_TREE_WITH_DELETE_FLAG
        Updated parameters to init_tree()
      include/myisamchk.h:
        Added malloc_flags to allow one to use MY_THREAD_SPECIFIC for checks.
      include/mysql.h:
        Added MYSQL_THREAD_SPECIFIC_MALLOC
        Used 'unused1' to mark memory as thread specific.
      include/mysql.h.pp:
        Updated file
      include/mysql_com.h:
        Used 'unused1' to mark memory as thread specific.
        Updated parameters for my_net_init()
      libmysql/libmysql.c:
        Updated call to init_alloc_root() to mark memory thread specific.
      libmysqld/emb_qcache.cc:
        Updated call to init_alloc_root()
      libmysqld/lib_sql.cc:
        Updated call to init_alloc_root()
      mysql-test/r/create.result:
        Updated results
      mysql-test/r/user_var.result:
        Updated results
      mysql-test/suite/funcs_1/datadict/processlist_priv.inc:
        Update to handle new format of SHOW PROCESSLIST
      mysql-test/suite/funcs_1/datadict/processlist_val.inc:
        Update to handle new format of SHOW PROCESSLIST
      mysql-test/suite/funcs_1/r/is_columns_is.result:
        Update to handle new format of SHOW PROCESSLIST
      mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result:
        Updated results
      mysql-test/suite/funcs_1/r/processlist_val_no_prot.result:
        Updated results
      mysql-test/t/show_explain.test:
        Fixed usage of debug variable so that one can run test with --debug
      mysql-test/t/user_var.test:
        Added test of memory_usage variable.
      mysys/array.c:
        Added extra my_flags option to init_dynamic_array() and init_dynamic_array2() so that one can mark memory with MY_THREAD_SPECIFIC
        All allocated memory is marked with the given my_flags.
        Removed obsolete function init_dynamic_array()
      mysys/default.c:
        Updated call to init_alloc_root()
        Updated call to my_init_dynamic_array()
      mysys/hash.c:
        Updated call to my_init_dynamic_array_ci().
        Allocated memory is marked with MY_THREAD_SPECIFIC if HASH_THREAD_SPECIFIC is used.
      mysys/ma_dyncol.c:
        init_dynamic_array() -> my_init_dynamic_array()
        Added #if to get rid of compiler warnings
      mysys/mf_tempdir.c:
        Updated call to my_init_dynamic_array()
      mysys/my_alloc.c:
        Added extra parameter to init_alloc_root() so that one can mark memory with MY_THREAD_SPECIFIC
        Extend MEM_ROOT with a flag if memory is thread specific.
        This is stored in block_size, to keep the size of the MEM_ROOT object identical as before.
        Allocated memory is marked with MY_THREAD_SPECIFIC if used with init_alloc_root()
      mysys/my_chmod.c:
        Updated DBUG_PRINT because of change of myf type
      mysys/my_chsize.c:
        Updated DBUG_PRINT because of change of myf type
      mysys/my_copy.c:
        Updated DBUG_PRINT because of change of myf type
      mysys/my_create.c:
        Updated DBUG_PRINT because of change of myf type
      mysys/my_delete.c:
        Updated DBUG_PRINT because of change of myf type
      mysys/my_error.c:
        Updated DBUG_PRINT because of change of myf type
      mysys/my_fopen.c:
        Updated DBUG_PRINT because of change of myf type
      mysys/my_fstream.c:
        Updated DBUG_PRINT because of change of myf type
      mysys/my_getwd.c:
        Updated DBUG_PRINT because of change of myf type
      mysys/my_lib.c:
        Updated call to init_alloc_root()
        Updated call to my_init_dynamic_array()
        Updated DBUG_PRINT because of change of myf type
      mysys/my_lock.c:
        Updated DBUG_PRINT because of change of myf type
      mysys/my_malloc.c:
        Store at start of each allocated memory block the size of the block and if the block is thread specific.
        Call malloc_size_cb_func, if set, with the memory allocated/freed.
        Updated DBUG_PRINT because of change of myf type
      mysys/my_open.c:
        Updated DBUG_PRINT because of change of myf type
      mysys/my_pread.c:
        Updated DBUG_PRINT because of change of myf type
      mysys/my_read.c:
        Updated DBUG_PRINT because of change of myf type
      mysys/my_redel.c:
        Updated DBUG_PRINT because of change of myf type
      mysys/my_rename.c:
        Updated DBUG_PRINT because of change of myf type
      mysys/my_seek.c:
        Updated DBUG_PRINT because of change of myf type
      mysys/my_sync.c:
        Updated DBUG_PRINT because of change of myf type
      mysys/my_thr_init.c:
        Ensure that one can call my_thread_dbug_id() even if thread is not properly initialized.
      mysys/my_write.c:
        Updated DBUG_PRINT because of change of myf type
      mysys/mysys_priv.h:
        Updated parameters to sf_malloc and sf_realloc()
      mysys/safemalloc.c:
        Added checking that for memory marked with MY_THREAD_SPECIFIC that it's the same thread that is allocation and freeing the memory.
        Added sf_malloc_dbug_id() to allow MariaDB to specify which THD is handling the memory.
        Added my_flags arguments to sf_malloc() and sf_realloc() to be able to mark memory with MY_THREAD_SPECIFIC.
        Added sf_report_leaked_memory() to get list of memory not freed by a thread.
      mysys/tree.c:
        Added flags to init_tree() so that one can mark tree to be thread specific.
        Removed with_delete option to init_tree(). Now one should instead use MY_TREE_WITH_DELETE_FLAG.
        Updated call to init_alloc_root()
        All allocated memory is marked with the given malloc flags
      mysys/waiting_threads.c:
        Updated call to my_init_dynamic_array()
      sql-common/client.c:
        Updated call to init_alloc_root() and my_net_init() to mark memory thread specific.
        Updated call to my_init_dynamic_array().
        Added MYSQL_THREAD_SPECIFIC_MALLOC so that client can mark memory as MY_THREAD_SPECIFIC.
      sql-common/client_plugin.c:
        Updated call to init_alloc_root()
      sql/debug_sync.cc:
        Added MY_THREAD_SPECIFIC to allocated memory.
      sql/event_scheduler.cc:
        Removed calls to net_end() as this is now done in ~THD()
        Call set_current_thd() to ensure that memory is assigned to right thread.
      sql/events.cc:
        my_pthread_setspecific_ptr(THR_THD,...) -> set_current_thd()
      sql/filesort.cc:
        Added MY_THREAD_SPECIFIC to allocated memory.
      sql/filesort_utils.cc:
        Added MY_THREAD_SPECIFIC to allocated memory.
      sql/ha_ndbcluster.cc:
        Updated call to init_alloc_root()
        Updated call to my_net_init()
        Removed calls to net_end() and thd->cleanup() as these are now done in ~THD()
      sql/ha_ndbcluster_binlog.cc:
        Updated call to my_net_init()
        Updated call to init_sql_alloc()
        Removed calls to net_end() and thd->cleanup() as these are now done in ~THD()
      sql/ha_partition.cc:
        Updated call to init_alloc_root()
      sql/handler.cc:
        Added MY_THREAD_SPECIFIC to allocated memory.
        Added missing call to my_dir_end()
      sql/item_func.cc:
        Added MY_THREAD_SPECIFIC to allocated memory.
      sql/item_subselect.cc:
        Added MY_THREAD_SPECIFIC to allocated memory.
      sql/item_sum.cc:
        Added MY_THREAD_SPECIFIC to allocated memory.
      sql/log.cc:
        More DBUG
        Updated call to init_alloc_root()
      sql/mdl.cc:
        Added MY_THREAD_SPECIFIC to allocated memory.
      sql/mysqld.cc:
        Added total_memory_used
        Updated call to init_alloc_root()
        Move mysql_cond_broadcast() before my_thread_end()
        Added mariadb_dbug_id() to count memory per THD instead of per thread.
        Added my_malloc_size_cb_func() callback function for my_malloc() to count memory.
        Move initialization of mysqld_server_started and mysqld_server_initialized earlier.
        Updated call to my_init_dynamic_array().
        Updated call to my_net_init().
        Call my_pthread_setspecific_ptr(THR_THD,...) to ensure that memory is assigned to right thread.
        Added status variable 'memory_used'.
        Updated call to init_alloc_root()
        my_pthread_setspecific_ptr(THR_THD,...) -> set_current_thd()
      sql/mysqld.h:
        Added set_current_thd()
      sql/net_serv.cc:
        Added new parameter to my_net_init() so that one can mark memory with MY_THREAD_SPECIFIC.
        Store in net->thread_specific_malloc if memory is thread specific.
        Mark memory to be thread specific if requested.
      sql/opt_range.cc:
        Updated call to my_init_dynamic_array()
        Updated call to init_sql_alloc()
        Added MY_THREAD_SPECIFIC to allocated memory.
      sql/opt_subselect.cc:
        Updated call to init_sql_alloc() to mark memory thread specific.
      sql/protocol.cc:
        Fixed compiler warning
      sql/records.cc:
        Added MY_THREAD_SPECIFIC to allocated memory.
      sql/rpl_filter.cc:
        Updated call to my_init_dynamic_array()
      sql/rpl_handler.cc:
        Updated call to my_init_dynamic_array2()
      sql/rpl_handler.h:
        Updated call to init_sql_alloc()
      sql/rpl_mi.cc:
        Updated call to my_init_dynamic_array()
      sql/rpl_tblmap.cc:
        Updated call to init_alloc_root()
      sql/rpl_utility.cc:
        Updated call to my_init_dynamic_array()
      sql/slave.cc:
        Initialize things properly before calling functions that allocate memory.
        Removed calls to net_end() as this is now done in ~THD()
      sql/sp_head.cc:
        Updated call to init_sql_alloc()
        Updated call to my_init_dynamic_array()
        Added parameter to warning_info() that it should be fully initialized.
      sql/sp_pcontext.cc:
        Updated call to my_init_dynamic_array()
      sql/sql_acl.cc:
        Updated call to init_sql_alloc()
        Updated call to my_init_dynamic_array()
        my_pthread_setspecific_ptr(THR_THD,...) -> set_current_thd()
      sql/sql_admin.cc:
        Added parameter to warning_info() that it should be fully initialized.
      sql/sql_analyse.h:
        Updated call to init_tree() to mark memory thread specific.
      sql/sql_array.h:
        Updated call to my_init_dynamic_array() to mark memory thread specific.
      sql/sql_audit.cc:
        Updated call to my_init_dynamic_array()
      sql/sql_base.cc:
        Updated call to init_sql_alloc()
        my_pthread_setspecific_ptr(THR_THD,...) -> set_current_thd()
      sql/sql_cache.cc:
        Updated comment
      sql/sql_class.cc:
        Added parameter to warning_info() that not initialize it until THD is fully created.
        Updated call to init_sql_alloc()
        Mark THD::user_vars has to be thread specific.
        Updated call to my_init_dynamic_array()
        Ensure that memory allocated by THD is assigned to the THD.
        More DBUG
        Always acll net_end() in ~THD()
        Assert that all memory signed to this THD is really deleted at ~THD.
        Fixed set_status_var_init() to not reset memory_used.
        my_pthread_setspecific_ptr(THR_THD,...) -> set_current_thd()
      sql/sql_class.h:
        Added MY_THREAD_SPECIFIC to allocated memory.
        Added malloc_size to THD to record allocated memory per THD.
      sql/sql_delete.cc:
        Added MY_THREAD_SPECIFIC to allocated memory.
      sql/sql_error.cc:
        Added 'initialize' parameter to Warning_info() to say if should allocate memory for it's structures.
        This is used by THD::THD() to not allocate memory until THD is ready.
        Added Warning_info::free_memory()
      sql/sql_error.h:
        Updated Warning_info() class.
      sql/sql_handler.cc:
        Updated call to init_alloc_root() to mark memory thread specific.
      sql/sql_insert.cc:
        More DBUG
      sql/sql_join_cache.cc:
        Added MY_THREAD_SPECIFIC to allocated memory.
      sql/sql_lex.cc:
        Updated call to my_init_dynamic_array()
      sql/sql_lex.h:
        Updated call to my_init_dynamic_array()
      sql/sql_load.cc:
        Added MY_THREAD_SPECIFIC to allocated memory.
      sql/sql_parse.cc:
        Removed calls to net_end() and thd->cleanup() as these are now done in ~THD()
        Ensure that examined_row_count() is reset before query.
        Fixed bug where kill_threads_for_user() was using the wrong mem_root to allocate memory.
        my_pthread_setspecific_ptr(THR_THD,...) -> set_current_thd()
        Don't restore thd->status_var.memory_used when restoring thd->status_var
      sql/sql_plugin.cc:
        Updated call to init_alloc_root()
        Updated call to my_init_dynamic_array()
        Don't allocate THD on the stack, as this causes problems with valgrind when doing thd memory counting.
        my_pthread_setspecific_ptr(THR_THD,...) -> set_current_thd()
      sql/sql_prepare.cc:
        Added parameter to warning_info() that it should be fully initialized.
        Updated call to init_sql_alloc() to mark memory thread specific.
      sql/sql_reload.cc:
        my_pthread_setspecific_ptr(THR_THD,...) -> set_current_thd()
      sql/sql_select.cc:
        Updated call to my_init_dynamic_array() and init_sql_alloc() to mark memory thread specific.
        Added MY_THREAD_SPECIFIC to allocated memory.
        More DBUG
      sql/sql_servers.cc:
        Updated call to init_sql_alloc() to mark memory some memory thread specific.
        my_pthread_setspecific_ptr(THR_THD,...) -> set_current_thd()
      sql/sql_show.cc:
        Updated call to my_init_dynamic_array()
        Mark my_dir() memory thread specific.
        Use my_pthread_setspecific_ptr(THR_THD,...) to mark that allocated memory should be allocated to calling thread.
        More DBUG.
        Added malloc_size and examined_row_count to SHOW PROCESSLIST.
        Added MY_THREAD_SPECIFIC to allocated memory.
        Updated call to init_sql_alloc()
        Added parameter to warning_info() that it should be fully initialized.
      sql/sql_statistics.cc:
        Fixed compiler warning
      sql/sql_string.cc:
        String elements can now be marked as thread specific.
      sql/sql_string.h:
        String elements can now be marked as thread specific.
      sql/sql_table.cc:
        Updated call to init_sql_alloc() and my_malloc() to mark memory thread specific
        my_pthread_setspecific_ptr(THR_THD,...) -> set_current_thd()
        Fixed compiler warning
      sql/sql_test.cc:
        Updated call to my_init_dynamic_array() to mark memory thread specific.
      sql/sql_trigger.cc:
        Updated call to init_sql_alloc()
      sql/sql_udf.cc:
        Updated call to init_sql_alloc()
        my_pthread_setspecific_ptr(THR_THD,...) -> set_current_thd()
      sql/sql_update.cc:
        Added MY_THREAD_SPECIFIC to allocated memory.
      sql/table.cc:
        Updated call to init_sql_alloc().
        Mark memory used by temporary tables, that are not for slave threads, as MY_THREAD_SPECIFIC
        Updated call to init_sql_alloc()
      sql/thr_malloc.cc:
        Added my_flags argument to init_sql_alloc() to be able to mark memory as MY_THREAD_SPECIFIC.
      sql/thr_malloc.h:
        Updated prototype for init_sql_alloc()
      sql/tztime.cc:
        Updated call to init_sql_alloc()
        Updated call to init_alloc_root() to mark memory thread specific.
        my_pthread_setspecific_ptr(THR_THD,...) -> set_current_thd()
      sql/uniques.cc:
        Updated calls to init_tree(), my_init_dynamic_array() and my_malloc() to mark memory thread specific.
      sql/unireg.cc:
        Added MY_THREAD_SPECIFIC to allocated memory.
      storage/csv/ha_tina.cc:
        Updated call to init_alloc_root()
      storage/federated/ha_federated.cc:
        Updated call to init_alloc_root()
        Updated call to my_init_dynamic_array()
        Ensure that memory allocated by fedarated is registered for the system, not for the thread.
      storage/federatedx/federatedx_io_mysql.cc:
        Updated call to my_init_dynamic_array()
      storage/federatedx/ha_federatedx.cc:
        Updated call to init_alloc_root()
        Updated call to my_init_dynamic_array()
      storage/heap/ha_heap.cc:
        Added MY_THREAD_SPECIFIC to allocated memory.
      storage/heap/heapdef.h:
        Added parameter to hp_get_new_block() to be able to do thread specific memory tagging.
      storage/heap/hp_block.c:
        Added parameter to hp_get_new_block() to be able to do thread specific memory tagging.
      storage/heap/hp_create.c:
        - Internal HEAP tables are now marking it's memory as MY_THREAD_SPECIFIC.
        - Use MY_TREE_WITH_DELETE instead of removed option 'with_delete'.
      storage/heap/hp_open.c:
        Internal HEAP tables are now marking it's memory as MY_THREAD_SPECIFIC.
      storage/heap/hp_write.c:
        Added new parameter to hp_get_new_block()
      storage/maria/ma_bitmap.c:
        Updated call to my_init_dynamic_array()
      storage/maria/ma_blockrec.c:
        Updated call to my_init_dynamic_array()
      storage/maria/ma_check.c:
        Updated call to init_alloc_root()
      storage/maria/ma_ft_boolean_search.c:
        Updated calls to init_tree() and init_alloc_root()
      storage/maria/ma_ft_nlq_search.c:
        Updated call to init_tree()
      storage/maria/ma_ft_parser.c:
        Updated call to init_tree()
        Updated call to init_alloc_root()
      storage/maria/ma_loghandler.c:
        Updated call to my_init_dynamic_array()
      storage/maria/ma_open.c:
        Updated call to my_init_dynamic_array()
      storage/maria/ma_sort.c:
        Updated call to my_init_dynamic_array()
      storage/maria/ma_write.c:
        Updated calls to my_init_dynamic_array() and init_tree()
      storage/maria/maria_pack.c:
        Updated call to init_tree()
      storage/maria/unittest/sequence_storage.c:
        Updated call to my_init_dynamic_array()
      storage/myisam/ft_boolean_search.c:
        Updated call to init_tree()
        Updated call to init_alloc_root()
      storage/myisam/ft_nlq_search.c:
        Updated call to init_tree()
      storage/myisam/ft_parser.c:
        Updated call to init_tree()
        Updated call to init_alloc_root()
      storage/myisam/ft_stopwords.c:
        Updated call to init_tree()
      storage/myisam/mi_check.c:
        Updated call to init_alloc_root()
      storage/myisam/mi_write.c:
        Updated call to my_init_dynamic_array()
        Updated call to init_tree()
      storage/myisam/myisamlog.c:
        Updated call to init_tree()
      storage/myisam/myisampack.c:
        Updated call to init_tree()
      storage/myisam/sort.c:
        Updated call to my_init_dynamic_array()
      storage/myisammrg/ha_myisammrg.cc:
        Updated call to init_sql_alloc()
      storage/perfschema/pfs_check.cc:
        Rest current_thd
      storage/perfschema/pfs_instr.cc:
        Removed DBUG_ENTER/DBUG_VOID_RETURN as at this point my_thread_var is not allocated anymore, which can cause problems.
      support-files/compiler_warnings.supp:
        Disable compiler warning from offsetof macro.
      a260b155
  10. 21 Jan, 2013 1 commit
  11. 18 Jan, 2013 2 commits
  12. 15 Jan, 2013 1 commit
  13. 08 Jan, 2013 1 commit
  14. 14 Dec, 2012 1 commit
    • unknown's avatar
      MDEV-532: Async InnoDB commit checkpoint. · 40bbf697
      unknown authored
      Make the commit checkpoint inside InnoDB be asynchroneous.
      Implement a background thread in binlog to do the writing and flushing of
      binlog checkpoint events to disk.
      40bbf697
  15. 20 Nov, 2012 1 commit
    • unknown's avatar
      MDEV-3861: assertions in TC_LOG_MMAP. · 47c5018f
      unknown authored
      Fix some problems in the TC_LOG_MMAP commit processing, which could
      lead to assertions in some cases.
      
      Problems are mostly reproducible in MariaDB 10.0 with asynchroneous
      commit checkpoints, but most of the problems were present in earlier
      versions also.
      47c5018f
  16. 17 Nov, 2012 1 commit
  17. 15 Nov, 2012 1 commit
    • unknown's avatar
      MDEV-26: Global transaction id: Intermediate commit. · bdbce30d
      unknown authored
      Now slave can connect to master, sending start position as slave state
      rather than old-style binlog name/position.
      
      This enables to switch to a new master by changing just connection
      information, replication slave GTID state ensures that slave starts
      at the correct point in the new master.
      bdbce30d
  18. 08 Nov, 2012 1 commit
  19. 07 Nov, 2012 1 commit
  20. 05 Nov, 2012 1 commit
  21. 23 Oct, 2012 2 commits
  22. 02 Oct, 2012 1 commit
    • Michael Widenius's avatar
      Changed SHOW_FUNC variabels that don't return SHOW_ARRAY to SHOW_SIMPLE_FUNC. · 572560f3
      Michael Widenius authored
      This allows us to avoid calculating variables (including those involving mutex) that doesn't match the given
      wildcard in SHOW STATUS LIKE '...'
      Removed all references to active_mi that could cause problems for multi-source replication.
      
      Added START|STOP ALL SLAVES
      Added SHOW ALL SLAVES STATUS
      
      
      include/mysql/plugin.h:
        Added SHOW_SIMPLE_FUNC
      include/mysql/plugin_audit.h.pp:
        Updated .pp file
      include/mysql/plugin_auth.h.pp:
        Updated .pp file
      include/mysql/plugin_ftparser.h.pp:
        Updated .pp file
      mysql-test/suite/multi_source/info_logs.result:
        New columns in SHOW ALL SLAVES STATUS
      mysql-test/suite/multi_source/info_logs.test:
        Test new syntax
      mysql-test/suite/multi_source/simple.result:
        New columns in SHOW ALL SLAVES STATUS
      mysql-test/suite/multi_source/simple.test:
        test new syntax
      mysql-test/suite/multi_source/syntax.result:
        Updated result
      mysql-test/suite/multi_source/syntax.test:
        Test new syntax
      mysql-test/suite/rpl/r/rpl_skip_replication.result:
        Updated result
      plugin/semisync/semisync_master_plugin.cc:
        SHOW_FUNC -> SHOW_SIMPLE_FUNC
      sql/item_create.cc:
        Simplify code
      sql/lex.h:
        Added SLAVES keyword
      sql/log.cc:
        Constant -> define
      sql/log_event.cc:
        Added comment
      sql/mysqld.cc:
        SHOW_FUNC -> SHOW_SIMPLE_FUNC
        Made slave_retried_trans, slave_received_heartbeats and heartbeat_period multi-source safe
        Clear variable denied_connections and slave_retried_transactions on startup
      sql/mysqld.h:
        Added slave_retried_transactions
      sql/rpl_mi.cc:
        create_signed_file_name -> create_logfile_name_with_suffix
        Added start_all_slaves() and stop_all_slaves()
      sql/rpl_mi.h:
        Added prototypes
      sql/rpl_rli.cc:
        create_signed_file_name -> create_logfile_name_with_suffix
        added executed_entries
      sql/rpl_rli.h:
        Added executed_entries
      sql/share/errmsg-utf8.txt:
        More and better error messages
      sql/slave.cc:
        Added more fields to SHOW ALL SLAVES STATUS
        Added slave_retried_transactions
        Changed constants -> defines
      sql/sql_class.h:
        Added comment
      sql/sql_insert.cc:
        active_mi.rli -> thd->rli_slave
      sql/sql_lex.h:
        Added SQLCOM_SLAVE_ALL_START & SQLCOM_SLAVE_ALL_STOP
      sql/sql_load.cc:
        active_mi.rli -> thd->rli_slave
      sql/sql_parse.cc:
        Added START|STOP ALL SLAVES
      sql/sql_prepare.cc:
        Added SQLCOM_SLAVE_ALL_START & SQLCOM_SLAVE_ALL_STOP
      sql/sql_reload.cc:
        Made REFRESH RELAY LOG multi-source safe
      sql/sql_repl.cc:
        create_signed_file_name -> create_logfile_name_with_suffix
        Don't send my_ok() from start_slave() or stop_slave() so that we can call it for all master connections
      sql/sql_show.cc:
        Compare wild cards early for all variables
      sql/sql_yacc.yy:
        Added START|STOP ALL SLAVES
        Added SHOW ALL SLAVES STATUS
      sql/sys_vars.cc:
        Made replicate_events_marked_for_skip,slave_net_timeout and rpl_filter multi-source safe.
      sql/sys_vars.h:
        Simplify Sys_var_rpl_filter
      572560f3
  23. 30 Sep, 2012 1 commit
    • Michael Widenius's avatar
      Made max_relay_log_size depending on master connection. · 8ac1b41c
      Michael Widenius authored
      Changed names of multi-source log files so that original suffixes are kept.
      
      
      include/my_sys.h:
        Added fn_ext2(), which returns pointer to last '.' in file name
      mysql-test/extra/rpl_tests/rpl_max_relay_size.test:
        Updated test
      mysql-test/suite/multi_source/info_logs-master.opt:
        Test with strange file names
      mysql-test/suite/multi_source/info_logs.result:
        Updated results
      mysql-test/suite/multi_source/info_logs.test:
        Changed to test with complex names to be able to verify the filename generator code
      mysql-test/suite/multi_source/relaylog_events.result:
        Updated results
      mysql-test/suite/multi_source/reset_slave.result:
        Updated results
      mysql-test/suite/multi_source/skip_counter.result:
        Updated results
      mysql-test/suite/multi_source/skip_counter.test:
        Added testing of max_relay_log_size
      mysql-test/suite/rpl/r/rpl_row_max_relay_size.result:
        Updated results
      mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result:
        Updated results
      mysql-test/suite/sys_vars/r/max_relay_log_size_basic.result:
        Updated results
      mysql-test/suite/sys_vars/t/max_relay_log_size_basic.test:
        Updated results
      mysys/mf_fn_ext.c:
        Added fn_ext2(), which returns pointer to last '.' in file name
      sql/log.cc:
        Removed some wrong casts
      sql/log.h:
        Updated comment to reflect new code
      sql/log_event.cc:
        Updated DBUG_PRINT
      sql/mysqld.cc:
        Added that max_relay_log_size copies it's values from max_binlog_size
      sql/mysqld.h:
        Removed max_relay_log_size
      sql/rpl_mi.cc:
        Changed names of multi-source log files so that original suffixes are kept.
      sql/rpl_mi.h:
        Updated prototype
      sql/rpl_rli.cc:
        Updated comment to reflect new code
        Made max_relay_log_size depending on master connection.
      sql/rpl_rli.h:
        Made max_relay_log_size depending on master connection.
      sql/set_var.h:
        Made option global so that one can check and change min & max values (sorry Sergei)
      sql/sql_class.h:
        Made max_relay_log_size depending on master connection.
      sql/sql_repl.cc:
        Updated calls to create_signed_file_name()
      sql/sys_vars.cc:
        Made max_relay_log_size depending on master connection.
        Made old code more reusable
      sql/sys_vars.h:
        Changed Sys_var_multi_source_uint to ulong to be able to handle max_relay_log_size
        Made old code more reusable
      8ac1b41c
  24. 28 Sep, 2012 1 commit
    • Michael Widenius's avatar
      Fixed issues found by QA (Elena) · 5a4b5869
      Michael Widenius authored
      - Added parameter to reset_logs() so that one can specify if new logs should be created.
      
      mysql-test/include/setup_fake_relay_log.inc:
        There is no orphan relay log files anymore
      mysql-test/mysql-test-run.pl:
        Added multi_source to test suite
      mysql-test/suite/multi_source/info_logs.result:
        New test
      mysql-test/suite/multi_source/info_logs.test:
        New test
      mysql-test/suite/multi_source/my.cnf:
        Added log-warnings to get more information to the log files
      mysql-test/suite/multi_source/relaylog_events.result:
        Added cleanup
      mysql-test/suite/multi_source/relaylog_events.test:
        Added cleanup
      mysql-test/suite/multi_source/reset_slave.result:
        Updated results after improved RESET SLAVE
      mysql-test/suite/multi_source/simple.result:
        Updated results after improved RESET SLAVE
      mysql-test/suite/multi_source/simple.test:
        Syncronize positions before show full slave status
      mysql-test/suite/rpl/r/rpl_row_show_relaylog_events.result:
        Updated results after improved RESET SLAVE (we now use less relay log files)
      mysql-test/suite/rpl/r/rpl_stm_mix_show_relaylog_events.result:
        Updated results after improved RESET SLAVE (we now use less relay log files)
      sql/log.cc:
        Added parameter to reset_logs() so that one can specify if new logs should be created.
      sql/log.h:
        Added parameter to reset_logs()
      sql/rpl_mi.cc:
        Create Master_info_index::index_file_names once at init
        More DBUG_PRINT
        Give error if Master_info_index::check_duplicate_master_info fails
      sql/rpl_rli.cc:
        If we do a full reset, don't create any new relay log files.
      sql/share/errmsg-utf8.txt:
        Improved error message if connection exists
      sql/sql_parse.cc:
        Fixed memory leak
      sql/sql_repl.cc:
        check_duplicate_master_info() now generates an error
        Added parameter to reset_logs()
      5a4b5869
  25. 27 Sep, 2012 1 commit
    • Michael Widenius's avatar
      Implementation of Multi-source replication (MDEV:253) · 1864d959
      Michael Widenius authored
      Documentation of the feature can be found at: http://kb.askmonty.org/en/multi-source-replication/
      This code is based on code from Taobao, developed by Plinux
      
      BUILD/SETUP.sh:
        Added -Wno-invalid-offsetof to get rid of warning of offsetof() on C++ class (safe in the contex we use it)
      client/mysqltest.cc:
        Added support for error names starting with 'W'
        Added connection_name support to --sync_with_master
      cmake/maintainer.cmake:
        Added -Wno-invalid-offsetof to get rid of warning of offsetof() on C++ class (safe in the contex we use it)
      mysql-test/r/mysqltest.result:
        Updated results
      mysql-test/r/parser.result:
        Updated results
      mysql-test/suite/multi_source/my.cnf:
        Setup of multi-master tests
      mysql-test/suite/multi_source/simple.result:
        Simple basic test of multi-source functionality
      mysql-test/suite/multi_source/simple.test:
        Simple basic test of multi-source functionality
      mysql-test/suite/multi_source/syntax.result:
        Test of multi-source syntax
      mysql-test/suite/multi_source/syntax.test:
        Test of multi-source syntax
      mysql-test/suite/rpl/r/rpl_rotate_logs.result:
        Updated results because of new error messages
      mysql-test/t/parser.test:
        Updated test as master_pos_wait() now takes more arguments than before
      sql/event_scheduler.cc:
        No reason to initialize slave_thread (it's guaranteed to be zero here)
      sql/item_create.cc:
        Added connection_name argument to master_pos_wait()
        Simplified code
      sql/item_func.cc:
        Added connection_name argument to master_pos_wait()
      sql/item_func.h:
        Added connection_name argument to master_pos_wait()
      sql/log.cc:
        Added tag "Master 'connection_name'" to slave errors that has a connection name.
      sql/mysqld.cc:
        Added variable mysqld_server_initialized so that other functions can test if server is fully initialized.
        Free all slave data in one place (fewer ifdef's)
        Removed not needed call to close_active_mi()
        Initialize slaves() later in startup to ensure that everthing is really initialized when slaves start.
        Made status variable slave_running multi-source safe
      sql/mysqld.h:
        Added mysqld_server_initialized
      sql/rpl_mi.cc:
        Store connection name and cmp_connection_name (only used for show full slave status) in Master_info
        Added code for Master_info_index, which handles storage of multi-master information
        Don't write the empty "" connection_name to multi-master.info file. This is handled by the original code.
      sql/rpl_mi.h:
        Added connection_name and Master_info_index
      sql/rpl_rli.cc:
        Added connection_name to relay log files.
      sql/rpl_rli.h:
        Fixed type of slave_skip_counter as we now access it directly in sys_vars.cc, so it must be uint
      sql/share/errmsg-utf8.txt:
        Added new error messages needed for multi-source
        Added multi-source name to error ER_MASTER_INFO and WARN_NO_MASTER_INFO
      sql/slave.cc:
        Moved things a bit around to make it easier to handle error conditions.
        Create a global master_info_index and add the "" connection to it
        Ensure that new Master_info doesn't fail.
        Don't call terminate_slave_threads(active_mi..) on end_slave() as this is now done automaticly when deleting master_info_index.
        Delete not needed function close_active_mi(). One can achive same thing by calling end_slave().
        Added support for SHOW FULL SLAVE STATUS (show status for all master connections with connection_name as first column)
      sql/slave.h:
        Added new prototypes
      sql/sql_base.cc:
        More DBUG_PRINT
      sql/sql_class.cc:
        Reset thd->connection_name and thd-->default_master_connection
      sql/sql_class.h:
        Added thd->connection_name and thd-->default_master_connection
        Added slave_skip_count to variables to make changing the @@sql_slave_skip_count variable thread safe
      sql/sql_const.h:
        Added MAX_CONNECTION_NAME
      sql/sql_lex.cc:
        Reset 'lex->verbose' (to simplify some sql_yacc.yy code)
      sql/sql_lex.h:
        Added connection_name
      sql/sql_parse.cc:
        Added support for connection_name to all SLAVE commands.
        - Instead of using active_mi, we now get the current Master_info from master_info_index.
        - Create new replication threads with CHANGE MASTER
        - Added support for show_all_master_info()
      sql/sql_reload.cc:
        Made reset/full slave use master_info_index->get_master_info() instead of active_mi.
        If one uses 'RESET SLAVE "connection_name" all' the connection is removed from master_info_index.
      sql/sql_repl.cc:
        sql_slave_skip_counter is moved to thd->variables to make it thread safe and fix some bugs with it
        Add connection name to relay log files.
        Added connection name to errors.
        Added some logging for multi-master if log_warnings > 1
        stop_slave():
        - Don't check if thd is set. It's guaranteed to always be set.
        change_master():
        - Check for duplicate connection names in change_master()
        - Check for wrong arguments first in file (to simplify error handling)
        - Register new connections in master_info_index
      sql/sql_yacc.yy:
        Added optional connection_name to a all relevant master/slave commands
      sql/strfunc.cc:
        my_global.h shoud always be included first.
      sql/sys_vars.cc:
        Added variable default_master_connection
        Made variable sql_slave_skip_counter multi-source safe
      sql/sys_vars.h:
        Added Sys_var_session_lexstring (needed for default_master_connection)
        Added Sys_var_multi_source_uint (needed for sql_slave_skip_counter).
      1864d959
  26. 22 Sep, 2012 1 commit
    • Rohit Kalhans's avatar
      BUG#14548159: NUMEROUS CASES OF INCORRECT IDENTIFIER · 5530c5e3
      Rohit Kalhans authored
      QUOTING IN REPLICATION 
      
      Problem: Misquoting or unquoted identifiers may lead to
      incorrect statements to be logged to the binary log.
      
      Fix: we use specialized functions to append quoted identifiers in
      the statements generated by the server.
      5530c5e3
  27. 17 Sep, 2012 1 commit
    • Sujatha Sivakumar's avatar
      Bug#11750014:ASSERTION TRX_DATA->EMPTY() IN BINLOG_CLOSE_CONNECTION · 5cbdb908
      Sujatha Sivakumar authored
      Problem:
      =======
      
      trx_data->empty() assert happens at `binlog_close_connection'
      
      Analysis:
      ========
      
      trx_data->empty() function checks for no pending events
      and the transaction cache to be empty.This function returns
      "true" if no pending events are present and cache is empty.
      Otherwise it returns false. `binlog_close_connection' call
      expects the above function to return true. But if the
      return value is false then assert is raised.
      
      This bug was reproducible in a diskfull scenario. In this
      disk full scenario try to do an insert operation so that
      a new pending event is created and flushing this pending
      event fails. Due to this failure the server goes down
      and invokes `binlog_close_connection' for clean closure.
      Since the pending event still remains the assert is caused.
      This assert is caused only in non transactional databases.
      
      
      Fix:
      ===
      
      In a disk full scenario when the insertion fails the
      transaction is rolled back and `binlog_end_trans`
      is called to flush the pending events. But flush operation
      fails as the disk is full and the function simply returns
      `1' without taking any action to delete the pending event.
      
      This leaves the event to remain till the closure of
      connection.  `delete pending' statement has been added to 
      do the required clean up action.
      
      sql/log.cc:
        Added "delete pending" statement to clean pending event
      5cbdb908
  28. 13 Sep, 2012 1 commit
    • unknown's avatar
      MDEV-232: Remove one fsync() from commit phase. · 288eeb3a
      unknown authored
      Introduce a new storage engine API method commit_checkpoint_request().
      This is used to replace the fsync() at the end of every storage engine
      commit with a single fsync() when a binlog is rotated.
      
      Binlog rotation is now done during group commit instead of being
      delayed until unlog(), removing some server stall and avoiding an
      expensive lock/unlock of LOCK_log inside unlog().
      288eeb3a
  29. 30 Aug, 2012 1 commit
    • unknown's avatar
      MDEV-381: fdatasync() does not correctly flush growing binlog file. · 10802c4d
      unknown authored
      When we append data to the binlog file, we use fdatasync() to ensure
      the data gets to disk so that crash recovery can work.
      
      Unfortunately there seems to be a bug in ext3/ext4 on linux, so that
      fdatasync() does not correctly sync all data when the size of a file
      is increased. This causes crash recovery to not work correctly (it
      loses transactions from the binlog).
      
      As a work-around, use fsync() for the binlog, not fdatasync(). Since
      we are increasing the file size, (correct) fdatasync() will most
      likely not be faster than fsync() on any file system, and fsync()
      does work correctly on ext3/ext4. This avoids the need to try to
      detect if we are running on buggy ext3/ext4.
      10802c4d
  30. 24 Aug, 2012 1 commit
    • unknown's avatar
      MDEV-382: Incorrect quoting · cdeabcfd
      unknown authored
      Various places in the server replication code was incorrectly quoting
      strings, which could lead to incorrect SQL on the slave/mysqlbinlog.
      cdeabcfd
  31. 24 Jul, 2012 1 commit
    • Sujatha Sivakumar's avatar
      Bug#13961678:MULTI-STATEMENT TRANSACTION REQUIRED MORE THAN · 03993d03
      Sujatha Sivakumar authored
      'MAX_BINLOG_CACHE_SIZE' ERROR
            
      Problem:
      =======
      MySQL returns following error in win64.
      "ERROR 1197 (HY000): Multi-statement transaction required more than
      'max_binlog_cache_size' bytes of storage; increase this mysqld variable
      and try again" when user tries to load >4G file even if
      max_binlog_cache_size set to maximum value. On Linux everything
      works fine.
            
      Analysis:
      ========
      The `max_binlog_cache_size' variable is of type `ulonglong'.  This
      value is set to `ULONGLONG_MAX' at the time of server start up. The
      above value is stored in an intermediate variable named
      `saved_max_binlog_cache_size' which is of type `ulong'. In visual
      c++ complier the `ulong' type is of 4bytes in size and hence the value
      is getting truncated to '4GB' and the cache is not able to grow beyond
      4GB size. The same limitation is observed with 
      "max_binlog_stmt_cache_size" as well. Similar fix has been applied.
            
      Fix:
      ===
      As part of fix the type "ulong" is replaced with "my_off_t" which is of
      type "ulonglong". 
      
      mysys/mf_iocache.c:
        Added debug statement to simulate a scenario where the cache
        file's current position is set to >4GB
      sql/log.cc:
        Replaced the type of `saved_max_binlog_cache_size' from "ulong" to
        "my_off_t", which is a type def for "ulonglong".
      03993d03
  32. 10 Jul, 2012 1 commit
    • Sujatha Sivakumar's avatar
      BUG#11762670:MY_B_WRITE RETURN VALUE IGNORED · 13f7f002
      Sujatha Sivakumar authored
      Problem:
      =======
      The return value from my_b_write is ignored by: `my_b_write_quoted',
      `my_b_write_bit',`Query_log_event::print_query_header'
      
      Most callers of `my_b_printf' ignore the return value. `log_event.cc' 
      has many calls to it. 
      
      Analysis:
      ========
      `my_b_write' is used to write data into a file. If the write fails it
      sets appropriate error number and error message through my_error()
      function call and sets the IO_CACHE::error == -1.
      `my_b_printf' function is also used to write data into a file, it
      internally invokes my_b_write to do the write operation. Upon
      success it returns number of characters written to file and on error
      it returns -1 and sets the error through my_error() and also sets
      IO_CACHE::error == -1.  Most of the event specific print functions
      for example `Create_file_log_event::print', `Execute_load_log_event::print'
      etc are the ones which make several calls to the above two functions and
      they do not check for the return value after the 'print' call. All the above 
      mentioned abuse cases deal with the client side.
      
      Fix:
      ===
      As part of bug fix a check for IO_CACHE::error == -1 has been added at 
      a very high level after the call to the 'print' function.  There are 
      few more places where the return value of "my_b_write" is ignored
      those are mentioned below.
      
      +++ mysys/mf_iocache2.c    2012-06-04 07:03:15 +0000
      @@ -430,7 +430,8 @@
                 memset(buffz, '0', minimum_width - length2);
               else
                 memset(buffz, ' ', minimum_width - length2);
      -        my_b_write(info, buffz, minimum_width - length2);
      
      +++ sql/log.cc	2012-06-08 09:04:46 +0000
      @@ -2388,7 +2388,12 @@
           {
             end= strxmov(buff, "# administrator command: ", NullS);
             buff_len= (ulong) (end - buff);
      -      my_b_write(&log_file, (uchar*) buff, buff_len);
      
      At these places appropriate return value handlers have been added.
      
      client/mysqlbinlog.cc:
        check for IO_CACHE::error == -1 has been added after the call to
        the event specific print functions
      mysys/mf_iocache2.c:
        Added handler to check the written value of `my_b_write'
      sql/log.cc:
        Added handler to check the written value of `my_b_write'
      sql/log_event.cc:
        Added error simulation statements in `Create_file_log_event::print`
        and `Execute_load_query_log_event::print'
      sql/rpl_utility.h:
        Removed the extra ';'
      13f7f002
  33. 22 Jun, 2012 1 commit
    • unknown's avatar
      MDEV-181: XID crash recovery across binlog boundaries · 0697ee26
      unknown authored
      Keep track of how many pending XIDs (transactions that are prepared in
      storage engine and written into binlog, but not yet durably committed
      on disk in the engine) there are in each binlog.
      
      When the count of one binlog drops to zero, write a new binlog checkpoint
      event, telling which is the oldest binlog with pending XIDs.
      
      When doing XA recovery after a crash, check the last binlog checkpoint
      event, and scan all binlog files from that point onwards for XIDs that
      must be committed if found in prepared state inside engine.
      
      Remove the code in binlog rotation that waits for all prepared XIDs to
      be committed before writing a new binlog file (this is no longer necessary
      when recovery can scan multiple binlog files).
      0697ee26
  34. 21 Jun, 2012 1 commit
  35. 30 May, 2012 1 commit