Commit graph

250 commits

Author SHA1 Message Date
unknown
30aee30b0d Merge stella.local:/home2/mydev/mysql-5.1-amain
into  stella.local:/home2/mydev/mysql-5.1-axmrg


include/my_base.h:
  Auto merged
mysql-test/mysql-test-run.pl:
  Auto merged
mysql-test/suite/ndb/t/disabled.def:
  Auto merged
mysql-test/t/partition.test:
  Auto merged
sql/handler.cc:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/slave.cc:
  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_yacc.yy:
  Auto merged
client/mysql.cc:
  Manual merge
mysql-test/suite/rpl/t/disabled.def:
  Manual merge
2007-11-27 19:29:10 +01:00
unknown
211383388e Bug#32435:
DROP DATABASE statement writes changes to mysql.proc table under RBR

When replicating a DROP DATABASE statement with a database holding
stored procedures, the changes to the mysql.proc table was recorded
in the binary log under row-based replication.

With this patch, the thread uses statement-logging format for the
duration of the DROP DATABASE statement. The logging format is
(already) reset at the end of the statement, so no additional code
for resetting the logging format is necessary.


sql/sql_db.cc:
  Clearing the row-based statement flag for the DROP DATABASE statement
  since it should always be replicated as a statement.
mysql-test/extra/binlog_tests/database.test:
  New BitKeeper file ``mysql-test/extra/binlog_tests/database.test''
mysql-test/suite/binlog/r/binlog_database.result:
  New BitKeeper file ``mysql-test/suite/binlog/r/binlog_database.result''
mysql-test/suite/binlog/t/binlog_database.test:
  New BitKeeper file ``mysql-test/suite/binlog/t/binlog_database.test''
2007-11-16 15:55:22 +01:00
unknown
c8450b278d Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
corrupts a MERGE table
Bug 26867 - LOCK TABLES + REPAIR + merge table result in
            memory/cpu hogging
Bug 26377 - Deadlock with MERGE and FLUSH TABLE
Bug 25038 - Waiting TRUNCATE
Bug 25700 - merge base tables get corrupted by
            optimize/analyze/repair table
Bug 30275 - Merge tables: flush tables or unlock tables
            causes server to crash
Bug 19627 - temporary merge table locking
Bug 27660 - Falcon: merge table possible
Bug 30273 - merge tables: Can't lock file (errno: 155)

The problems were:

Bug 26379 - Combination of FLUSH TABLE and REPAIR TABLE
                corrupts a MERGE table

  1. A thread trying to lock a MERGE table performs busy waiting while
     REPAIR TABLE or a similar table administration task is ongoing on
     one or more of its MyISAM tables.
  
  2. A thread trying to lock a MERGE table performs busy waiting until all
     threads that did REPAIR TABLE or similar table administration tasks
     on one or more of its MyISAM tables in LOCK TABLES segments do UNLOCK
     TABLES. The difference against problem #1 is that the busy waiting
     takes place *after* the administration task. It is terminated by
     UNLOCK TABLES only.
  
  3. Two FLUSH TABLES within a LOCK TABLES segment can invalidate the
     lock. This does *not* require a MERGE table. The first FLUSH TABLES
     can be replaced by any statement that requires other threads to
     reopen the table. In 5.0 and 5.1 a single FLUSH TABLES can provoke
     the problem.

Bug 26867 - LOCK TABLES + REPAIR + merge table result in
            memory/cpu hogging

  Trying DML on a MERGE table, which has a child locked and
  repaired by another thread, made an infinite loop in the server.

Bug 26377 - Deadlock with MERGE and FLUSH TABLE

  Locking a MERGE table and its children in parent-child order
  and flushing the child deadlocked the server.

Bug 25038 - Waiting TRUNCATE

  Truncating a MERGE child, while the MERGE table was in use,
  let the truncate fail instead of waiting for the table to
  become free.

Bug 25700 - merge base tables get corrupted by
            optimize/analyze/repair table

  Repairing a child of an open MERGE table corrupted the child.
  It was necessary to FLUSH the child first.

Bug 30275 - Merge tables: flush tables or unlock tables
            causes server to crash

  Flushing and optimizing locked MERGE children crashed the server.

Bug 19627 - temporary merge table locking

  Use of a temporary MERGE table with non-temporary children
  could corrupt the children.

  Temporary tables are never locked. So we do now prohibit
  non-temporary chidlren of a temporary MERGE table.

Bug 27660 - Falcon: merge table possible

  It was possible to create a MERGE table with non-MyISAM children.

Bug 30273 - merge tables: Can't lock file (errno: 155)

  This was a Windows-only bug. Table administration statements
  sometimes failed with "Can't lock file (errno: 155)".

These bugs are fixed by a new implementation of MERGE table open.

When opening a MERGE table in open_tables() we do now add the
child tables to the list of tables to be opened by open_tables()
(the "query_list"). The children are not opened in the handler at
this stage.

After opening the parent, open_tables() opens each child from the
now extended query_list. When the last child is opened, we remove
the children from the query_list again and attach the children to
the parent. This behaves similar to the old open. However it does
not open the MyISAM tables directly, but grabs them from the already
open children.

When closing a MERGE table in close_thread_table() we detach the
children only. Closing of the children is done implicitly because
they are in thd->open_tables.

For more detail see the comment at the top of ha_myisammrg.cc.

Changed from open_ltable() to open_and_lock_tables() in all places
that can be relevant for MERGE tables. The latter can handle tables
added to the list on the fly. When open_ltable() was used in a loop
over a list of tables, the list must be temporarily terminated
after every table for open_and_lock_tables().
table_list->required_type is set to FRMTYPE_TABLE to avoid open of
special tables. Handling of derived tables is suppressed.
These details are handled by the new function
open_n_lock_single_table(), which has nearly the same signature as
open_ltable() and can replace it in most cases.

In reopen_tables() some of the tables open by a thread can be
closed and reopened. When a MERGE child is affected, the parent
must be closed and reopened too. Closing of the parent is forced
before the first child is closed. Reopen happens in the order of
thd->open_tables. MERGE parents do not attach their children
automatically at open. This is done after all tables are reopened.
So all children are open when attaching them.

Special lock handling like mysql_lock_abort() or mysql_lock_remove()
needs to be suppressed for MERGE children or forwarded to the parent.
This depends on the situation. In loops over all open tables one
suppresses child lock handling. When a single table is touched,
forwarding is done.

Behavioral changes:
===================

This patch changes the behavior of temporary MERGE tables.
Temporary MERGE must have temporary children.
The old behavior was wrong. A temporary table is not locked. Hence
even non-temporary children were not locked. See
Bug 19627 - temporary merge table locking.

You cannot change the union list of a non-temporary MERGE table
when LOCK TABLES is in effect. The following does *not* work:
CREATE TABLE m1 ... ENGINE=MRG_MYISAM ...;
LOCK TABLES t1 WRITE, t2 WRITE, m1 WRITE;
ALTER TABLE m1 ... UNION=(t1,t2) ...;
However, you can do this with a temporary MERGE table.

You cannot create a MERGE table with CREATE ... SELECT, neither
as a temporary MERGE table, nor as a non-temporary MERGE table.
CREATE TABLE m1 ... ENGINE=MRG_MYISAM ... SELECT ...;
Gives error message: table is not BASE TABLE.


include/my_base.h:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Added HA_EXTRA_ATTACH_CHILDREN and HA_EXTRA_DETACH_CHILDREN.
include/myisammrg.h:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Added element 'children_attached' to MYRG_INFO.
  Added declarations for myrg_parent_open(),
  myrg_attach_children() and myrg_detach_children()
  for the new MERGE table open approach.
mysql-test/extra/binlog_tests/blackhole.test:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Preliminarily added new error message with a comment.
mysql-test/r/create.result:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Fixed test result.
mysql-test/r/delayed.result:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Moved test result from here to merge.result.
mysql-test/r/merge.result:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Fixed/added test result.
mysql-test/r/myisam.result:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Moved test result for bug 8306 from here to merge.result.
mysql-test/suite/binlog/r/binlog_stm_blackhole.result:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Fixed test result.
mysql-test/t/create.test:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Fixed error number.
mysql-test/t/delayed.test:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Moved test from here to merge.test.
mysql-test/t/merge.test:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Fixed test for new temporary MERGE table behavior.
  Exchanged error numbers by symbolic codes.
  Added tests. Included are tests for bugs
  8306 (moved from myisam.test), 26379, 19627, 25038, 25700, 26377,
  26867, 27660, 30275, and 30273.
  Fixed changes resulting from disabled CREATE...SELECT.
  Integrated tests moved from delayed.test and myisam.test to here.
mysql-test/t/myisam.test:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Moved test for bug 8306 from here to merge.test.
mysys/thr_lock.c:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Added code to let the owner of a high priority lock (TL_WRITE_ONLY)
  to bypass its own lock.
sql/ha_ndbcluster_binlog.cc:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Added 'thd' argument to init_tmp_table_share().
sql/handler.cc:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Added 'thd' argument to init_tmp_table_share().
sql/mysql_priv.h:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Removed declaration of check_merge_table_access(). It is now static
  in sql_parse.cc.
  Added declaration for fix_merge_after_open().
  Renamed open_and_lock_tables() to open_and_lock_tables_derived()
  with additional parameter 'derived'.
  Added inline functions simple_open_n_lock_tables() and
  open_and_lock_tables(), which call open_and_lock_tables_derived()
  and add the argument for 'derived'.
  Added new function open_n_lock_single_table(), which can be used
  as an replacement for open_ltable() in most situations. Internally
  it calls simple_open_n_lock_tables() so hat it is appropriate for
  MERGE tables.
  Added 'thd' argument to init_tmp_table_share().
sql/slave.cc:
  ug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Added comment.
sql/sql_base.cc:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  
  Defined new functions add_merge_table_list(),
  attach_merge_children(), detach_merge_children(), and
  fix_merge_after_open() for the new MERGE table open approach.
  
  Added calls of the new functions to
  close_handle_and_leave_table_as_lock(), close_thread_tables(),
  close_thread_table(), unlink_open_table(), reopen_name_locked_table(),
  reopen_table(), drop_locked_tables(), close_temporary_table(),
  and open_tables() respectively.
  
  Prevented special lock handling of merge children (like
  mysql_lock_remove, mysql_lock_merge or mysql_lock_abort)
  at many places. Some of these calls are forwarded to the
  parent table instead.
  
  Added code to set thd->some_tables_deleted for every thread that has
  a table open that we are flushing.
  Added code for MERGE tables to unlink_open_table().
  Added MERGE children to the list of unusable tables in open_table().
  Added MERGE table handling to reopen_table().
  Added lock handling and closing of a parent before the children
  in close_data_files_and_morph_locks().
  Added code for re-attaching children in reopen_tables().
  Added MYSQL_LOCK_NOTIFY_IF_NEED_REOPEN to the locking flags and
  error reporting after mysql_lock_tables() in reopen_tables().
  Added lock handling and closing of a parent before the children
  in close_old_data_files().
  Added lock handling and detaching in drop_locked_tables().
  Added code for removing the children list from the statement list
  to prepare for a repetition in open_tables().
  Added new function open_n_lock_single_table(), which can be used
  as an replacement for open_ltable() in most situations. Internally
  it calls simple_open_n_lock_tables() so hat it is appropriate for
  MERGE tables.
  Disabled use of open_ltable() for MERGE tables.
  Removed function simple_open_n_lock_tables(). It is now inline
  declared in mysql_priv.h.
  Renamed open_and_lock_tables() to open_and_lock_tables_derived()
  with additional parameter 'derived'. open_and_lock_tables() is now
  inline declared in mysql_priv.h.
  Added a check for end-of-list in two loops in lock_tables().
  Added 'thd' argument to init_tmp_table_share().
sql/sql_insert.cc:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Changed from open_ltable() to open_n_lock_single_table() in
  handle_delayed_insert().
  Reestablished LEX settings after lex initialization.
  Added 'thd' argument to init_tmp_table_share().
sql/sql_parse.cc:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Made check_merge_table_access() a static function.
  Disabled use of CREATE...SELECT for MERGE tables.
sql/sql_partition.cc:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Fixed comment typo.
sql/sql_select.cc:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Added 'thd' argument to init_tmp_table_share().
sql/sql_table.cc:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Optimized use of mysql_ha_flush() in mysql_rm_table_part2().
  Disabled the use of MERGE tables with prepare_for_restore() and
  prepare_for_repair().
  Changed from open_ltable() to open_n_lock_single_table() in
  mysql_alter_table() and mysql_checksum_table().
  Disabled change of child list under LOCK TABLES.
  Initialized table_list->table in mysql_recreate_table().
sql/sql_trigger.cc:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Added code for allowing CREATE TRIGGER under LOCK TABLE, to be able
  to test it with MERGE tables.
sql/table.cc:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Added 'thd' argument to init_tmp_table_share().
  Setting table_map_id from query_id in init_tmp_table_share().
  Added member function TABLE::is_children_attached().
sql/table.h:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Added access method get_table_def_version() to TABLE_SHARE.
  Added elements for MERGE tables to TABLE and TABLE_LIST.
storage/myisam/ha_myisam.cc:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Added an unrelated comment to the function comment of table2myisam().
storage/myisam/ha_myisam.h:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Added new member function MI_INFO::file_ptr().
storage/myisammrg/ha_myisammrg.cc:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Added callback functions to support parent open and children attach
  of MERGE tables.
  Changed ha_myisammrg::open() to initialize storage engine structures
  and create a list of child tables only. Child tables are not opened.
  Added ha_myisammrg::attach_children(), which does now the main part
  of MERGE open.
  Added ha_myisammrg::detach_children().
  Added calls to ::attach_children() and ::detach_children() to
  ::extra() on HA_EXTRA_ATTACH_CHILDREN and HA_EXTRA_DETACH_CHILDREN
  respectively.
  Added a check for matching TEMPORARY type for children against
  parent.
  Added a check for table def version.
  Added support for thd->open_options to attach_children().
  Changed child path name generation for temporary tables so that
  it does nothing special for temporary tables.
storage/myisammrg/ha_myisammrg.h:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Added elements to class ha_myisammrg to support the new
  open approach.
  Changed empty destructor definition to a declaration.
  Implemented in ha_myisammrg.cc.
  Added declaration for methods attach_children() and
  detach_children().
  Added definition for method table_ptr() for use with
  callback functions.
storage/myisammrg/myrg_close.c:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Added a check to avoid closing of MyISAM tables when the
  child tables are not attached.
  Added freeing of rec_per_key_part when the child tables
  are not attached.
storage/myisammrg/myrg_extra.c:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  Some ::extra() functions and ::reset() can be called when
  children are detached.
storage/myisammrg/myrg_open.c:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
              corrupts a MERGE table
  
  Kept old myrg_open() for MERGE use independent from MySQL.
  Removed an always true condition in myrg_open().
  Set children_attached for independent MERGE use in myrg_open().
  
  Added myrg_parent_open(), myrg_attach_children(), and
  myrg_detach_children() for the new MERGE table open approach.
mysql-test/r/merge-big.result:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE corrupts a MERGE table
  New test result
mysql-test/t/merge-big.test:
  Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE corrupts a MERGE table
  New test case
2007-11-15 20:25:43 +01:00
unknown
19ef3ae88d Merge dl145h.mysql.com:/data0/mkindahl/mysql-5.1
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.
2007-11-14 11:07:30 +01:00
unknown
e7c56ceb8b BUG#31552 (Replication breaks when deleting rows from out-of-sync table without PK):
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.
2007-11-09 11:02:51 +01:00
unknown
e42966f5a5 Merge aelkin@bk-internal.mysql.com:/home/bk/mysql-5.1-rpl
into  koti.dsl.inet.fi:/home/elkin/MySQL/TEAM/FIXES/5.1/bug31554-rpl_truncate
2007-11-02 14:05:51 +02:00
unknown
0ac501c79a Bug #31554 rpl.rpl_truncate_2myisam test failure: wrong master binlog file name
Actually, the failure happened with 3innodb as well. Most probably
the reason is in failing to delete a binlog file on __NT__ so that
that master increments the index of the binlog file.
The test results hide valueable warning that windows could generate
about that.

The scope of this fix is to make sure we have such warning and
to lessen chances for binlog file being held at time of closing.
The dump thread is getting a good chance to leave and 
release the file for its successful deletion.

We shall watch over the two tests as regression is not excluded.
In that case we would have an extra info possibly explaining why
__NT__ env can not close/delete the file.
However, regardless of that reason, there is alwasy workaround to mask out
non-deterministic binlog index number.



mysql-test/extra/rpl_tests/rpl_truncate_helper.test:
  enable warnings for other than DROP queries;
  wait for slave's full stop which ensures io thread left and that
  will be regarded by dump thread to leave and close the binlog file;
  relocating reset master to the end of the test so that the caller of
  this helper should start with the binlog name which has not yet been
  affected/reset since its creation.
mysql-test/suite/rpl/r/rpl_truncate_2myisam.result:
  results changed
mysql-test/suite/rpl/r/rpl_truncate_3innodb.result:
  results changed
2007-11-02 14:00:38 +02:00
unknown
496bac71c4 rpl_extraSlave_Col.test:
Corrected issues found in preparing to push code


mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test:
  Corrected issues found in preparing to push code
2007-10-31 14:01:01 -05:00
unknown
f1cdbe0d67 Merge mysql.com:/usr/clones/mysql-5.1-new-rpl
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
2007-10-30 10:02:37 -05:00
unknown
c84d4b2139 Merge whalegate.ndb.mysql.com:/home/tomas/cge-5.1
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
2007-10-30 11:28:19 +01:00
unknown
82cc70959e Merge kindahl-laptop.dnsalias.net:/home/bkroot/mysql-5.1-rpl
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
2007-10-22 08:50:08 +02:00
unknown
74ef292dc2 BUG#28618 (Skipping into the middle of a group with SQL_SLAVE_SKIP_COUNTER
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''
2007-10-19 14:18:41 +02:00
unknown
bf9eb0f0d7 manual merge for bug_29136, bug#29309.
mysql-test/extra/binlog_tests/mix_innodb_myisam_side_effects.test:
  manual merge from 5.0
mysql-test/r/innodb.result:
  results changed
mysql-test/r/multi_update.result:
  results changed
mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result:
  manual merge: results re-recorded
mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
  results changed
mysql-test/suite/manual/r/rpl_replication_delay.result:
  results recorded for 5.1
mysql-test/t/innodb.test:
  removing bug27716 regression test as one exists in binlog suite already.
mysql-test/t/multi_update.test:
  manual merge plus refining for execution in both binlog_format.
sql/log_event.cc:
  bloody manual merge;
  the fact that an event is artificial is encode with setting timestamp argument to zero.
  rli's last_master_timestamp won't be updated in stmt_done in such case.
sql/rpl_rli.cc:
  simulation and the real fixing code.
  Don't update last_master_timestamp with zero.
sql/sql_delete.cc:
  manual merge
2007-10-13 23:12:50 +03:00
unknown
bc2ecae3e8 Merge kindahl-laptop.dnsalias.net:/home/bkroot/mysql-5.1-rpl
into  kindahl-laptop.dnsalias.net:/home/bk/b29549-mysql-5.1-target-5.1.22


mysql-test/suite/rpl/t/disabled.def:
  Auto merged
mysql-test/suite/rpl_ndb/t/disabled.def:
  Auto merged
sql/log.cc:
  Auto merged
sql/rpl_record.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
BitKeeper/deleted/.del-rpl_ndb_innodb2ndb.result~1:
  Delete: mysql-test/suite/rpl_ndb/r/rpl_ndb_innodb2ndb.result
BitKeeper/deleted/.del-rpl_ndb_myisam2ndb.result~1:
  Delete: mysql-test/suite/rpl_ndb/r/rpl_ndb_myisam2ndb.result
mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb2ndb-slave.opt:
  Manual merge
mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb2ndb.test:
  Manual merge
mysql-test/suite/rpl_ndb/t/rpl_ndb_myisam2ndb-slave.opt:
  Manual merge
mysql-test/suite/rpl_ndb/t/rpl_ndb_myisam2ndb.test:
  Manual merge
sql/log_event.cc:
  Manual merge
sql/field.cc:
  Manual merge and adding comment.
sql/field.h:
  Manual merge.
2007-10-12 09:40:24 +02:00
unknown
06fb8c2d10 BUG#29549 (Endians: test failures on Solaris):
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''
2007-10-11 18:18:05 +02:00
unknown
15c04ead97 .del-rpl_stm_extraColmaster_ndb.test~5ac81fa1ec366ba:
Delete: mysql-test/suite/rpl/t/rpl_stm_extraColmaster_ndb.test
.del-rpl_row_extraColmaster_ndb.result~a2c64bae75b49d2:
  Delete: mysql-test/suite/rpl/r/rpl_row_extraColmaster_ndb.result
.del-rpl_row_extraColmaster_ndb.test~523b0954869c4423:
  Delete: mysql-test/suite/rpl/t/rpl_row_extraColmaster_ndb.test
Many files:
  merged and cleanup of test cases


BitKeeper/deleted/.del-rpl_row_extraColmaster_ndb.test~523b0954869c4423:
  Delete: mysql-test/suite/rpl/t/rpl_row_extraColmaster_ndb.test
BitKeeper/deleted/.del-rpl_stm_extraColmaster_ndb.test~5ac81fa1ec366ba:
  Delete: mysql-test/suite/rpl/t/rpl_stm_extraColmaster_ndb.test
BitKeeper/deleted/.del-rpl_row_extraColmaster_ndb.result~a2c64bae75b49d2:
  Delete: mysql-test/suite/rpl/r/rpl_row_extraColmaster_ndb.result
mysql-test/suite/rpl/r/rpl_extraColmaster_innodb.result:
  merged and cleanup of test cases
mysql-test/suite/rpl/r/rpl_extraColmaster_myisam.result:
  merged and cleanup of test cases
mysql-test/suite/rpl/t/rpl_extraColmaster_innodb.test:
  merged and cleanup of test cases
mysql-test/suite/rpl/t/rpl_extraColmaster_myisam.test:
  merged and cleanup of test cases
mysql-test/extra/rpl_tests/rpl_extraMaster_Col.test:
  merged and cleanup of test cases
2007-10-10 16:43:20 +02:00
unknown
de4cce5288 Updated NDB test to run for both RBR and MBR testing. In addition added test for Innodb and updated results files for all tests.
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
2007-10-09 19:51:57 +02:00
unknown
fe24b460c4 Merge: bug@27417,23333 and bug#28960 tests with 5.1
mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result:
  results changed
mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
  results changed
mysql-test/suite/binlog/t/binlog_row_mix_innodb_myisam.test:
  calling included file with testing bug#27417,23333. bug#28960 is not an rbr bug.
mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam.test:
  moved SF() with side effects bugs to a separate includable file.
  This test verifies STMT format whereas binlog_row test is reposible for
  ROW format.
mysql-test/extra/binlog_tests/mix_innodb_myisam_side_effects.test:
  sourced part for bugs with SF() etc having side effects of midifying
  non-transactional tables.
2007-09-17 12:31:10 +02:00
unknown
68297025a0 Manual merge fixes/tests for bugs_28960,27417,23333.
mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
  follow-up of the previous manual resolve. The snippet is moved into the heading
  file.
mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
  results changed
mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam.test:
  removing explicit offsets from report;
  appending bug#27417,23333,28960 related snippet, addressing left TODO:s.
mysql-test/suite/rpl/r/rpl_packet.result:
  results changed
mysql-test/suite/rpl/t/rpl_packet.test:
  fixing row/stmt compatibility with #-ing out unneeded values
2007-09-16 12:07:00 +02:00
unknown
e35c1ab9a2 Merge dl145j.mysql.com:/tmp/andrei/mysql-5.0-rpl
into  dl145j.mysql.com:/tmp/andrei/5.1-merge


BitKeeper/deleted/.del-sp_trans_log.result:
  Auto merged
BitKeeper/deleted/.del-sp_trans_log.test:
  Auto merged
mysql-test/suite/rpl/r/rpl_packet.result:
  Auto merged
sql/sql_delete.cc:
  Auto merged
sql/sql_update.cc:
  Auto merged
mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
  should be re-recorded
mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
  manual merge
mysql-test/suite/rpl/t/rpl_packet.test:
  manual merge
sql/slave.cc:
  manual merge
sql/sql_insert.cc:
  manual merge - installing 5.0 patch logics
sql/sql_load.cc:
  manual merge
2007-09-15 21:25:56 +02:00
unknown
48193af489 Merge sita.local:/Users/tsmith/m/bk/maint/51-target22
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
2007-08-29 15:28:38 -06:00
unknown
f7bb00abee Merge quant.(none):/ext/mysql/bk/mysql-5.1-bug21842-5.1.22
into  quant.(none):/ext/mysql/bk/mysql-5.1-bug21842-rpl


mysql-test/suite/ndb/r/ndb_dd_basic.result:
  Auto merged
sql/field.cc:
  Auto merged
sql/handler.cc:
  Auto merged
sql/log.cc:
  Auto merged
sql/log_event_old.cc:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/rpl_record.cc:
  Auto merged
sql/rpl_record.h:
  Auto merged
sql/rpl_utility.cc:
  Auto merged
sql/rpl_utility.h:
  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_select.cc:
  Auto merged
sql/sql_string.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/unireg.h:
  Auto merged
sql/log_event.cc:
  Manual merge.
sql/log_event.h:
  Manual merge.
sql/log_event_old.h:
  Manual merge.
2007-08-27 14:01:19 +02:00
unknown
642eda2229 BUG#21842 (Cluster fails to replicate to innodb or myisam with err 134
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.
2007-08-26 14:31:10 +02:00
unknown
7a9b90ce09 Merge mysql_cab_desk.:C:/source/c++/mysql-5.1-new-rpl
into  mysql_cab_desk.:C:/source/c++/mysql-5.1_BUG_22086


sql/field.cc:
  Auto merged
sql/field.h:
  Auto merged
sql/log_event.cc:
  Auto merged
sql/rpl_utility.cc:
  Auto merged
sql/rpl_utility.h:
  Auto merged
2007-08-10 14:58:46 -04:00
unknown
9ad300d50d BUG#22086 : Extra Slave Col: Char(5) on slave and Char(10) on master cause mysqld crash
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.
2007-08-10 12:48:01 -04:00
unknown
9eea112d9d Merge mysql_cab_desk.:C:/source/c++/mysql-5.1
into  mysql_cab_desk.:C:/source/c++/mysql-5.1-new-rpl-merge


mysql-test/lib/mtr_report.pl:
  Auto merged
mysql-test/t/disabled.def:
  Auto merged
sql/field.cc:
  Auto merged
sql/field.h:
  Auto merged
sql/log_event.cc:
  Auto merged
mysql-test/suite/rpl/r/rpl_row_create_table.result:
  Merge with 5.1 main.
2007-08-02 15:27:47 -04:00
unknown
8e1ec7ab5e merge of the fix for bug 17417 5.0-opt->5.1-opt 2007-07-31 14:58:04 +03:00
unknown
d605bc5608 WL#3915 : (NDB) master's cols > slave
Corrective patch to fix test failures in pushbuild and add assertions
to help debug rpl_extraColmaster test failures.


mysql-test/extra/rpl_tests/rpl_row_tabledefs.test:
  WL#3915 : (NDB) master's cols > slave
  
  Change test to omit the port numbers in the result file.
mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result:
  WL#3915 : (NDB) master's cols > slave
  
  Corrected result file.
mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result:
  WL#3915 : (NDB) master's cols > slave
  
  Corrected result file.
sql/rpl_utility.cc:
  WL#3915 : (NDB) master's cols > slave
  
  Added assertions to assist in debugging.
2007-07-30 12:55:26 -04:00
unknown
e5fd6b3c71 (Pushing for Andrei)
Merge magare.gmz:/home/kgeorge/mysql/work/B27417-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/work/B27417-5.1-opt


mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
  Auto merged
sql/ha_ndbcluster.cc:
  Auto merged
sql/handler.cc:
  Auto merged
sql/handler.h:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_table.cc:
  Auto merged
mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
  merge of bug 27471 from 5.0-opt to 5.1-opt
sql/log.cc:
  merge of bug 27471 from 5.0-opt to 5.1-opt
sql/set_var.cc:
  merge of bug 27471 from 5.0-opt to 5.1-opt
sql/sp_head.cc:
  merge of bug 27471 from 5.0-opt to 5.1-opt
sql/sql_delete.cc:
  merge of bug 27471 from 5.0-opt to 5.1-opt
sql/sql_insert.cc:
  merge of bug 27471 from 5.0-opt to 5.1-opt
sql/sql_load.cc:
  merge of bug 27471 from 5.0-opt to 5.1-opt
sql/sql_parse.cc:
  merge of bug 27471 from 5.0-opt to 5.1-opt
sql/sql_update.cc:
  merge of bug 27471 from 5.0-opt to 5.1-opt
2007-07-30 19:02:21 +03:00
unknown
aee08c3d06 WL#3915 : (NDB) master's cols > slave
Changed test to enable easier debugging. 


mysql-test/extra/rpl_tests/rpl_extraMaster_Col.test:
  WL#3915 : (NDB) master's cols > slave
  
  Changes to test in order to aide debugging.
mysql-test/suite/rpl/r/rpl_extraColmaster_innodb.result:
  WL#3915 : (NDB) master's cols > slave
  
  New result file for test changes.
mysql-test/suite/rpl/r/rpl_extraColmaster_myisam.result:
  WL#3915 : (NDB) master's cols > slave
  
  New result file for test changes.
mysql-test/suite/rpl/r/rpl_row_extraColmaster_ndb.result:
  WL#3915 : (NDB) master's cols > slave
  
  New result file for test changes.
2007-07-30 11:59:05 -04:00
unknown
f5ef5cb0af WL#3228 (RBR using different table defs on slave/master):
Fixing tests and results to work when replicating to fewer columns on
slave than on master. One test that previously should fail, now works,
and some log positions have changed as a result of adding metadata to
the events.


mysql-test/extra/rpl_tests/rpl_row_tabledefs.test:
  Replication to fewer columns on slave now works.
mysql-test/include/wait_for_slave_to_stop.inc:
  Adding subsitutions for SHOW SLAVE STATUS
mysql-test/suite/binlog/r/binlog_row_binlog.result:
  Result change.
mysql-test/suite/rpl/r/rpl_rbr_to_sbr.result:
  Result change.
mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result:
  Result change.
mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result:
  Result change.
mysql-test/suite/rpl/r/rpl_slave_skip.result:
  Result change.
mysql-test/suite/rpl/t/rpl_skip_error-slave.opt:
  Error number changed [!]
2007-07-30 13:32:15 +02:00
unknown
d4671354f1 WL#3228 (NDB) : RBR using different table defs on slave/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
2007-07-29 18:10:42 -04:00
unknown
d47763406d fixing the 5.1-opt merge of the fix for bug 29571:
cannot check the statments in the binlog for row based 
replication.
2007-07-27 17:29:48 +03:00
unknown
13c679124f 5.0-opt -> 5.1-opt merge of the test case for bug 29571:
- reset the logs before and after the test.
 - cleanup from the previous tests : use the correct schema.


mysql-test/extra/rpl_tests/rpl_insert_delayed.test:
  5.0-opt -> 5.1-opt merge of the test case for bug 29571.
mysql-test/suite/rpl/r/rpl_stm_insert_delayed.result:
  5.0-opt -> 5.1-opt merge of the test case for bug 29571.
2007-07-27 14:28:36 +03:00
unknown
30408a12d8 Merge gleb.loc:/home/uchum/work/bk/5.0-opt
into  gleb.loc:/home/uchum/work/bk/5.1-opt


sql/sql_insert.cc:
  Auto merged
BitKeeper/deleted/.del-bdb.result:
  Auto merged
BitKeeper/deleted/.del-ha_berkeley.cc:
  Auto merged
BitKeeper/deleted/.del-rpl_insert_delayed.result:
  Auto merged
mysql-test/extra/rpl_tests/rpl_insert_delayed.test:
  Auto merged
sql/sql_select.cc:
  Merge with 5.0-opt.
sql/table.cc:
  Merge with 5.0-opt.
2007-07-27 13:38:11 +05:00
unknown
ef9738fe92 Merge dl145h.mysql.com:/data0/mkindahl/mysql-5.1-main
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
2007-07-25 15:40:43 +02:00
unknown
568eccb513 Merge gleb.loc:/home/uchum/work/bk/5.1
into  gleb.loc:/home/uchum/work/bk/5.1-opt


mysql-test/t/disabled.def:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_insert.cc:
  SCCS merged
tests/mysql_client_test.c:
  SCCS merged
2007-07-20 04:21:46 +05:00
unknown
42886677ca Many files:
Added new test case for dropping column on the end of master table


mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test:
  Added new test case for dropping column on the end of master table
mysql-test/r/rpl_extraCol_innodb.result:
  Added new test case for dropping column on the end of master table
mysql-test/r/rpl_extraCol_myisam.result:
  Added new test case for dropping column on the end of master table
mysql-test/r/rpl_ndb_extraCol.result:
  Added new test case for dropping column on the end of master table
2007-07-17 15:49:07 -05:00
unknown
1d0749b858 Merge olga.mysql.com:/home/igor/mysql-5.1-rpl
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.1-opt-merge


mysql-test/suite/binlog/r/binlog_row_ctype_cp932.result:
  Auto merged
mysql-test/suite/binlog/r/binlog_stm_ctype_cp932.result:
  Auto merged
mysql-test/t/disabled.def:
  SCCS merged
2007-07-13 23:54:41 -07:00
unknown
b9c18aead4 Bug#19259 rpl_ndb_dd_partitions failed on Solaris
Actually, this testcase will fail generally on all testing platforms.
The bugs come from the inconsistent bitmap between rpl master and slave.

In log_event.cc, the n_bits of m_cols and m_cols_ai are intialized with octal-ceiling 
m_width, in fact, their n_bits should be equal to m_width.
Wrong n_bits will cause bitmap_bits_set() get incorrect value in unpack_row()
in rpl_record.cc, 
then an assertion in unpack_row() will fail and crash sql thread.
  DBUG_ASSERT(null_ptr == row_data + master_null_byte_count);

Meanwhile, because of binlog_prepare_pending_rows_event() changed with correct
m_cols, some results of specific testcases should be updated:
binlog_multi_engine.test
ndb_binlog_multi.test
rpl_ndb_dd_partitions.test
rpl_ndb_log.test
rpl_truncate_7ndb.test
rpl_truncate_7ndb_2.test

In addition, to ensure rows replication correct between master and slave after the patch, 
two 'select * from t1' are added in extra/rpl_tests/rpl_log.test, and some testcases include 
rpl_log.test, therefore, the results of these testcases should be updated likewise:
rpl_stm_log.test
rpl_row_log.test
rpl_ndb_log.test
rpl_row_log_innodb.test

Totally, results of nine testcases are updated.


include/my_bitmap.h:
  add declaration for create_last_word_mask(), since we need to use it in log_event.cc
mysql-test/extra/rpl_tests/rpl_log.test:
  add 'select * from t1' both on master and slave to ensure the replication consistent after patched
mysql-test/r/binlog_multi_engine.result:
  update result
  
  the following is commented by Andrei, 
  The differences can be explained.
  Look at
  lines of THD::binlog_prepare_pending_rows_event
  
    if (!pending)
         ...
        !bitmap_cmp(pending->get_cols(), cols))
  
  The row event disappears because after correcting master side Write_rows_log_event's m_col bitmap initialization, 
  this event has the same m_cols as the preceding one and thereafter they got glued into one bigger size event. 
  This is the correct behaviour now.
mysql-test/r/ndb_binlog_multi.result:
  update result
  same reason with binlog_multi_engine for Write_rows_log_event
mysql-test/r/rpl_ndb_dd_partitions.result:
  update result,
  reasons:
  1. tablespace description format changed
  2. hex(b1) from 1 to 0 because there is a update sentence in include/rpl_multi_engine3.inc
  UPDATE t1 SET b1 = 0, t="2006-02-22" WHERE id = 412;
mysql-test/r/rpl_ndb_log.result:
  update result
  Write_rows event disapper for same reason with binlog_multi_engine ;
  In addition, because add new select in extra/rpl_testsrpl_log.test, 
  corresponding new results are accompanying.
mysql-test/r/rpl_row_log.result:
  because add new select in extra/rpl_testsrpl_log.test, 
  corresponding new results are accompanying.
mysql-test/r/rpl_row_log_innodb.result:
  because add new select in extra/rpl_testsrpl_log.test, 
  corresponding new results are accompanying.
mysql-test/r/rpl_stm_log.result:
  because add new select in extra/rpl_testsrpl_log.test, 
  corresponding new results are accompanying.
mysql-test/r/rpl_truncate_7ndb.result:
  update result
  same reason with binlog_multi_engine for Write_rows_log_event
mysql-test/r/rpl_truncate_7ndb_2.result:
  update result
  same reason with binlog_multi_engine for Write_rows_log_event
  
  And for the change
  -master-bin.000001  4   Format_desc  1   102 Server ver: SERVER_VERSION, Binlog ver: 4
  +master-bin.000001  4   Format_desc  1   106 Server ver: SERVER_VERSION, Binlog ver
  
  It's  okay as FormatDescription event matured for 4 bytes since the last time the results had been recorded.
mysql-test/t/disabled.def:
  resume this test case
sql/log_event.cc:
  initialize m_cols' n_bits with m_width instead of octal-round(m_width);
  initialize m_cols_ai' n_bits with m_width instead of octal-round(m_width);
  after memcpy(), call create_last_word_mask() to clear extra bits in bitmap to ensure safety
mysql-test/t/rpl_ndb_dd_partitions-master.opt:
  add --new=true passed to mysqld
mysql-test/t/rpl_ndb_dd_partitions-slave.opt:
  add --new=true passed to mysqld
2007-07-12 15:19:29 +08:00
unknown
055b87b343 Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.1-maint
into  mysql.com:/home/tnurnberg/22540/51-22540


sql/log.cc:
  Auto merged
2007-07-10 18:38:14 +02:00
unknown
de904ce6e4 Merge mysql.com:/home/tnurnberg/22540/50-22540
into  mysql.com:/home/tnurnberg/22540/51-22540


mysql-test/extra/binlog_tests/binlog.test:
  manual merge
mysql-test/suite/binlog/r/binlog_stm_binlog.result:
  manual merge
sql/log.cc:
  manual merge
2007-07-10 18:21:06 +02:00
unknown
df0d80a31b Merge sita.local:/Users/tsmith/m/bk/51
into  sita.local:/Users/tsmith/m/bk/maint/51

This merge requires a post-merge fix to remove rpl_udf from
suite/rpl/t/disabled.def.


mysql-test/lib/mtr_report.pl:
  Auto merged
mysql-test/r/show_check.result:
  Auto merged
mysql-test/suite/ndb/r/ndb_dd_basic.result:
  Auto merged
mysql-test/suite/ndb/r/ndb_dd_ddl.result:
  Auto merged
mysql-test/suite/ndb/r/ndb_gis.result:
  Auto merged
mysql-test/suite/ndb/r/ndb_row_format.result:
  Auto merged
mysql-test/suite/ndb/r/ndb_single_user.result:
  Auto merged
mysql-test/suite/ndb/t/ndb_single_user.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/r/rpl_incident.result:
  Auto merged
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/suite/rpl/r/rpl_sp.result:
  Auto merged
mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result:
  Auto merged
sql/field.cc:
  Auto merged
sql/field.h:
  Auto merged
sql/log.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_show.cc:
  Auto merged
storage/csv/ha_tina.cc:
  Auto merged
storage/innobase/handler/ha_innodb.cc:
  Auto merged
mysql-test/r/csv.result:
  Manual merge
mysql-test/t/csv.test:
  Manual merge
mysql-test/t/disabled.def:
  Manual merge
2007-07-09 03:27:03 -06:00
unknown
09ee3a5ae1 Merge anubis.xiphis.org:/usr/home/antony/work/mysql-5.1-engines
into  anubis.xiphis.org:/usr/home/antony/work/mysql-5.1-engines.merge


include/my_base.h:
  Auto merged
mysql-test/lib/mtr_report.pl:
  Auto merged
mysql-test/r/events_bugs.result:
  Auto merged
mysql-test/r/rpl_sp.result:
  Auto merged
mysql-test/r/show_check.result:
  Auto merged
mysql-test/r/sp.result:
  Auto merged
mysql-test/t/disabled.def:
  Auto merged
mysql-test/t/ndb_single_user.test:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/share/errmsg.txt:
  Auto merged
sql/sql_partition.cc:
  Auto merged
2007-07-06 09:03:50 -07:00
unknown
db8deb537f Merge mysql.com:/home/bar/mysql-work/mysql-5.0-rpl
into  mysql.com:/home/bar/mysql-work/mysql-5.1-new-rpl


strings/ctype-cp932.c:
  Auto merged
strings/ctype-utf8.c:
  Auto merged
mysql-test/extra/binlog_tests/ctype_cp932.test:
  Auto merged
mysql-test/r/binlog_stm_ctype_cp932.result:
  Auto merged
2007-07-05 15:00:36 +05:00
unknown
9e14ae9472 Merge maint1.mysql.com:/data/localhome/tsmith/bk/51
into  maint1.mysql.com:/data/localhome/tsmith/bk/maint/51


client/mysqldump.c:
  Auto merged
mysql-test/lib/mtr_cases.pl:
  Auto merged
mysql-test/lib/mtr_report.pl:
  Auto merged
mysql-test/r/mysqldump.result:
  Auto merged
mysql-test/suite/binlog/r/binlog_multi_engine.result:
  Auto merged
mysql-test/suite/binlog/t/binlog_multi_engine.test:
  Auto merged
mysql-test/suite/ndb/r/ndb_read_multi_range.result:
  Auto merged
mysql-test/suite/ndb/r/ndb_sp.result:
  Auto merged
mysql-test/suite/ndb/r/ndb_trigger.result:
  Auto merged
mysql-test/suite/ndb/r/ps_7ndb.result:
  Auto merged
mysql-test/suite/ndb/t/loaddata_autocom_ndb.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_alter_table.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_alter_table2.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_alter_table3.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_autodiscover.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_autodiscover2.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_autodiscover3.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_basic.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_binlog_ddl_multi.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_bitfield.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_blob.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_blob_partition.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_cache.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_cache2.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_cache_multi.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_cache_multi2.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_charset.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_condition_pushdown.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_config.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_config2.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_cursor.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_database.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_dd_alter.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_dd_backuprestore.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_dd_basic.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_dd_ddl.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_dd_disk2memory.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_dd_dump.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_dd_sql_features.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_gis.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_index.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_index_ordered.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_index_unique.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_insert.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_limit.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_loaddatalocal.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_lock.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_minmax.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_multi.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_partition_error.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_partition_key.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_partition_list.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_partition_range.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_read_multi_range.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_rename.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_replace.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_restore.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_restore_partition.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_restore_print.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_row_format.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_single_user.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_sp.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_subquery.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_temporary.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_transaction.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_trigger.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_truncate.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_types.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_update.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_view.test:
  Auto merged
mysql-test/suite/ndb/t/ndbapi.test:
  Auto merged
mysql-test/suite/ndb/t/ps_7ndb.test:
  Auto merged
mysql-test/suite/ndb/t/strict_autoinc_5ndb.test:
  Auto merged
mysql-test/suite/rpl/r/rpl_events.result:
  Auto merged
mysql-test/suite/rpl/r/rpl_replicate_do.result:
  Auto merged
mysql-test/suite/rpl/r/rpl_row_UUID.result:
  Auto merged
mysql-test/suite/rpl/r/rpl_sp.result:
  Auto merged
mysql-test/suite/rpl/r/rpl_switch_stm_row_mixed.result:
  Auto merged
mysql-test/suite/rpl/r/rpl_trigger.result:
  Auto merged
mysql-test/suite/rpl/r/rpl_view.result:
  Auto merged
mysql-test/suite/rpl_ndb/r/rpl_ndb_UUID.result:
  Auto merged
mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_advance.result:
  Auto merged
mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_commit_afterflush.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_advance.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb_trans.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb-master.opt:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb.test:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/Makefile.am:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sql_class.h:
  Auto merged
mysql-test/t/disabled.def:
  manual merge
  (Will need to follow up with moving a few test cases around post-merge)
2007-07-04 22:38:53 +02:00
unknown
1063bf228a Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB
minor fixes to appease pushbuild.
---
Merge sin.intern.azundris.com:/home/tnurnberg/22540/50-22540
into  sin.intern.azundris.com:/home/tnurnberg/22540/51-22540


mysql-test/extra/binlog_tests/binlog.test:
  Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB
  
  make test portable so it will work on servers with
  funny names.
mysql-test/suite/binlog/r/binlog_row_binlog.result:
  Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB
  
  make test portable so it will work on servers with
  funny names.
mysql-test/suite/binlog/r/binlog_stm_binlog.result:
  Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB
  
  make test portable so it will work on servers with
  funny names.
2007-07-02 07:34:42 +02:00
unknown
1cd1f7d06f Post.merge fixes
Fixed warnings
Fixed error numbers


mysql-test/extra/rpl_tests/rpl_loaddata.test:
  Fixed warnings
mysql-test/r/ndb_single_user.result:
  Post-merge fixes
  Changed error numbers
mysql-test/t/bigint.test:
  Fixed warnings
mysql-test/t/ndb_single_user.test:
  Post-merge fixes
  Changed error numbers
2007-07-01 11:56:01 +02:00
unknown
fc17829be8 Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB
previous correction didn't. make sure "tail" is fixed up
when filling cache several times; rework formulae.
---
Merge sin.intern.azundris.com:/home/tnurnberg/22540/50-22540
into  sin.intern.azundris.com:/home/tnurnberg/22540/51-22540


mysql-test/extra/binlog_tests/binlog.test:
  Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB
  
  show that fix for absolute end_log_pos in binlog also
  works when cache is read several times and headers are
  split across that boundary
  
  show that end_log_pos in SHOW BINLOG EVENTS is correct even in transactions.
  show that SHOW MASTER STATUS returns correct values while in transactions
  (so that mysqldump --master-data will work correctly).
  also remove bdb dependency.
mysql-test/r/binlog_row_binlog.result:
  Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB
  
  show that fix for absolute end_log_pos in binlog also
  works when cache is read several times and headers are
  split across that boundary
  
  show that end_log_pos in SHOW BINLOG EVENTS is correct even in transactions.
  show that SHOW MASTER STATUS returns correct values while in transactions
  (so that mysqldump --master-data will work correctly).
  also remove bdb dependency.
mysql-test/r/binlog_stm_binlog.result:
  Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB
  
  show that fix for absolute end_log_pos in binlog also
  works when cache is read several times and headers are
  split across that boundary
  
  show that end_log_pos in SHOW BINLOG EVENTS is correct even in transactions.
  show that SHOW MASTER STATUS returns correct values while in transactions
  (so that mysqldump --master-data will work correctly).
  also remove bdb dependency.
mysql-test/r/rpl_row_create_table.result:
  Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB
  
  expect corrent end_log_pos in binlog
sql/log.cc:
  Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB
  
  previous correction didn't. make sure "tail" is fixed up
  when filling cache several times; rework formulae.
2007-06-30 03:32:33 +02:00
unknown
575bb5add2 Merge poseidon.mysql.com:/home/tomas/mysql-5.1-new-ndb
into  poseidon.mysql.com:/home/tomas/mysql-5.1-new-rpl


mysql-test/r/rpl_ndb_stm_innodb.result:
  Auto merged
mysql-test/t/rpl_ndb_stm_innodb.test:
  Auto merged
storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
  Auto merged
storage/ndb/test/run-test/daily-basic-tests.txt:
  Auto merged
2007-06-28 07:08:37 +02:00