mysql-test/r/innodb.result:
Result change.
mysql-test/suite/rpl/r/rpl_binlog_grant.result:
Result change.
mysql-test/suite/rpl/r/rpl_extraColmaster_innodb.result:
Result change.
mysql-test/suite/rpl/r/rpl_extraColmaster_myisam.result:
Result change.
mysql-test/suite/rpl/t/disabled.def:
Enabling some tests.
mysql-test/suite/rpl/t/rpl_binlog_grant.test:
Adding missing master-slave.inc, causing previous tests to pollute
the binary log.
mysql-test/suite/rpl_ndb/t/disabled.def:
Enabling some tests.
into dl145h.mysql.com:/data0/mkindahl/mysql-5.1-rpl-merge
client/mysql.cc:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/ctype_ucs.result:
Auto merged
mysql-test/r/mysql.result:
Auto merged
mysql-test/suite/ndb/r/ndb_dd_basic.result:
Auto merged
mysql-test/suite/rpl/r/rpl_extraCol_innodb.result:
Auto merged
mysql-test/suite/rpl/r/rpl_extraCol_myisam.result:
Auto merged
mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result:
Auto merged
mysql-test/t/ctype_uca.test:
Auto merged
mysql-test/t/ctype_ucs.test:
Auto merged
mysql-test/t/innodb.test:
Auto merged
mysql-test/t/mysql.test:
Auto merged
mysql-test/t/partition.test:
Auto merged
mysql-test/t/subselect.test:
Auto merged
sql/field.cc:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/slave.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
mysql-test/r/innodb.result:
Manual merge.
into mysql.com:/home/gluh/MySQL/Merge/5.1-opt
BitKeeper/etc/ignore:
auto-union
mysql-test/r/events_bugs.result:
Auto merged
mysql-test/r/partition.result:
Auto merged
mysql-test/r/ps_2myisam.result:
Auto merged
mysql-test/r/ps_3innodb.result:
Auto merged
mysql-test/r/ps_4heap.result:
Auto merged
mysql-test/r/ps_5merge.result:
Auto merged
mysql-test/r/sp.result:
Auto merged
mysql-test/t/partition.test:
Auto merged
mysql-test/t/subselect.test:
Auto merged
mysql-test/t/variables.test:
Auto merged
sql/field.cc:
Auto merged
sql/ha_partition.cc:
Auto merged
sql/item.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_subselect.cc:
Auto merged
sql/item_timefunc.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/opt_range.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_partition.cc:
Auto merged
sql/sql_plugin.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_udf.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/share/errmsg.txt:
Auto merged
tests/mysql_client_test.c:
Auto merged
mysql-test/r/select.result:
manual merge
mysql-test/t/select.test:
manual merge
into dl145h.mysql.com:/data0/mkindahl/mysql-5.1-new-rpl
mysql-test/extra/rpl_tests/rpl_extraMaster_Col.test:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/suite/rpl/include/rpl_mixed_dml.inc:
Auto merged
mysql-test/suite/rpl/r/rpl_bug31076.result:
Auto merged
mysql-test/suite/rpl/t/rpl_bug31076.test:
Auto merged
mysql-test/suite/rpl/t/rpl_innodb_bug28430.test:
Auto merged
mysql-test/suite/rpl_ndb/t/disabled.def:
Auto merged
sql/field.cc:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/log.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/log_event_old.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/slave.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
mysql-test/t/partition.test:
Manual merge.
BitKeeper/deleted/.del-rpl_row_extraColmaster_ndb.result~a2c64bae75b49d2:
Manual merge.
mysql-test/suite/rpl/r/rpl_extraColmaster_innodb.result:
Manual merge.
mysql-test/suite/rpl/r/rpl_extraColmaster_myisam.result:
Manual merge.
mysql-test/suite/rpl/t/disabled.def:
Manual merge.
sql/sql_delete.cc:
Manual merge.
Pushing test case for bug only. Bug already fixed as a result of the patch for BUG#19958.
mysql-test/extra/rpl_tests/rpl_row_basic.test:
Adding test to see that no error is given on slave when deleting
rows that don't exist on table without primary key.
mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result:
Result change.
mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result:
Result change.
mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result:
Result change.
into mysql.com:/usr/clones/rpl-push
mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test:
Auto merged
mysql-test/suite/rpl/r/rpl_extraCol_innodb.result:
Auto merged
mysql-test/suite/rpl/r/rpl_extraCol_myisam.result:
Auto merged
mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result:
Auto merged
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb-merge
mysql-test/suite/rpl/r/rpl_bug31076.result:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/sql_update.cc:
Auto merged
storage/ndb/include/ndbapi/Ndb.hpp:
Auto merged
mysql-test/suite/rpl/t/rpl_bug31076.test:
manual merge
into kindahl-laptop.dnsalias.net:/home/bk/b28618-mysql-5.1-rpl
mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result:
Auto merged
sql/log_event.cc:
Auto merged
sql/log_event.h:
Auto merged
sql/rpl_rli.h:
Auto merged
sql/slave.cc:
Auto merged
is possible):
When skipping the beginning of a transaction starting with BEGIN, the OPTION_BEGIN
flag was not set correctly, which caused the slave to not recognize that it was
inside a group. This patch sets the OPTION_BEGIN flag for BEGIN, COMMIT, ROLLBACK,
and XID events. It also adds checks if inside a group before decreasing the
slave skip counter to zero.
Begin_query_log_event was not marked that it could not end a group, which is now
corrected.
mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test:
Correcting slave skip counter to get the correct behaviour.
mysql-test/suite/rpl/r/rpl_slave_skip.result:
Result change.
mysql-test/suite/rpl/t/rpl_slave_skip.test:
Adding tests to check that skipping works for transactions:
- Skipping one group with BEGIN first
- Skipping two groups with BEGIN first
- Skipping one group without BEGIN first but with AUTOCOMMIT=0
- LOAD DATA INFILE under statement-based replication
mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result:
Result change.
sql/log_event.cc:
Adding checks if we're in a group when the slave skip counter is 1.
In that case, we should keep going.
Adding helping member function Log_event::continue_group() denoting
that this event cannot end a group, and if the skip counter indicates
that the group ends after this event, it should not decrease the skip
counter.
Query_log_event will change the OPTION_BEGIN flag for BEGIN, COMMIT, and
ROLLBACK, even when skipping because of a positive skip count, and
Xid_log_event will also affect the OPTION_BEGIN flag, even when being
skipped.
Begin_load_query_log_event cannot end a group, so it is marked to
continue the group.
sql/log_event.h:
Adding helper function Log_event::continue_group().
sql/rpl_rli.h:
Adding Relay_log_info::get_flag() to get the value of a
replication flag.
sql/slave.cc:
Adding debug output and changing debug message.
mysql-test/suite/rpl/data/rpl_bug28618.dat:
New BitKeeper file ``mysql-test/suite/rpl/data/rpl_bug28618.dat''
mysql-test/suite/rpl/t/rpl_slave_skip-slave.opt:
New BitKeeper file ``mysql-test/suite/rpl/t/rpl_slave_skip-slave.opt''
into kindahl-laptop.dnsalias.net:/home/bkroot/mysql-5.1-rpl
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/log_event.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/rpl_record.cc:
Manual merge.
Refactoring code to add parameter to pack() and unpack() functions with
purpose of indicating if data should be packed in little-endian or
native order. Using new functions to always pack data for binary log
in little-endian order. The purpose of this refactoring is to allow
proper implementation of endian-agnostic pack() and unpack() functions.
Eliminating several versions of virtual pack() and unpack() functions
in favor for one single virtual function which is overridden in
subclasses.
Implementing pack() and unpack() functions for some field types that
packed data in native format regardless of the value of the
st_table_share::db_low_byte_first flag.
The field types that were packed in native format regardless are:
Field_real, Field_decimal, Field_tiny, Field_short, Field_medium,
Field_long, Field_longlong, and Field_blob.
Before the patch, row-based logging wrote the rows incorrectly on
big-endian machines where the storage engine defined its own
low_byte_first() to be FALSE on big-endian machines (the default
is TRUE), while little-endian machines wrote the fields in correct
order. The only known storage engine that does this is NDB. In effect,
this means that row-based replication from or to a big-endian
machine where the table was using NDB as storage engine failed if the
other engine was either non-NDB or on a little-endian machine.
With this patch, row-based logging is now always done in little-endian
order, while ORDER BY uses the native order if the storage engine
defines low_byte_first() to return FALSE for big-endian machines.
In addition, the max_data_length() function available in Field_blob
was generalized to the entire Field hierarchy to give the maximum
number of bytes that Field::pack() will write.
mysql-test/extra/rpl_tests/rpl_extraMaster_Col.test:
Sorting by columns that produces deterministic order.
mysql-test/suite/rpl/r/rpl_extraColmaster_innodb.result:
Result change.
mysql-test/suite/rpl/r/rpl_extraColmaster_myisam.result:
Result change.
mysql-test/suite/rpl/r/rpl_row_extraColmaster_ndb.result:
Result change.
mysql-test/suite/rpl/t/disabled.def:
Enabling tests.
mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test:
Adding missing sync_slave_with_master causing slave to keep tables
after shutdown.
mysql-test/suite/rpl_ndb/t/disabled.def:
Enabling tests.
mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb2ndb-slave.opt:
Adding --new option
mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb2ndb.test:
Adding have_log_bin.
mysql-test/suite/rpl_ndb/t/rpl_ndb_myisam2ndb-slave.opt:
Adding --new option
mysql-test/suite/rpl_ndb/t/rpl_ndb_myisam2ndb.test:
Adding have_log_bin
mysql-test/t/partition.test:
Adding have_archive, since that is used in the test.
sql/field.cc:
Eliminating all two-argument pack() and unpack() functions and moving
functionality into the four-argument version. The four argument version
is introduced so that it is possible to avoid using the storage engine
default when writing and reading the packed format (the unpacked format
still uses the storage engine's default). This is used by row-based
replication to write the fields in a storage engine- and endian-agnostic
format.
Packing integral and floating-point numbers in little-endian format
(if requested).
Using pad_char for the field instead of spaces (0x20) when unpacking.
Adding some Doxygen documentation.
---
Adding max_data_length() to denote the maximum number of bytes that
pack() will write.
Adding casts to remove warnings for debug printouts.
sql/field.h:
Eliminating all virtual pack() and unpack() functions except the four-
argument version, which now is the function that shall be overridden.
The two-argument versions are convenience functions, to prevent changes
to code that uses these.
Adding code to pack integer numbers and floating-point numbers in
little-endian format, if requested.
---
Adding max_data_length() to denote the maximum number of bytes that
pack() will write.
sql/log.cc:
Removing debug printout causing crash when starting NDB on Solaris.
sql/log_event.cc:
Adding missing #ifndef causing compile failure. Adding debug printouts.
sql/rpl_record.cc:
Debriding code. Using new pack() and unpack() functions to always pack
fields little-endian. Adding debug printouts.
---
Using max_data_length() when packing field into row.
Adding casts to debug printouts.
sql/sql_show.cc:
Adding code that causes crash on Solaris machines since printf() cannot
handle NULL values for strings properly.
mysql-test/suite/rpl_ndb/r/rpl_ndb_innodb2ndb.result:
New BitKeeper file ``mysql-test/suite/rpl_ndb/r/rpl_ndb_innodb2ndb.result''
mysql-test/suite/rpl_ndb/r/rpl_ndb_myisam2ndb.result:
New BitKeeper file ``mysql-test/suite/rpl_ndb/r/rpl_ndb_myisam2ndb.result''
Back porting NDB test case
mysql-test/suite/rpl_ndb/t/rpl_ndb_extraColMaster.test:
Back porting NDB test case
mysql-test/suite/rpl_ndb/r/rpl_ndb_extraColMaster.result:
Back porting NDB test case
mysql-test/suite/rpl_ndb/t/rpl_ndb_charset.test:
Updated test to run for both row and mixed replication testing
mysql-test/suite/rpl_ndb/r/rpl_ndb_charset.result:
Updated results file
mysql-test/extra/rpl_tests/rpl_row_charset.test:
Updated test to specify the engine in the create. In addition had to add BIG SQL for NDB
mysql-test/suite/rpl/r/rpl_row_charset.result:
Updated results file
mysql-test/suite/rpl/t/rpl_row_charset_innodb.test:
Created a wrapper to test innodb storage engine as well
mysql-test/suite/rpl/t/rpl_row_charset_innodb-master.opt:
Option file to ensure innodb on master
mysql-test/suite/rpl/t/rpl_row_charset_innodb-slave.opt:
Option file to ensure innodb on slave
mysql-test/suite/rpl/r/rpl_row_charset_innodb.result:
New results file for innodb test case
into mysql.com:/home/gluh/MySQL/Merge/5.1-opt
mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result:
Auto merged
mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result:
Auto merged
Merge with 5.0-opt.
mysql-test/r/binlog_unsafe.result:
Merge with 5.0-opt.
mysql-test/r/events_bugs.result:
Merge with 5.0-opt.
mysql-test/r/events_trans.result:
Merge with 5.0-opt.
mysql-test/r/sp.result:
Merge with 5.0-opt.
mysql-test/r/sp_gis.result:
Merge with 5.0-opt.
mysql-test/r/xml.result:
Merge with 5.0-opt.
mysql-test/suite/rpl/r/rpl_incident.result:
Merge with 5.0-opt.
mysql-test/suite/rpl/r/rpl_loaddata_fatal.result:
Merge with 5.0-opt.
mysql-test/suite/rpl/r/rpl_udf.result:
Merge with 5.0-opt.
mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result:
Merge with 5.0-opt.
mysql-test/suite/ndb/r/ndb_dd_basic.result:
Merge with 5.0-opt.
mysql-test/suite/ndb/r/ndb_dd_ddl.result:
Merge with 5.0-opt.
mysql-test/suite/ndb/r/ndb_gis.result:
Merge with 5.0-opt.
mysql-test/suite/ndb/r/ndb_row_format.result:
Merge with 5.0-opt.
mysql-test/suite/ndb/r/ndb_single_user.result:
Merge with 5.0-opt.
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb-merge
mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result:
Auto merged
mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result:
Auto merged
mysql-test/t/disabled.def:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/ha_ndbcluster_binlog.h:
Auto merged
sql/log_event.cc:
Auto merged
sql/log_event.h:
Auto merged
sql/rpl_record.cc:
Auto merged
sql/rpl_rli.h:
Auto merged
sql/rpl_utility.cc:
Auto merged
sql/rpl_utility.h:
Auto merged
into sita.local:/Users/tsmith/m/bk/maint/51
sql/field.cc:
Auto merged
sql/log_event_old.cc:
Auto merged
sql/rpl_record.h:
Auto merged
sql/rpl_utility.cc:
Auto merged
sql/rpl_utility.h:
Auto merged
sql/slave.h:
Auto merged
storage/innobase/handler/ha_innodb.cc:
Auto merged
sql/log_event.cc:
Manual merge
sql/log_event.h:
Manual merge
sql/log_event_old.h:
Manual merge
sql/rpl_record.cc:
Manual merge
sql/slave.cc:
Manual merge
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb-merge
sql/field.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/log_event.h:
Auto merged
sql/rpl_record.cc:
Auto merged
sql/rpl_utility.cc:
Auto merged
sql/rpl_utility.h:
Auto merged
into ramayana.hindu.god:/home/tsmith/m/bk/maint/51
configure.in:
Auto merged
mysql-test/r/innodb.result:
Auto merged
mysql-test/r/partition_pruning.result:
Auto merged
mysql-test/r/select.result:
Auto merged
mysql-test/suite/rpl/include/rpl_mixed_ddl.inc:
Auto merged
mysql-test/suite/rpl/include/rpl_mixed_dml.inc:
Auto merged
mysql-test/suite/rpl/r/rpl_timezone.result:
Auto merged
mysql-test/suite/rpl/t/rpl_relayspace.test:
Auto merged
mysql-test/suite/rpl/t/rpl_timezone.test:
Auto merged
mysql-test/t/select.test:
Auto merged
netware/BUILD/compile-netware-END:
Auto merged
netware/Makefile.am:
Auto merged
sql/field.cc:
Auto merged
sql/ha_partition.cc:
Auto merged
sql/ha_partition.h:
Auto merged
sql/item.cc:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_cache.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_view.cc:
Auto merged
sql/time.cc:
Auto merged
storage/innobase/handler/ha_innodb.cc:
Auto merged
storage/innobase/log/log0recv.c:
Auto merged
storage/innobase/srv/srv0srv.c:
Auto merged
storage/innobase/trx/trx0trx.c:
Auto merged
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
manual merge (use remote)
mysql-test/suite/rpl/t/disabled.def:
Manual merge - both rpl_innodb_mixed_ddl and rpl_innodb_mixed_dml
are fixed, and should be run as part of the rpl suite.
sql/field.cc:
- always pack in little endian, irrespective of starage engine native format
- always unpack as if it is atored in little endian, and unpack it to storage engine native format
using TPC-B):
Problem: A RBR event can contain incomplete row data (only key value and
fields which have been changed). In that case, when the row is unpacked
into record and written to a table, the missing fields get incorrect NULL
values leading to master-slave inconsistency.
Solution: Use values found in slave's table for columns which are not given
in the rows event. The code for writing a single row uses the following
algorithm:
1. unpack row_data into table->record[0],
2. try to insert record,
3. if duplicate record found, fetch it into table->record[0],
4. unpack row_data into table->record[0],
5. write table->record[0] into the table.
Where row_data is the row as stored in the data area of a rows event.
Thus:
a) unpacking of row_data happens at the time when row is written into
a table,
b) when unpacking (in step 4), only columns present in row_data are
overwritten - all other columns remain as they were found in the table.
Since all data needed for the above algorithm is stored inside
Rows_log_event class, functions which locate and write rows are turned
into methods of that class.
replace_record() -> Rows_log_event::write_row()
find_and_fetch_row() -> Rows_log_event::find_row()
Both methods take row data from event's data buffer - the row being
processed is pointed by m_curr_row. They unpack the data as needed into
table's record buffers record[0] or record[1]. When row is unpacked,
m_curr_row_end is set to point at next row in the data buffer.
Other changes introduced in this changeset:
- Change signature of unpack_row(): don't report errors and don't
setup table's rw_set here. Errors can happen only when setting default
values in prepare_record() function and are detected there.
- In Rows_log_event and derived classes, don't pass arguments to
the execution primitives (do_...() member functions) but use class
members instead.
- Move old row handling code into log_event_old.cc to be used by
*_rows_log_event_old classes.
Also, a new test rpl_ndb_2other is added which tests basic replication
from master using ndb tables to slave storing the same tables using
(possibly) different engine (myisam,innodb).
Test is based on existing tests rpl_ndb_2myisam and rpl_ndb_2innodb.
However, these tests doesn't work for various reasons and currently are
disabled (see BUG#19227).
The new test differs from the ones it is based on as follows:
1. Single test tests replication with different storage engines on slave
(myisam, innodb, ndb).
2. Include file extra/rpl_tests/rpl_ndb_2multi_eng.test containing
original tests is replaced by extra/rpl_tests/rpl_ndb_2multi_basic.test
which doesn't contain tests using partitioned tables as these don't work
currently. Instead, it tests replication to a slave which has more or
less columns than master.
3. Include file include/rpl_multi_engine3.inc is replaced with
include/rpl_multi_engine2.inc. The later differs by performing slightly
different operations (updating more than one row in the table) and
clearing table with "TRUNCATE TABLE" statement instead of "DELETE FROM"
as replication of "DELETE" doesn't work well in this setting.
4. Slave must use option --log-slave-updates=0 as otherwise execution of
replication events generated by ndb fails if table uses a different
storage engine on slave (see BUG#29569).
sql/log_event.cc:
- Initialization of new Rows_log_event members.
- Fixing some typos in documentation.
In Rows_log_event::do_apply_event:
- Set COMPLETE_ROWS_F flag (when master and slave have the same number of
columns and all colums are present in the row)
- Move initialization of tables write/read sets here, outside the rows
processing loop (and out of unpack_row() function).
- Remove calls to do_prepare_row() - no longer needed.
- Add code managing m_curr_row and m_curr_row_end pointers.
- Change signatures of row processing methods of Rows_log_event and it
descendants - now most arguments are taken from class members.
- Remove do_prepare_row() methods which are no longer used.
- The auto_afree_ptr template is moved to rpl_utility.h (so that it can
be used in log_event_old.cc).
- Removed copy_extra_fields() function - no longer used.
In Rows_log_event::write_row (former replace_record):
- The old code is moved to log_event_old.cc.
- Use prepare_record() and non-destructive unpack_current_row() to fill record
with data.
- In case a record being inserted already exists on slave and row data is
incomplete use the record found and non-destructive unpack_current_row() to
combine new column values with existing ones.
- More debug info added.
In Rows_log_event::find_row (former find_and_fetch_row function):
- The old code is moved to log_event_old.cc.
- Unpacking of the row is moved here.
- In case of search using PK, the key data is prepared here.
- More debug info added.
- Remove initialization of Rows_log_event::m_after_image buffer which is no
longer used.
- Use new row unpacking methods in Update_rows_log_event::do_exec_row() to
create before and after image.
Note: all existing code used by Rows_log_event::do_apply_event() has been moved
to log_event_old.cc to be used by *_rows_log_event_old classes.
sql/log_event.h:
- Add new COMPLETE_ROWS_F flag in Rows_log_event.
- Add Rows_log_event members describing the row being processed.
- Add a pointer to key buffer which is used in derived classes.
- Add new methods: find__row(), write_row() and unpack_current_row().
- Change signatures of do_...() methods (replace method arguments by
class members).
- Remove do_prepare_row() method which is no longer used.
- Update method documentation.
- Add Old_rows_log_event class, which contains the old row processing code, as
a friend of Rows_log_event so that it can access all members of an event
instance.
sql/log_event_old.cc:
Move here old implementation of Rows_log_event::do_apply_event() and
helper methods.
sql/log_event_old.h:
- Define new class Old_rows_log_event encapsulating old version of
Rows_log_event::do_apply_event() and the helper methods.
- Add the Old_rows_log_event class as a base for *_old versions of RBR event
classes, ensure that the old version of do_apply_event() is called.
- For *_old classes, declare the helper methods used in the old version of
do_apply_event().
sql/rpl_record.cc:
- Make unpack_row non-destructive for columns not present in the row.
- Don't fill read/write set here as it is done outside these functions.
- Move initialization of a record with default values to a separate
function prepare_record().
sql/rpl_record.h:
- Change signature of unpack_row().
- Declare function prepare_record().
sql/rpl_utility.cc:
Make tabe_def::calc_field_size() a const method.
sql/rpl_utility.h:
Make table_def::calc_field_size() a const method.
Move auto_afree_ptr template here so that it can be re-used (currently
in log_event.cc and log_event_old.cc). Similar with DBUG_PRINT_BITSET
macro.
mysql-test/extra/rpl_tests/rpl_ndb_2multi_basic.test:
Modification of rpl_ndb_2multi_eng test. Tests with partitioned tables
are removed and a setup with slave having different number of columns
than master is added.
mysql-test/include/rpl_multi_engine2.inc:
Modification of rpl_multi_engine3.inc which operates on more rows and
replaces "DELETE FROM t1" with "TRUNCATE TABLE t1" as the first form
doesn't replicate in NDB -> non-NDB setting (BUG#28538).
mysql-test/suite/rpl_ndb/r/rpl_ndb_2other.result:
Results of the test.
mysql-test/suite/rpl_ndb/t/rpl_ndb_2other-slave.opt:
Test options. --log-slave-updates=0 is compulsory as otherwise non-NDB
slave applying row events from NDB master will fail when trying to log
them.
mysql-test/suite/rpl_ndb/t/rpl_ndb_2other.test:
Test replication of NDB table to slave using other engine. The main test
is in extra/rpl_tests/rpl_ndb_2multi_basic.test. It is included here
several times with different settings of default storage engine on slave.
into mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
mysql-test/suite/rpl/r/rpl_extraCol_innodb.result:
Auto merged
mysql-test/suite/rpl/r/rpl_extraCol_myisam.result:
Auto merged
mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result:
Auto merged
sql/field.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/field.h:
Manual merge
This patch adds functionality to row-based replication to ensure the
slave's column sizes are >= to that of the master.
It also includes some refactoring for the code from WL#3228.
mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test:
BUG#22086 : Extra Slave Col: Char(5) on slave and Char(10) on master cause mysqld crash
Removed commented out portion of test referenced in bug report. This
test supports the original request of the bug report.
mysql-test/suite/rpl/r/rpl_extraCol_innodb.result:
BUG#22086 : Extra Slave Col: Char(5) on slave and Char(10) on master cause mysqld crash
New result file for additional test.
mysql-test/suite/rpl/r/rpl_extraCol_myisam.result:
BUG#22086 : Extra Slave Col: Char(5) on slave and Char(10) on master cause mysqld crash
New result file for additional test.
mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result:
BUG#22086 : Extra Slave Col: Char(5) on slave and Char(10) on master cause mysqld crash
New result file for additional test.
sql/field.cc:
BUG#22086 : Extra Slave Col: Char(5) on slave and Char(10) on master cause mysqld crash
This patch refactors the additions made by this bug patch and those
made by WL#3228. The effort consolidates the large switches on type()
into functions within the field classes.
sql/field.h:
BUG#22086 : Extra Slave Col: Char(5) on slave and Char(10) on master cause mysqld crash
This patch refactors the additions made by this bug patch and those
made by WL#3228. The effort consolidates the large switches on type()
into functions within the field classes.
sql/log_event.cc:
BUG#22086 : Extra Slave Col: Char(5) on slave and Char(10) on master cause mysqld crash
This patch refactors the calc_field_size() method to use the new
methods implemented in the field classes. It also corrects comments
concerning how replication of field metadata works.
sql/log_event.h:
BUG#22086 : Extra Slave Col: Char(5) on slave and Char(10) on master cause mysqld crash
This patch refactors out the calc_field_size() method into the method
save_field_metadata().
sql/rpl_utility.cc:
BUG#22086 : Extra Slave Col: Char(5) on slave and Char(10) on master cause mysqld crash
This patch adds a method to check the size of the field on the master
using the field metadata from WL#3228. Each column is checked to ensure
the slave's column is >= to the master's column in size.
sql/rpl_utility.h:
BUG#22086 : Extra Slave Col: Char(5) on slave and Char(10) on master cause mysqld crash
This patch changes the table_def class so that it records the size of
the metadata. This is a result of refactoring out the calc_field_size()
method into the method save_field_metadata(). Prevents access via
field_metadata(col) to unitialized memory when there is no metadata
transmitted from the master.
mysql-test/suite/rpl/r/rpl_row_colSize.result:
BUG#22086 : Extra Slave Col: Char(5) on slave and Char(10) on master cause mysqld crash
New result file for additional test.
mysql-test/suite/rpl/t/rpl_row_colSize.test:
BUG#22086 : Extra Slave Col: Char(5) on slave and Char(10) on master cause mysqld crash
Added a test file to test each variable type that relies on field
metadata from the master.
mysql-test/include/test_fieldsize.inc:
BUG#22086 : Extra Slave Col: Char(5) on slave and Char(10) on master cause mysqld crash
Sub unit file to test each variable type that relies on field
metadata from the master.
This patch adds the ability to store extra field metadata in the table
map event. This data can include pack_length() or field_lenght() for
fields such as CHAR or VARCHAR enabling developers to add code that
can check for compatibilty between master and slave columns. More
importantly, the extra field metadata can be used to store data from the
master correctly should a VARCHAR field on the master be <= 255 bytes
while the same field on the slave is > 255 bytes.
The patch also includes the needed changes to unpack to ensure that data
which is smaller on the master can be unpacked correctly on the slave.
WL#3915 : (NDB) master's cols > slave
Slave starts accepting and handling rows of master's tables which have more columns.
The most important part of implementation is how to caclulate the amount of bytes to
skip for unknown by slave column.
mysql-test/suite/binlog/t/binlog_row_mix_innodb_myisam.test:
WL#3228 : RBR using different table defs on slave/master
This patch changes the test to coincide with changes to binlog
size of table map event.
mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result:
WL#3228 : RBR using different table defs on slave/master
This patch contains a new result file as a result of the change to the
size of the tablemap log event.
mysql-test/suite/rpl/r/rpl_row_create_table.result:
WL#3228 : RBR using different table defs on slave/master
This patch contains a new result file as a result of the change to the
size of the tablemap log event.
mysql-test/suite/rpl/r/rpl_row_flsh_tbls.result:
WL#3228 : RBR using different table defs on slave/master
This patch contains a new result file as a result of the change to the
size of the tablemap log event.
mysql-test/suite/rpl/r/rpl_row_inexist_tbl.result:
WL#3228 : RBR using different table defs on slave/master
This patch contains a new result file as a result of the change to the
size of the tablemap log event.
mysql-test/suite/rpl/r/rpl_row_log.result:
WL#3228 : RBR using different table defs on slave/master
This patch contains a new result file as a result of the change to the
size of the tablemap log event.
mysql-test/suite/rpl/r/rpl_row_log_innodb.result:
WL#3228 : RBR using different table defs on slave/master
This patch contains a new result file as a result of the change to the
size of the tablemap log event.
mysql-test/suite/rpl/r/rpl_row_max_relay_size.result:
WL#3228 : RBR using different table defs on slave/master
This patch contains a new result file as a result of the change to the
size of the tablemap log event.
mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result:
WL#3228 : RBR using different table defs on slave/master
This patch contains a new result file as a result of the change to the
size of the tablemap log event.
mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result:
WL#3228 : RBR using different table defs on slave/master
This patch contains a new result file as a result of the change to the
size of the tablemap log event.
mysql-test/suite/rpl/r/rpl_row_until.result:
WL#3228 : RBR using different table defs on slave/master
This patch contains a new result file as a result of the change to the
size of the tablemap log event.
mysql-test/suite/rpl/r/rpl_skip_error.result:
WL#3228 : RBR using different table defs on slave/master
This patch contains a new result file as a result of the change to the
size of the tablemap log event.
mysql-test/suite/rpl/t/disabled.def:
WL#3915 master's cols > slave
Disabled the rpl_stm_extraColmaster_ndb test because statement-based
replication is not supported in NDB at this time. It can be enabled
when statement-based replication for NDB is released.
mysql-test/suite/rpl/t/rpl_row_create_table.test:
WL#3228 : RBR using different table defs on slave/master
This patch corrects binlog positions a result of the change to the
size of the tablemap log event.
mysql-test/suite/rpl/t/rpl_row_flsh_tbls.test:
WL#3228 : RBR using different table defs on slave/master
This patch corrects binlog positions a result of the change to the
size of the tablemap log event.
mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result:
WL#3228 : RBR using different table defs on slave/master
This patch contains a new result file as a result of the change to the
size of the tablemap log event.
mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result:
WL#3228 : RBR using different table defs on slave/master
This patch contains a new result file as a result of the change to the
size of the tablemap log event.
sql/field.cc:
WL#3228 : RBR using different table defs on slave/master
This patch includes updates to the unpack() methods for the variable
length fields. A new parameter was added (from_length) that is the
value stored in the field_metadata of the table map from the table_def
class. If the value is non-zero and less than what the field on the
slave is then use the from_length else use the original value from the
field on the slave.
sql/field.h:
L#3228 : RBR using different table defs on slave/master
This patch includes updates to the unpack() methods for the variable
length fields. A new parameter was added (from_length) that is the
value stored in the field_metadata of the table map from the table_def
class.
sql/log_event.cc:
WL#3228 : RBR using different table defs on slave/master
This patch adds methods to calculate the field metadata size, prepare
the field metadata for writing to the binlog, and additions to the
Table_map_log_event::write_body method to include the field metadata
in the table map that is written to the binlog.
WL#3915 master's cols > slave
copying extra (slave's) fields returns early if master's table version is wider;
removing assert in the way of master > slave cols.
sql/log_event.h:
WL#3228 : RBR using different table defs on slave/master
This patch adds method declarations and variables needed to support
storing field metadata in the table map that is written to the binlog.
sql/rpl_record.cc:
WL#3228 : RBR using different table defs on slave/master
This patch modifies the unpack_row() method to unpack fields passing in
the value from the table_def class. This value is the extra field
metadata stored there from the master.
WL#3915 master's cols > slave
adding a snippet that shift exectution curson donw the row skipping unknown by slave
fields' data.
sql/rpl_rli.h:
WL#3228 : RBR using different table defs on slave/master
This patch adds a helper function to retrieve the table_def for a given
table in the RPL_TABLE_LIST structure.
sql/rpl_utility.cc:
WL#3228 : RBR using different table defs on slave/master
This patch adds a helper method that retrieves the correct size
parameter for the field. This method is used to compare the size as
sent by the master with that on the slave for all types of fields that
can vary in size and storage requirements.
WL#3915 master's cols > slave
Remove warning message for master's cols > slave.
sql/rpl_utility.h:
WL#3228 : RBR using different table defs on slave/master
This patch changes the table_def class constructor to pass in the raw
data read from the table map and extract it into an array of dimension
size (number of fields). It also adds a method to return the field
metadata for any field. The method returns the data stored in the table
map or 0 if no data was stored for that field. Lastly, a method to return
the results of field->maybe_null() is included so that the slave can
determine if a field that is not on the slave is null.
mysql-test/suite/rpl/t/rpl_colSize.test:
WL#3228 : RBR using different table defs on slave/master
This patch contains a new test designed to test the feature of having
columns on the master that are smaller than what is on the slave.
mysql-test/suite/rpl/t/rpl_extraColmaster_innodb-master.opt:
WL#3915 master's cols > slave
option for innodb
mysql-test/suite/rpl/t/rpl_extraColmaster_innodb-slave.opt:
WL#3915 master's cols > slave
option for innodb
mysql-test/suite/rpl/t/rpl_extraColmaster_innodb.test:
WL#3915 master's cols > slave
Test of innodb. Test runs in both statement- and row-based replication.
mysql-test/suite/rpl/t/rpl_extraColmaster_myisam.test:
WL#3915 master's cols > slave
Test of myisam. Test runs in both statement- and row-based replication.
mysql-test/suite/rpl/r/rpl_colSize.result:
WL#3228 : RBR using different table defs on slave/master
This patch contains a result file for the new test designed to test the
feature of having columns on the master that are smaller than what is
on the slave.
mysql-test/suite/rpl/t/rpl_row_extraColmaster_ndb.test:
WL#3915 master's cols > slave
Test of ndb. Test runs in row-based replication.
mysql-test/suite/rpl/t/rpl_stm_extraColmaster_ndb.test:
WL#3915 master's cols > slave
Test of ndb. Test runs in statement-based replication.
mysql-test/suite/rpl/r/rpl_extraColmaster_innodb.result:
WL#3915 master's cols > slave
new results
mysql-test/suite/rpl/r/rpl_extraColmaster_myisam.result:
WL#3915 master's cols > slave
new results
mysql-test/extra/rpl_tests/rpl_extraMaster_Col.test:
WL#3915 master's cols > slave
basic tests checking altering and skipping extra fields by slave.
The fields can be of any possible types.
mysql-test/suite/rpl/r/rpl_row_extraColmaster_ndb.result:
WL#3915 master's cols > slave
new results
Removing a RESET MASTER inside the test since that will change binlog
positions in such a manner that the dual masters lose track of where
they acually are.
mysql-test/suite/rpl_ndb/r/rpl_ndb_circular_simplex.result:
Result change.
mysql-test/suite/rpl_ndb/t/disabled.def:
Enabling test.
mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_simplex.test:
Removing a RESET MASTER since circular replication don't look kindly
on truncating binlogs.
Adding code to filter out slave SQL errors since these are checked by
the tests themselves.
mysql-test/lib/mtr_report.pl:
Filtering out slave SQL errors since these are handled by the
tests themselves.
mysql-test/suite/rpl/t/disabled.def:
Enabling disabled tests.
mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result:
Result change.
mysql-test/suite/rpl_ndb/t/disabled.def:
Enabling disabled tests.
into dl145h.mysql.com:/data0/mkindahl/mysql-5.1-2team
include/my_bitmap.h:
Auto merged
mysql-test/suite/binlog/r/binlog_multi_engine.result:
Auto merged
mysql-test/suite/ndb/r/ndb_binlog_multi.result:
Auto merged
mysql-test/suite/ndb/t/ndb_autodiscover3.test:
Auto merged
mysql-test/suite/ndb/t/ndb_binlog_basic.test:
Auto merged
mysql-test/suite/ndb/t/ndb_binlog_ddl_multi.test:
Auto merged
mysql-test/suite/ndb/t/ndb_binlog_discover.test:
Auto merged
mysql-test/suite/ndb/t/ndb_binlog_ignore_db.test:
Auto merged
mysql-test/suite/ndb/t/ndb_binlog_log_bin.test:
Auto merged
mysql-test/suite/ndb/t/ndb_binlog_multi.test:
Auto merged
mysql-test/suite/ndb/t/ndb_multi_row.test:
Auto merged
mysql-test/suite/rpl/r/rpl_row_log.result:
Auto merged
mysql-test/suite/rpl/r/rpl_row_log_innodb.result:
Auto merged
mysql-test/suite/rpl/r/rpl_stm_log.result:
Auto merged
mysql-test/suite/rpl/r/rpl_truncate_7ndb_2.result:
Auto merged
mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_partitions.result:
Auto merged
mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_UUID.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_bank.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_blob.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_blob2.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_simplex.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_advance.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_basic.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_partitions.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_ddl.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_delete_nowhere.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_do_db.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_do_table.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_extraCol.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_func003.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_idempotent.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_insert_ignore.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_multi_update2.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_multi_update3.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_rep_ignore.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_row_001.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_sp003.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_sp006.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_sync.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_trig004.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndbapi_multi.test:
Auto merged
mysql-test/suite/rpl_ndb/t/rpl_row_basic_7ndb.test:
Auto merged
sql/log_event.cc:
Auto merged
mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result:
Manual merge
mysql-test/t/disabled.def:
Manual merge of main tree into replication tree
into ramayana.hindu.god:/home/tsmith/m/bk/maint/51
mysql-test/suite/rpl_ndb/t/disabled.def:
Auto merged
mysql-test/t/disabled.def:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_insert.cc:
Auto merged