Commit graph

88 commits

Author SHA1 Message Date
aelkin/elkin@koti.dsl.inet.fi
4b9b015457 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.
2007-11-02 14:00:38 +02:00
aelkin/elkin@koti.dsl.inet.fi
c1f751ba9b Merge aelkin@bk-internal.mysql.com:/home/bk/mysql-5.1-rpl
into  koti.dsl.inet.fi:/home/elkin/MySQL/TEAM/FIXES/5.1/bug30594-rpl.rpl_skip_error_is_nondeterministic
2007-10-25 19:28:38 +03:00
mats@kindahl-laptop.dnsalias.net
71bd1522e0 Merge kindahl-laptop.dnsalias.net:/home/bkroot/mysql-5.1-rpl
into  kindahl-laptop.dnsalias.net:/home/bk/b24860-mysql-5.1-rpl
2007-10-24 16:54:18 +02:00
mats@kindahl-laptop.dnsalias.net
b9de3ce2a9 BUG#31702 (Missing row on slave causes assertion failure under row-based
replication):

Incremental patch to enable idempotency support for update events again.
The final handling of errors will be done in BUG#31609, and until then
the handling of errors should be consistent between the different types
of changes.
2007-10-24 16:02:37 +02:00
aelkin/elkin@koti.dsl.inet.fi
271c98d067 Bug #30594 rpl.rpl_skip_error is nondeterministic
Non-determinism in the tests was due to results of SBR are different from those gained
with row binlog format.

Because tests effectively verify skipping only ER_DUP_ENTRY it is explicitly required
to run the test on in mixed and stmt binlog format.
ER_DUP_ENTRY is automatically ignored when happened in RBR because of implicit rule
favoring reentrant reading from binlog rule
which means that a Write_rows_log_event overwrites a slave's row
if the one has the same primary key.

If future we might have skipping error due to applying of row-based events.
The comments added saying a new file would be needed for that: rpl_row_skip_error or smth.
2007-10-22 21:45:21 +03:00
mats@kindahl-laptop.dnsalias.net
b65a9888c0 Post-merge fixes. 2007-10-22 10:32:35 +02:00
mats@kindahl-laptop.dnsalias.net
105a9c3e67 Merge kindahl-laptop.dnsalias.net:/home/bkroot/mysql-5.1-rpl
into  kindahl-laptop.dnsalias.net:/home/bk/b28618-mysql-5.1-rpl
2007-10-22 08:50:08 +02:00
mats@kindahl-laptop.dnsalias.net
012bccc09f BUG#24860 (Incorrect SLAVE_TRANSACTION_RETRIES code can result in slave stuck):
If a temporary error occured inside a group on an event that was not the first
event of the group, the slave could get stuck because the retry counter is reset
whenever an event was executed successfully.

This patch only reset the retry counter when an entire group has been successfully
executed, or failed with a non-transient error.
2007-10-20 20:16:12 +02:00
mats@kindahl-laptop.dnsalias.net
24ea15a24d Bug#31702 (Missing row on slave causes assertion failure under row-based replication):
When replicating an update pair (before image, after image) under row-based
replication, and the before image is not found on the slave, the after image
was not discared, and was hence read as a before image for the next row.
Eventually, this lead to an after image being read outside the block of rows
in the event, causing an assertion to fire.

This patch fixes this by reading the after image in the event that the row
was not found on the slave, adds some extra debug assertion to catch future
errors earlier, and also adds a few non-debug checks to prevent reading
outside the block of the event.
2007-10-20 18:19:55 +02:00
mats@kindahl-laptop.dnsalias.net
f2ba11c327 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.
2007-10-19 14:18:41 +02:00
skozlov/ksm@mysql.com/virtop.localdomain
253bb96e79 Fix for non-deterministic behavior of SELECTs and VIEWs 2007-10-16 23:19:39 +04:00
mats@kindahl-laptop.dnsalias.net
d32c1d616e Merge mkindahl@bk-internal.mysql.com:/home/bk/mysql-5.1-new-rpl
into  kindahl-laptop.dnsalias.net:/home/bkroot/mysql-5.1-rpl
2007-10-12 13:24:28 +02:00
mats@kindahl-laptop.dnsalias.net
d8adc641a0 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
2007-10-12 09:40:24 +02:00
mats@kindahl-laptop.dnsalias.net
c4298a3fb9 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.
2007-10-11 18:18:05 +02:00
lars/lthalmann@dl145h.mysql.com
b6553689fd Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.1-new-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
2007-10-01 11:25:32 +02:00
mats@kindahl-laptop.dnsalias.net
cd88c4dc8a Fixing bug in test in that a database was not dropped and was visible
in following tests.
2007-09-21 08:13:52 +02:00
mats@kindahl-laptop.dnsalias.net
8b5248a52b Merge kindahl-laptop.dnsalias.net:/home/bkroot/mysql-5.1-rpl
into  kindahl-laptop.dnsalias.net:/home/bk/b31076-mysql-5.1-rpl
2007-09-20 18:30:00 +02:00
mats@kindahl-laptop.dnsalias.net
c5622b424f BUG#31076 (Server crashes when start slave is issued):
Row-based replication crashes when replicating from pre-5.1.22 to 5.1.22
due to an uninitialized variable.
2007-09-20 16:31:05 +02:00
lars/lthalmann@dl145h.mysql.com
234e55623b Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.1-new-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
2007-09-17 12:38:22 +02:00
aelkin@dl145j.mysql.com
e9b287f27e Manual merge fixes/tests for bugs_28960,27417,23333. 2007-09-16 12:07:00 +02:00
aelkin@dl145j.mysql.com
1a0fea60a3 Merge dl145j.mysql.com:/tmp/andrei/mysql-5.0-rpl
into  dl145j.mysql.com:/tmp/andrei/5.1-merge
2007-09-15 21:25:56 +02:00
gshchepa@devsrv-b.mysql.com
2e26008c3e Many files:
Post-merge fix.
2007-09-15 07:39:58 +02:00
gshchepa@devsrv-b.mysql.com
ca15f7b190 Many files:
Merge with 5.0-opt.
2007-09-14 17:21:50 +02:00
gshchepa/uchum@gleb.loc
bd4fd0473c Merge gleb.loc:/home/uchum/work/bk/5.1
into  gleb.loc:/home/uchum/work/bk/5.1-opt
2007-09-13 00:44:50 +05:00
lars/lthalmann@dl145h.mysql.com
7d6f639d28 Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.1-new-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
2007-09-10 13:59:38 +02:00
malff@omega.weblab
1a13d76941 Test cleanup in rpl_binlog_grant: XID values are unpredictable 2007-09-06 12:06:22 -06:00
gshchepa/uchum@gleb.loc
1926819d5b Merge gleb.loc:/home/uchum/work/bk/5.1
into  gleb.loc:/home/uchum/work/bk/5.1-opt
2007-09-06 22:31:25 +05:00
malff/marcsql@weblab.(none)
0f58ed7e74 Merge weblab.(none):/home/marcsql/TREE/mysql-5.1-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.1-rt50-merge
2007-09-04 12:25:54 -06:00
anozdrin/alik@station.
c39d032da2 Rewrite test case for BUG 25843 to avoid SHOW BINLOG EVENTS
statement.
2007-09-03 15:13:34 +04:00
anozdrin/alik@ibm.opbmk
0261d2d9db Merge bk-internal.mysql.com:/home/bk/mysql-5.1-runtime
into  ibm.opbmk:/home/alik/Documents/MySQL/devel/5.1-rt-bug25843
2007-08-31 22:13:27 +04:00
anozdrin/alik@ibm.opbmk
d6f94b062c Fix for BUG#25843: changing default database between PREPARE and EXECUTE
of statement breaks binlog.

There were two problems discovered by this bug:

  1. Default (current) database is not fixed at the creation time.
     That leads to wrong output of DATABASE() function.

  2. Database attributes (@@collation_database) are not fixed at
     the creation time. That leads to wrong resultset.

Binlog breakage and Query Cache wrong output happened because of
the first problem.

The fix is to remember the current database at the PREPARE-time and
set it each time at EXECUTE.
2007-08-31 20:42:14 +04:00
tsmith@ramayana.hindu.god
ebe3894004 Merge ramayana.hindu.god:/home/tsmith/m/bk/51
into  ramayana.hindu.god:/home/tsmith/m/bk/maint/51
2007-08-30 14:54:19 -06:00
malff/marcsql@weblab.(none)
2482c59740 Merge weblab.(none):/home/marcsql/TREE/mysql-5.1-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.1-rt50-merge
2007-08-30 13:23:59 -06:00
brian@piggy.tangent.org
52ae4496c5 Added ORDER BY to udf select so that results are ordered. 2007-08-29 14:36:08 -07:00
davi@moksha.local
cb7486b4bf Bug#21975 Grant and revoke statements are non-transactional
Bug#21422 GRANT/REVOKE possible inside stored function, probably in a trigger
Bug#17244 GRANT gives strange error message when used in a stored function

GRANT/REVOKE statements are non-transactional (no explicit transaction
boundaries) in nature and hence are forbidden inside stored functions and
triggers, but they weren't being effectively forbidden. Furthermore, the
absence of implict commits makes changes made by GRANT/REVOKE statements to
not be rolled back.

The implemented fix is to issue a implicit commit with every GRANT/REVOKE
statement, effectively prohibiting these statements in stored functions
and triggers. The implicit commit also fixes the replication bug, and looks
like being in concert with the behavior of DDL and administrative statements.

Since this is a incompatible change, the following sentence should be
added to the Manual in the very end of the 3rd paragraph, subclause
13.4.3 "Statements That Cause an Implicit Commit": "Beginning with
MySQL 5.0.??, the GRANT and REVOKE statements cause an implicit commit."

Patch contributed by Vladimir Shebordaev
2007-08-29 16:59:38 -03:00
gkodinov/kgeorge@magare.gmz
25dfe20588 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.1-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B30244-5.1-opt
2007-08-29 16:32:26 +03:00
gkodinov/kgeorge@magare.gmz
56b6db1fd2 Bug #30244: row_count/found_rows does not replicate well
The functions ROW_COUNT/FOUND_ROWS are indeed not safe to be used in 
 statement based replication.
 Added code to declare them as such and switch the statement they're in
 to row based logging for mixed mode.
2007-08-29 14:54:32 +03:00
tsmith@ramayana.hindu.god
a009144d43 Merge ramayana.hindu.god:/home/tsmith/m/bk/51-target22-X
into  ramayana.hindu.god:/home/tsmith/m/bk/maint/51
2007-08-27 18:41:29 -06:00
skozlov/ksm@mysql.com/virtop.localdomain
e212c6a64a WL#3694 Replication of Invocation and Invoked Features Testing.
Bug#29020 Event results not correctly replicated to slave in RBR: partially.
2007-08-27 18:44:13 +04:00
gkodinov/kgeorge@magare.gmz
424e70353f re-push of Bug 29536 for 5.1.22: timestamp inconsistent in replication around 1970
MySQL replicates the time zone only when operations that involve
it are performed. This is controlled by a flag. But this flag
is set only on successful operation.
The flag must be set also when there is an error that involves
a timezone (so the master would replicate the error to the slaves).
2007-08-27 12:33:57 +03:00
skozlov/ksm@mysql.com/virtop.localdomain
7094223ea2 Bug#28744, Bug#29363 2007-08-23 17:33:06 +04:00
skozlov/ksm@mysql.com/virtop.localdomain
cb6375eda1 Bug#29363 2007-08-20 13:24:37 +04:00
lars/lthalmann@mysql.com/dl145k.mysql.com
aba3a3b49d Post-merge fix of error number 2007-08-16 17:26:32 +02:00
lars/lthalmann@dl145k.mysql.com
2c893c14da Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.1-new-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
2007-08-15 21:30:45 +02:00
skozlov/ksm@virtop.localdomain
866aa75617 Merge skozlov@bk-internal.mysql.com:/home/bk/mysql-5.1-new-rpl
into  mysql.com:/home/ksm/commits/mysql-5.1-new-rpl
2007-08-13 13:03:33 +04:00
cbell/Chuck@mysql_cab_desk.
08282643ab Merge mysql_cab_desk.:C:/source/c++/mysql-5.1-new-rpl
into  mysql_cab_desk.:C:/source/c++/mysql-5.1_BUG_22086
2007-08-10 14:58:46 -04:00
cbell/Chuck@mysql_cab_desk.
e8ea4b84c0 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.
2007-08-10 12:48:01 -04:00
gkodinov/kgeorge@magare.gmz
0ac8d08959 Bug 29536 : error message changed 5.0-opt -> 5.1-opt 2007-08-06 06:55:50 -07:00
gkodinov/kgeorge@magare.gmz
5af5954ab5 Merge magare.gmz:/home/kgeorge/mysql/work/B29536-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/work/B29536-5.1-opt
2007-08-06 06:34:21 -07:00
gkodinov/kgeorge@magare.gmz
e53af13d1e rpl_row_tabledefs_2myisam.result:
merged 5.1-main to 5.1-opt : error numbers changed.
Many files:
   merged 5.1-main to 5.1-opt : error numbers changed
rpl_extraCol_innodb.result:
  merged 5.1-main to 5.1-opt : error numbers changed
2007-08-05 14:02:33 +03:00