Extended replication to allow extra columns added last on slave
as compared with table on master.
mysql-test/extra/rpl_tests/rpl_row_tabledefs.test:
Testing that replication can handle extra extra columns on slave.
mysql-test/r/rpl_row_tabledefs.result:
Result file change
sql/Makefile.am:
Adding new files.
sql/field.cc:
Implementing missing Field_bit::set_default()
sql/field.h:
Implementing missing Field_bit::set_default()
sql/log_event.cc:
Extending unpack_row() and replace_record() to handle the case when there are more columns
on the slave than on the master. Especially handle BIT columns correctly.
Using newly introduced table_def class to perform comparison.
sql/log_event.h:
Adding field to table_map_log_event. Changing prototype for do_prepare_row().
sql/mysql_priv.h:
Adding include guards
mysql-test/t/rpl_row_tabledefs.test:
New BitKeeper file ``mysql-test/t/rpl_row_tabledefs.test''
sql/rpl_utility.cc:
New BitKeeper file ``sql/rpl_utility.cc''
sql/rpl_utility.h:
New BitKeeper file ``sql/rpl_utility.h''
Restarting scan after call to delete_row().
mysql-test/include/rpl_multi_engine3.inc:
Injector thread was not given enough time.
mysql-test/t/disabled.def:
Disabling some tests.
sql/log_event.cc:
Moving scan init functions for Delete_rows_log_event.
Restarting scan for each found row.
mysql-test/t/rpl_ndb_dd_partitions.test:
New BitKeeper file ``mysql-test/t/rpl_ndb_dd_partitions.test''
Switching to using index_read() instead of index_read_idx() since a
range of rows need to be retrieved.
mysql-test/r/rpl_row_basic_8partition.result:
Result change
mysql-test/t/rpl_row_basic_8partition.test:
Enabling section for testing PARTITION BY KEY().
sql/log_event.cc:
Using index_read() instead of index_read_idx() since a range of records
are read using index_next().
mysql-test/extra/rpl_tests/rpl_partition.test:
New BitKeeper file ``mysql-test/extra/rpl_tests/rpl_partition.test''
Partial fix for resolving the problem. Swapping contents of record[0]
and record[1] since this is what some storage engines expect.
sql/handler.cc:
Adding assertion to get early failure.
sql/log_event.cc:
Correcting code so that new record is passed in record[0] and
old record is passed in record[1] when calling update_row().
mysql-test/r/rpl_row_basic_8partition.result:
New BitKeeper file ``mysql-test/r/rpl_row_basic_8partition.result''
mysql-test/t/rpl_row_basic_8partition.test:
New BitKeeper file ``mysql-test/t/rpl_row_basic_8partition.test''
into mysql.com:/home/bk/b18293-mysql-5.1-new
sql/item.cc:
Auto merged
mysql-test/extra/binlog_tests/ctype_cp932_binlog.test:
Auto merged
sql/log_event.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sp_head.cc:
Auto merged
mysql-test/r/binlog_stm_ctype_ucs.result:
Merge with mysql-5.0
Generating character set-independent quoting of strings for the
binary log when executing statements from inside stored procedure.
mysql-test/r/ctype_cp932_binlog.result:
Result change
mysql-test/t/ctype_cp932_binlog.test:
Adding check that string literals are written correctly for multi-byte
character sets.
sql/item.cc:
Cutting out character set-independent string escaping code and putting it
in a separate function.
sql/log_event.cc:
Adding characters set-independent code to separate function.
sql/mysql_priv.h:
Adding new function.
sql/sp_head.cc:
Escaping string value representing a string item.
sql/log_event.cc:
Fix Windows compile errors.
storage/innobase/btr/btr0sea.c:
Fix AIX compile error (declarations must come before code in traditional C).
sql/sql_class.h:
Fix HPUX compile problem (HP compiler bug).
Local class of member in derived class has no access to protected members,
so make the class global and a friend.
sql/sql_insert.cc:
Fix HPUX compile problem (HP compiler bug).
Local class of member in derived class has no access to protected members,
so make the class global and a friend.
Post-merge patches.
mysql-test/t/disabled.def:
Disabling test that fails due to no-error patch.
sql/log_event.cc:
Using definite constant instead of machine-dependent constant.
Handling case where null_bytes can be zero.
sql/sql_base.cc:
Using definite constant instead of machine-dependent constant.
sql/sql_class.cc:
Using definite constant instead of machine-dependent constant.
sql/table.cc:
Using definite constant instead of machine-dependent constant.
Changes according to review comments.
sql/log.cc:
Moving a comment.
sql/log_event.cc:
Adding a note that the solution is a temporary solution.
sql/log_event.h:
Removing dead code.
sql/sql_class.cc:
Removing dead code. Adding a TODO comment.
Print a warning instead of error on failure to open non-existing table.
This is a temporary patch to prevent a bug in NDB from stopping the slave.
mysql-test/r/rpl_ndb_blob.result:
result change
mysql-test/t/disabled.def:
Disabling problematic tests.
mysql-test/t/rpl_ndb_blob.test:
Don't show binlog since it's not deterministic.
sql/log_event.cc:
Print a warning instead of error on failure to open non-existing table.
This is a temporary patch to prevent a bug in NDB from stopping the slave.
into mysql.com:/home/bk/w3023-mysql-5.1-new
mysql-test/t/sp.test:
Auto merged
sql/log_event.cc:
Auto merged
sql/slave.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/table.h:
Auto merged
Removed error on seeing table map event when slave is in SBR mode
and switching temporarily to RBR mode to replicate the rows.
sql/log_event.cc:
Settig binlog format to "row" on seeing a table map event.
Resetting binlog format on error and seeing STMT_END_F.
sql/sql_class.h:
Adding method to unconditially set binlog format to "row".
mysql-test/r/rpl_rbr_to_sbr.result:
New BitKeeper file ``mysql-test/r/rpl_rbr_to_sbr.result''
mysql-test/t/rpl_rbr_to_sbr.test:
New BitKeeper file ``mysql-test/t/rpl_rbr_to_sbr.test''
into mysql.com:/home/bk/w3023-mysql-5.1-new
configure.in:
Auto merged
mysql-test/r/rpl_row_create_table.result:
Auto merged
mysql-test/t/sp.test:
Auto merged
sql/log.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/table.h:
Auto merged
Some storage engines does not set the filler bits, so we set them
before calling the record-reading functions.
sql/log_event.cc:
Set the null byte containing filler bits before calling any record-
reading functions.
into mysql.com:/home/bk/w3023-mysql-5.1-new
configure.in:
Auto merged
mysql-test/extra/binlog_tests/insert_select-binlog.test:
Auto merged
mysql-test/r/binlog_row_insert_select.result:
Auto merged
mysql-test/r/rpl_row_basic_11bugs.result:
Auto merged
scripts/mysql_fix_privilege_tables.sql:
Auto merged
sql/ha_ndbcluster_binlog.cc:
Auto merged
sql/handler.h:
Auto merged
sql/log_event.cc:
Auto merged
sql/log_event.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_table.cc:
Auto merged
client/Makefile.am:
Merging with mysql-5.1-new
mysql-test/r/binlog_row_ctype_cp932.result:
Merging with mysql-5.1-new
mysql-test/r/rpl_ndb_blob.result:
Merging with mysql-5.1-new
mysql-test/r/rpl_ndb_dd_basic.result:
Merging with mysql-5.1-new
More adaptions to make it work with existing code base.
mysql-test/extra/rpl_tests/rpl_row_charset.test:
Info for RBR events now include table id; changed test to not
depend on the table id.
mysql-test/r/rpl_ndb_blob.result:
Result change
mysql-test/r/rpl_ndb_dd_basic.result:
Result change
mysql-test/r/rpl_row_basic_7ndb.result:
Result change
mysql-test/r/rpl_row_drop.result:
Result change
mysql-test/r/rpl_row_log.result:
Result change
mysql-test/r/rpl_row_log_innodb.result:
Result change
mysql-test/r/rpl_row_sp008.result:
Result change
mysql-test/r/rpl_switch_stm_row_mixed.result:
Result change
sql/ha_ndbcluster_binlog.cc:
Enabled patch to NDB to support new locking scheme.
sql/handler.cc:
Added test to prevent logging if the binlog is closed.
sql/log.cc:
Adaptions to use thread-local variable for enabling row-based replication.
sql/log_event.cc:
Fixing compile failure.
sql/slave.cc:
Reordering in initializer list to eliminate compiler warning.
sql/sql_base.cc:
Bad use of return when DBUG_RETURN should be used.
sql/sql_insert.cc:
Adaptions to use thread-local variable for enabling row-based replication.
configure.in:
Auto merged
client/mysqlimport.c:
Auto merged
include/config-win.h:
Auto merged
mysql-test/r/create.result:
Auto merged
mysql-test/t/create.test:
Auto merged
mysql-test/t/disabled.def:
Auto merged
scripts/mysql_fix_privilege_tables.sql:
Auto merged
sql/field.h:
Auto merged
sql/log_event.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_partition.cc:
Auto merged
sql/sql_table.cc:
Auto merged
mysql-test/t/mysqldump.test:
SCCS merged
into mysql.com:/home/bk/w3023-mysql-5.1-new
configure.in:
Auto merged
BitKeeper/deleted/.del-sp_notembedded.test:
Auto merged
mysql-test/extra/binlog_tests/binlog.test:
Auto merged
mysql-test/extra/binlog_tests/blackhole.test:
Auto merged
mysql-test/r/binlog_stm_ctype_cp932.result:
Auto merged
mysql-test/t/sp.test:
Auto merged
scripts/mysql_fix_privilege_tables.sql:
Auto merged
sql/ha_ndbcluster_binlog.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/handler.h:
Auto merged
sql/log.h:
Auto merged
sql/log_event.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/opt_range.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/table.h:
Auto merged
Visual C++ dont relate 'byte' and 'char*' that close, added casts
mysql.sln:
Only build mysqlserver.lib if embedded target
VC++Files/mysql.sln:
Only build mysqlserver.lib if embedded target
sql/log_event.cc:
Visual C++ dont relate 'byte' and 'char*' that close, added casts
and new binlog format called "mixed" (which is statement-based except if only row-based is correct,
in this cset it means if UDF or UUID is used; more cases could be added in later 5.1 release):
SET GLOBAL|SESSION BINLOG_FORMAT=row|statement|mixed|default;
the global default is statement unless cluster is enabled (then it's row) as in 5.1-alpha.
It's not possible to use SET on this variable if a session is currently in row-based mode and has open temporary tables (because CREATE
TEMPORARY TABLE was not binlogged so temp table is not known on slave), or if NDB is enabled (because
NDB does not support such change on-the-fly, though it will later), of if in a stored function (see below).
The added tests test the possibility or impossibility to SET, their effects, and the mixed mode,
including in prepared statements and in stored procedures and functions.
Caveats:
a) The mixed mode will not work for stored functions: in mixed mode, a stored function will
always be binlogged as one call and in a statement-based way (e.g. INSERT VALUES(myfunc()) or SELECT myfunc()).
b) for the same reason, changing the thread's binlog format inside a stored function is
refused with an error message.
c) the same problems apply to triggers; implementing b) for triggers will be done later (will ask
Dmitri).
Additionally, as the binlog format is now changeable by each user for his session, I remove the implication
which was done at startup, where row-based automatically set log-bin-trust-routine-creators to 1
(not possible anymore as a user can now switch to stmt-based and do nasty things again), and automatically
set --innodb-locks-unsafe-for-binlog to 1 (was anyway theoretically incorrect as it disabled
phantom protection).
Plus fixes for compiler warnings.
mysql-test/r/rpl_row_4_bytes.result:
update
mysql-test/t/rpl_row_4_bytes.test:
don't influence next tests
sql/ha_archive.cc:
please pay attention to this structure when you change it...
sql/ha_berkeley.cc:
please pay attention to this structure when you change it...
sql/ha_blackhole.cc:
please pay attention to this structure when you change it...
sql/ha_federated.cc:
please pay attention to this structure when you change it...
sql/ha_heap.cc:
please pay attention to this structure when you change it...
sql/ha_innodb.cc:
please pay attention to this structure when you change it...
sql/ha_myisam.cc:
please pay attention to this structure when you change it...
sql/ha_myisammrg.cc:
please pay attention to this structure when you change it...
sql/ha_ndbcluster_binlog.cc:
no more global 'binlog_row_based'
sql/ha_partition.cc:
please pay attention to this structure when you change it...
sql/handler.cc:
please pay attention to this structure when you change it...
sql/handler.h:
it's good to initialize statically (to get no compiler warning) even if to a null value.
sql/item_func.cc:
UDFs require row-based if this is the "mixed" binlog format.
sql/item_strfunc.cc:
UUID() requires row-based binlogging if this is the "mixed" binlog format
sql/log.cc:
binlog_row_based -> thd->current_stmt_binlog_row_based
sql/log.h:
the enum enum_binlog_format moves to log.h from mysqld.cc as we need it in several places.
sql/log_event.cc:
binlog_row_based -> thd->current_stmt_binlog_row_based
sql/log_event.h:
this global variable not used anymore
sql/mysql_priv.h:
these global variables not used anymore
sql/mysqld.cc:
simplification in the handling of --binlog-format (but with no user-visible change), thanks to
the new global system variable.
RBR does not anymore turn on --log-bin-trust-function-creators and --innodb-locks-unsafe-for-binlog
as these are global options and RBR is now settable per session.
sql/partition_info.cc:
compiler warnings
sql/set_var.cc:
new class of thread's variable, to handle the binlog_format (like sys_var_thd_enum except
that is_readonly() is overriden for more checks before update).
compiler warnings (ok'd by Serg)
sql/set_var.h:
new class for the thread's binlog_format (see set_var.cc)
sql/share/errmsg.txt:
some messages for when one can't toggle from one binlog format to another
sql/sp_head.cc:
binlog_row_based -> thd->current_stmt_binlog_row_based
sql/sql_base.cc:
binlog_row_based -> thd->current_stmt_binlog_row_based
sql/sql_class.cc:
When a THD is initialized, we set its current_stmt_binlog_row_based
sql/sql_class.h:
new THD::variables.binlog_format (the value of the session variable set by SET
or inherited from the global value), and THD::current_stmt_binlog_row_based which tells if the
current statement does row-based or statement-based binlogging. Both members are needed
as the 2nd one cannot be derived only from the first one (the statement's type plays a role too),
and the 1st one is needed to reset the 2nd one.
sql/sql_delete.cc:
binlog_row_based -> thd->current_stmt_binlog_row_based
sql/sql_insert.cc:
binlog_row_based -> thd->current_stmt_binlog_row_based
sql/sql_load.cc:
binlog_row_based -> thd->current_stmt_binlog_row_based.
sql/sql_parse.cc:
when we are done with a statement, we reset the current_stmt_binlog_row_based to the value
derived from THD::variables.binlog_format.
sql/sql_partition.cc:
compiler warning
sql/sql_show.cc:
compiler warning
sql/sql_table.cc:
binlog_row_based -> thd->current_stmt_binlog_row_based
tests/mysql_client_test.c:
compiler warning
mysql-test/r/ndb_binlog_basic2.result:
new result
mysql-test/r/rpl_switch_stm_row_mixed.result:
new result
mysql-test/t/ndb_binlog_basic2.test:
new test to verify that if cluster is enabled, can't change binlog format on the fly.
mysql-test/t/rpl_switch_stm_row_mixed.test:
test to see if one can switch between SBR, RBR, and "mixed" mode, and when one cannot,
and test to see if the switching, and the mixed mode, work properly (using UUID() to test,
as using UDFs is not possible in the testsuite for portability reasons).