1. 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
  2. 28 Sep, 2012 3 commits
    • 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
    • Elena Stepanova's avatar
      9b03041b
    • Michael Widenius's avatar
      222883b0
  3. 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
  4. 22 Sep, 2012 3 commits
  5. 21 Sep, 2012 1 commit
  6. 18 Sep, 2012 5 commits
    • Michael Widenius's avatar
      This fix+comments was originally made by Alexey Kopytov · af4eeaf5
      Michael Widenius authored
      LP bug #1035225 / MySQL bug #66301: INSERT ... ON DUPLICATE KEY UPDATE +
      innodb_autoinc_lock_mode=1 is broken
      
      The problem was that when certain INSERT ... ON DUPLICATE KEY UPDATE
      were executed concurrently on a table containing an AUTO_INCREMENT
      column as a primary key, InnoDB would correctly reserve non-overlapping
      AUTO_INCREMENT intervals for each statement, but when the server
      encountered the first duplicate key error on the secondary key in one of
      the statements and performed an UPDATE, it also updated the internal
      AUTO_INCREMENT value to the one from the existing row that caused a
      duplicate key error, even though the AUTO_INCREMENT value was not
      specified explicitly in the UPDATE clause. It would then proceed with
      using AUTO_INCREMENT values the range reserved previously by another
      statement, causing duplicate key errors on the AUTO_INCREMENT column.
      
      Fixed by changing write_record() to ensure that in case of a duplicate
      key error the internal AUTO_INCREMENT counter is only updated when the
      AUTO_INCREMENT value was explicitly updated by the UPDATE
      clause. Otherwise it is restored to what it was before the duplicate key
      error, as that value is unused and can be reused for subsequent
      successfully inserted rows.
      
      sql/sql_insert.cc:
        Don't update next_insert_id to the value of a row found during ON DUPLICATE KEY UPDATE.
      sql/sql_parse.cc:
        Added DBUG_SYNC
      sql/table.h:
        Added next_number_field_updated flag to detect changing of auto increment fields.
        Moved fields a bit to get bool fields after each other (better alignment)
      af4eeaf5
    • Michael Widenius's avatar
      Automatic merge · 6f57fc50
      Michael Widenius authored
      6f57fc50
    • Michael Widenius's avatar
      Fixed test for ps-protocol · f3034236
      Michael Widenius authored
      f3034236
    • Michael Widenius's avatar
      Fix for MDEV-533: Confusing error code when doing auto-increment insert for out-of-range values · ae5bc059
      Michael Widenius authored
      create table t1 (a smallint primary key auto_increment);
      insert into t1 values(32767);
      insert into t1 values(NULL);
      ERROR 1062 (23000): Duplicate entry '32767' for key 'PRIMARY
      
      Now on always gets error HA_ERR_AUTOINC_RANGE=167 "Out of range value for column", independent of
      store engine, SQL Mode or number of inserted rows. This is an unique error that is easier to test for in replication.
      
      Another bug fix is that we now get an error when trying to insert a too big auto-generated value, even in non-strict mode.
      Before one get insted the max column value inserted.
      This patch also fixes some issues with inserting negative numbers in an auto-increment column.
      Fixed the ER_DUP_ENTRY and HA_ERR_AUTOINC_ERANGE are compared the same between master and slave.
      This ensures that replication works between an old server to a new slave for auto-increment overflow errors.
      Added SQLSTATE errors for handler errors
      
      Smaller bug fixes:
      * Added warnings for duplicate key errors when using INSERT IGNORE
      * Fixed bug when using --skip-log-bin followed by --log-bin, which did set log-bin to "0"
      * Allow one to see how cmake is called by using --just-print --just-configure
      
      
      BUILD/FINISH.sh:
        --just-print --just-configure now shows how cmake would be invoked. Good for understanding parameters to cmake.
      cmake/configure.pl:
        --just-print --just-configure now shows how cmake would be invoked. Good for understanding parameters to cmake.
      include/CMakeLists.txt:
        Added handler_state.h
      include/handler_state.h:
        SQLSTATE for handler error messages.
        Required for HA_ERR_AUTOINC_ERANGE, but solves also some other cases.
      mysql-test/extra/binlog_tests/binlog.test:
        Fixed old wrong behaviour
        Added more tests
      mysql-test/extra/binlog_tests/binlog_insert_delayed.test:
        Reset binary log to only print what's necessary in show_binlog_events
      mysql-test/extra/rpl_tests/rpl_auto_increment.test:
        Update to new error codes
      mysql-test/extra/rpl_tests/rpl_insert_delayed.test:
        Ignore warnings as this depends on how the test is run
      mysql-test/include/strict_autoinc.inc:
        On now gets an error on overflow
      mysql-test/r/auto_increment.result:
        Update results after fixing error message
      mysql-test/r/auto_increment_ranges_innodb.result:
        Test new behaviour
      mysql-test/r/auto_increment_ranges_myisam.result:
        Test new behaviour
      mysql-test/r/commit_1innodb.result:
        Added warnings for duplicate key error
      mysql-test/r/create.result:
        Added warnings for duplicate key error
      mysql-test/r/insert.result:
        Added warnings for duplicate key error
      mysql-test/r/insert_select.result:
        Added warnings for duplicate key error
      mysql-test/r/insert_update.result:
        Added warnings for duplicate key error
      mysql-test/r/mix2_myisam.result:
        Added warnings for duplicate key error
      mysql-test/r/myisam_mrr.result:
        Added warnings for duplicate key error
      mysql-test/r/null_key.result:
        Added warnings for duplicate key error
      mysql-test/r/replace.result:
        Update to new error codes
      mysql-test/r/strict_autoinc_1myisam.result:
        Update to new error codes
      mysql-test/r/strict_autoinc_2innodb.result:
        Update to new error codes
      mysql-test/r/strict_autoinc_3heap.result:
        Update to new error codes
      mysql-test/r/trigger.result:
        Added warnings for duplicate key error
      mysql-test/r/xtradb_mrr.result:
        Added warnings for duplicate key error
      mysql-test/suite/binlog/r/binlog_innodb_row.result:
        Updated result
      mysql-test/suite/binlog/r/binlog_row_binlog.result:
        Out of range data for auto-increment is not inserted anymore
      mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result:
        Updated result
      mysql-test/suite/binlog/r/binlog_stm_binlog.result:
        Out of range data for auto-increment is not inserted anymore
      mysql-test/suite/binlog/r/binlog_unsafe.result:
        Updated result
      mysql-test/suite/innodb/r/innodb-autoinc.result:
        Update to new error codes
      mysql-test/suite/innodb/r/innodb-lock.result:
        Updated results
      mysql-test/suite/innodb/r/innodb.result:
        Updated results
      mysql-test/suite/innodb/r/innodb_bug56947.result:
        Updated results
      mysql-test/suite/innodb/r/innodb_mysql.result:
        Updated results
      mysql-test/suite/innodb/t/innodb-autoinc.test:
        Update to new error codes
      mysql-test/suite/maria/maria3.result:
        Updated result
      mysql-test/suite/maria/mrr.result:
        Updated result
      mysql-test/suite/optimizer_unfixed_bugs/r/bug43617.result:
        Updated result
      mysql-test/suite/rpl/r/rpl_auto_increment.result:
        Update to new error codes
      mysql-test/suite/rpl/r/rpl_insert_delayed,stmt.rdiff:
        Updated results
      mysql-test/suite/rpl/r/rpl_loaddatalocal.result:
        Updated results
      mysql-test/t/auto_increment.test:
        Update to new error codes
      mysql-test/t/auto_increment_ranges.inc:
        Test new behaviour
      mysql-test/t/auto_increment_ranges_innodb.test:
        Test new behaviour
      mysql-test/t/auto_increment_ranges_myisam.test:
        Test new behaviour
      mysql-test/t/replace.test:
        Update to new error codes
      mysys/my_getopt.c:
        Fixed bug when using --skip-log-bin followed by --log-bin, which did set log-bin to "0"
      sql/handler.cc:
        Ignore negative values for signed auto-increment columns
        Always give an error if we get an overflow for an auto-increment-column (instead of inserting the max value)
        Ensure that the row number is correct for the out-of-range-value error message.
        
        
        ******
        Fixed wrong printing of column namn for "Out of range value" errors
        Fixed that INSERT_ID is correctly replicated also for out-of-range autoincrement values
        Fixed that print_keydup_error() can also be used to generate warnings
        ******
        Return HA_ERR_AUTOINC_ERANGE (167) instead of ER_WARN_DATA_OUT_OF_RANGE for auto-increment overflow
      sql/handler.h:
        Allow INSERT IGNORE to continue also after out-of-range inserts.
        Fixed that print_keydup_error() can also be used to generate warnings
      sql/log_event.cc:
        Added DBUG_PRINT
        Fixed the ER_AUTOINC_READ_FAILED, ER_DUP_ENTRY and HA_ERR_AUTOINC_ERANGE are compared the same between master and slave.
        This ensures that replication works between an old server to a new slave for auto-increment overflow errors.
      sql/sql_insert.cc:
        Add warnings for duplicate key errors when using INSERT IGNORE
      sql/sql_state.c:
        Added handler errors
      sql/sql_table.cc:
        Update call to print_keydup_error()
      storage/innobase/handler/ha_innodb.cc:
        Fixed increment handling of auto-increment columns to be consistent with rest of MariaDB.
      storage/xtradb/handler/ha_innodb.cc:
        Fixed increment handling of auto-increment columns to be consistent with rest of MariaDB.
      ae5bc059
    • unknown's avatar
      Merged the fix for bug lp:1009187, mdev-373 · caf31114
      unknown authored
      caf31114
  7. 17 Sep, 2012 2 commits
  8. 14 Sep, 2012 1 commit
    • unknown's avatar
      Fix bug lp:1009187, mdev-373, mysql bug#58628 · b917fb63
      unknown authored
      Analysis:
      The queries in question use the [unique | index]_subquery execution methods.
      These methods reuse the ref keys constructed by create_ref_for_key(). The
      way create_ref_for_key() works is that it doesn't store in ref.key_copy[]
      store_key elements that represent constants. In particular it doesn't store
      the store_key for NULL constants.
      
      The execution of [unique | index]_subquery calls
      subselect_uniquesubquery_engine::copy_ref_key, which in addition to copy
      the left IN argument into a index lookup key, is supposed to detect if
      the left IN argument contains NULLs. Since the store_key for the NULL
      constant is not copied into the key array, the null is not detected, and
      execution erroneously proceeds as if it should look for a complete match.
      
      Solution:
      The solution (unlike MySQL) is to reuse already computed information about
      NULL presence. Item_in_optimizer::val_int already finds out if the left IN
      operand contains NULLs. The fix propagates this to the execution methods
      subselect_[unique | index]subquery_engine::exec so it knows if there were
      NULL values independent of the presence of keys.
      
      In addition the patch siplifies copy_ref_key() and the logic that hanldes
      the case of NULLs in the left IN operand.
      b917fb63
  9. 13 Sep, 2012 2 commits
    • Michael Widenius's avatar
      Added THD::utime_after_query to avoid calling current_utime() twice for every end-of-query · 32e4c7e1
      Michael Widenius authored
      Increment long_query_count also if thd->variables.log_slow_rate_limit is used
      Added new state "Writing to binlog"
      
      
      sql/sql_class.h:
        Added THD::utime_after_query to avoid calling current_utime() twice for every end-of-query
      sql/sql_parse.cc:
        Increment long_query_count also if thd->variables.log_slow_rate_limit is used
        Removed extra calls to thd_proc_info(thd, "logging slow query") and thd->current_utime();
      sql/sql_table.cc:
        Added new state "Writing to binlog"
      32e4c7e1
    • 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
  10. 10 Sep, 2012 3 commits
  11. 08 Sep, 2012 2 commits
    • Michael Widenius's avatar
      Added new status variables: · 3a793b9d
      Michael Widenius authored
      feature_dynamic_columns,feature_fulltext,feature_gis,feature_locale,feature_subquery,feature_timezone,feature_trigger,feature_xml
      Opened_views, Executed_triggers, Executed_events
      Added new process status 'updating status' as part of 'freeing items'
      
      mysql-test/r/features.result:
        Test of feature_xxx status variables
      mysql-test/r/mysqld--help.result:
        Removed duplicated 'language' variable.
      mysql-test/r/view.result:
        Test of opened_views
      mysql-test/suite/rpl/t/rpl_start_stop_slave.test:
        Write more information on failure
      mysql-test/t/features.test:
        Test of feature_xxx status variables
      mysql-test/t/view.test:
        Test of opened_views
      sql/event_scheduler.cc:
        Increment executed_events status variable
      sql/field.cc:
        Increment status variable
      sql/item_func.cc:
        Increment status variable
      sql/item_strfunc.cc:
        Increment status variable
      sql/item_subselect.cc:
        Increment status variable
      sql/item_xmlfunc.cc:
        Increment status variable
      sql/mysqld.cc:
        Add new status variables to 'show status'
      sql/mysqld.h:
        Added executed_events
      sql/sql_base.cc:
        Increment status variable
      sql/sql_class.h:
        Add new status variables
      sql/sql_parse.cc:
        Added new process status 'updating status' as part of 'freeing items'
      sql/sql_trigger.cc:
        Increment status variable
      sql/sys_vars.cc:
        Increment status variable
      sql/tztime.cc:
        Increment status variable
      3a793b9d
    • Michael Widenius's avatar
      Automatic merge · 5161b3dd
      Michael Widenius authored
      5161b3dd
  12. 07 Sep, 2012 3 commits
    • Michael Widenius's avatar
      Better error message when using --language or --log-bin · 2fc4c751
      Michael Widenius authored
      Simplify code
      
      sql/derror.cc:
        Better error message
      sql/mysqld.cc:
        Simplify usage of lc_messages_dir_ptr.
        Don't give warnings that --log-bin should be used if --log-bin or --skip-log-bin is used.
      2fc4c751
    • unknown's avatar
      Fix of MDEV-511. · 83bdf56e
      unknown authored
      As far as we reopen tables so TABLE become invalid we should remove the pointer on cleanup().
      83bdf56e
    • unknown's avatar
      Fix of MDEV-511. · 22de18dd
      unknown authored
      As far as we reopen tables so TABLE become invalid we should remove the pointer on cleanup().
      22de18dd
  13. 06 Sep, 2012 1 commit
  14. 05 Sep, 2012 6 commits
  15. 04 Sep, 2012 3 commits
    • Sergei Golubchik's avatar
      MDEV-481 Assertion `pins->pin[i] == 0' failed in _lf_pinbox_put_pins on... · 1f927079
      Sergei Golubchik authored
      MDEV-481 Assertion `pins->pin[i] == 0' failed in _lf_pinbox_put_pins on concurrent OPTIMIZE TABLE and DML with Aria tables
      
      A bug in the lock-free hash implementation!
      when lsearch() has not found the key, the caller needs to unpin all the three pins,
      because lsearch() was using all the three.
      
      1f927079
    • Michael Widenius's avatar
      Switch automaticly to statement based replication for statements that can't... · 51392386
      Michael Widenius authored
      Switch automaticly to statement based replication for statements that can't generate row based events. This is needed to avoid getting
      updates to system, statistics and admin tables logged to binary log.
      - Removed special code used to temporarily change to statement based replication.
      - Changed to a faster and smaller interface for temporarily switching to statement based replication.
      
      sql/event_db_repository.cc:
        Change to new interface to not use row based replication for system table changes.
      sql/events.cc:
        Change to new interface to not use row based replication for system table changes.
      sql/sp.cc:
        Removed temporarily switching to statement based replication (this is now done automaticly in mysql_execute_command())
      sql/sql_acl.cc:
        Change to new interface to not use row based replication for system table changes.
        Removed temporarily switching to statement based replication (this is now done automaticly in mysql_execute_command())
      sql/sql_class.h:
        Added new interface for temporarily switching to statement based replication.
      sql/sql_parse.cc:
        Mark commands that needs original replication mode with CF_FORCE_ORIGINAL_BINLOG_FORMAT.
        Switch automaticly to statement based replication for statements that can't generate row based events (and can't change replication mode)
      sql/sql_udf.cc:
        Removed temporarily switching to statement based replication (this is now done automaticly in mysql_execute_command())
      51392386
    • Sergei Golubchik's avatar
      1. fix an old typo. A purgatory must be cleaned on every LF_PURGATORY_SIZE freeing, · 0b5564b8
      Sergei Golubchik authored
         not every time.
      2. Increase purgatory size.
      
      include/lf.h:
        allocate larger purgatory
      mysys/lf_alloc-pin.c:
        typo.
      0b5564b8
  16. 02 Sep, 2012 2 commits
  17. 01 Sep, 2012 1 commit