Since my changes, rpl_log.test, whose result file depends on file_id, became
non-repeatable, i.e. file_id on slave in SHOW BINLOG EVENTS
changed depending on the order of tests (sometimes 1, sometimes 5).
Which is logical: as now the slave does not copy Create_file and Exec_load from
the relay log (i.e from the master's binlog) to the slave's binlog, but
instead lets mysql_load() do the logging, the file_id is now the one whic
was used on the slave. Before it was the one which was used on the master,
and by chance the master was always restarted for this test because there's
a -master.opt file, so file_id on the master is always 1. But now file_id is
from the slave so we need to restart the slave. That's why I add an (empty)
-slave.opt file. I could have used 'server_stop/start slave', but this
would have required the manager, so most of the time mysql-test-run silently
skip the test which makes it useless. And I want this test to be run !
mysql-test/r/rpl_loaddata.result:
Orig_log_pos is like Pos since Dmitri's good change for BUG#1086
mysql-test/r/rpl_log.result:
Orig_log_pos is like Pos now, because Exec_load events are not directly copied
by the slave from the relay log to the slave's binary log (these events
are written by mysql_load() now).
mysql-test/t/rpl_log.test:
A comment
"LOAD DATA INFILE is badly filtered by binlog-*-db rules".
There will probably be a second final one to merge Dmitri's changes
to rpl_log.result and mine.
2 new tests:
rpl_loaddata_rule_m : test of logging of LOAD DATA INFILE when the master has binlog-*-db rules,
rpl_loaddata_rule_s : test of logging of LOAD DATA INFILE when the slave has binlog-*-db rules and --log-slave-updates.
mysql-test/r/rpl_loaddata.result:
Test that logging of LOAD DATA INFILE is done on the slave
mysql-test/t/rpl_loaddata.test:
Test that logging of LOAD DATA is done on the slave
sql/log.cc:
debug info
sql/log_event.cc:
* Append_block, Exec_load and Delete_file now have a member 'db' like Create_file.
This member is filled by mysql_load(). It is used for filtering by binlog-*-db rules,
that's all. It's not written to the binlog, and so can't be read from the binlog.
In other words, that's temporary info which is stored in the event and lost when
it is written and deleted.
* Better error messages in Append_block et al. events.
* The slave now logs (log-slave-updates) the Create_file et al. events in mysql_load()
(they are not directly copied from the events in the relay log, because this
prevented filtering by binlog-*-db rules). Before, mysql_load() in the slave
did no logging, now it does the logging, as in any regular thread.
sql/log_event.h:
New member 'db' for Append_block et al. events.
sql/slave.cc:
Removed useless code. Why was it useless:
- CREATE_FILE_EVENT is not defined in 3.23. It appeared in 4.0.
- in queue_old_event(), which is called only if the master is 3.23, we had a
case CREATE_FILE_EVENT:
so this case can be removed.
- this case was the only caller of process_io_create_file() so this function
can be removed.
sql/sql_load.cc:
Pass the db to events, so that they can be well filtered.
sql/sql_repl.cc:
Pass the db to events so that they can be well filtered.
Set min value of max_allowed_packet to 1024
Fixed problem with UNION's without braces and SQL_CALC_FOUND_ROWS, LIMIT #,#
and ORDER BY...LIMIT
include/m_string.h:
Added memcpy_overlap() to avoid warnings when using valgrind on memcpy(A,A,...)
myisam/mi_create.c:
Fixed comment
myisam/mi_search.c:
Fix warning from valgrind
myisam/mi_write.c:
Indentation fix
mysql-test/mysql-test-run.sh:
Add options handled by general skip- option
mysql-test/r/packet.result:
Update results after change to mysqld (min max_allowed_packet length is now 1024)
mysql-test/r/union.result:
Added testing of UNION with SQL_CALC_FOUND_ROWS
mysql-test/t/packet.test:
Update results after change to mysqld (min max_allowed_packet length is now 1024)
mysql-test/t/union.test:
Added testing of UNION with SQL_CALC_FOUND_ROWS
sql/field.cc:
Fix to remove waarning from valgrind
sql/ha_innodb.cc:
Remove wrong include file
sql/item_cmpfunc.cc:
Safety fix to handle EOM conditions in IN
sql/item_sum.cc:
Fixed prototype for update_field() (argument was alwys 0)
sql/item_sum.h:
Fixed prototype for update_field() (argument was alwys 0)
sql/item_uniq.h:
Fixed prototype for update_field() (argument was alwys 0)
sql/log.cc:
Indentation fix
sql/mysqld.cc:
Set min value of max_allowed_packet to 1024 (to avoid it getting set to 0)
sql/net_serv.cc:
Indentation changes + trivial optimization
sql/sql_select.cc:
Fixed prototype for update_field() (argument was alwys 0)
sql/sql_union.cc:
Fixed problem with UNION's without braces and
- SQL_CALC_FOUND_ROWS
- LIMIT #,#
- ORDER BY ... LIMIT
Test case for the LEAST() bug in LEFT JOIN
mysql-test/t/func_test.test:
Test case for the LEAST() bug in LEFT JOIN
mysql-test/r/func_test.result:
Test case for the LEAST() bug in LEFT JOIN
Fix for a bug with LEAST() in WHERE clause
ha_innodb.cc:
Fix for a configure bug
multi_update.result, multi_update.test:
Fix for the update with NULL's in the result set
sql_update.cc:
Fix for the update with NULL's in the result set
Fix for the update with NULL's in the result set
Fix for the update with NULL's in the result set
sql/sql_update.cc:
Fix for the update with NULL's in the result set
Fix for the update with NULL's in the result set
Fix for the update with NULL's in the result set
mysql-test/t/multi_update.test:
Fix for the update with NULL's in the result set
mysql-test/r/multi_update.result:
Fix for the update with NULL's in the result set
sql/ha_innodb.cc:
Fix for a configure bug
sql/item_func.h:
Fix for a bug with LEAST() in WHERE clause
log-slave-updates since this causes unexpected values in
Exec_master_log_pos in A->B->C replication setup, synchronization
problems in master_pos_wait()...
Still this brokes some functionality in sql/repl_failsafe.cc
(but this file is not used now)
mysql-test/r/rpl_log.result:
SHOW BINLOG EVENTS for binlog on slave should give the same
Orig_log_pos and Pos values
sql/log_event.cc:
Do not propagate our master's log pos to our bin log
sql/repl_failsafe.cc:
Added comment about broken SHOW NEW MASTER
sql/slave.cc:
Do not propagate our master's log pos to our bin log
sql/sql_class.cc:
THD::log_pos is no longer needed
sql/sql_class.h:
THD::log_pos is no longer needed
sql/sql_parse.cc:
Added comment about broken SHOW NEW MASTER
Fix packet error when using wrong GRANT command
include/config-win.h:
Changed back to test for HAVE_SETFILEPOINTER instead of operating system
mysql-test/r/grant.result:
Extra test to catch wrong packet bug
mysql-test/t/grant.test:
Extra test to catch wrong packet bug
mysys/my_chsize.c:
Cleanup
sql/opt_range.cc:
Fix to recent BETWEEN patch
sql/sql_acl.cc:
Fix packet error when using wrong GRANT command
sql/sql_select.cc:
Cleanups
Added not critical out-of-memory check
Fix possible replication bug with LOAD DATA ... IGNORE LINES #
mysql-test/r/rpl_log.result:
Test of load data ... ignore # lines
mysql-test/t/rpl_log.test:
Test of load data ... ignore # lines
sql/log_event.cc:
Fix replication bug with LOAD DATA ... IGNORE LINES #
(Note that the code that is probably not executed in 4.0)
sql/sql_parse.cc:
Indentation fix
sql/sql_select.cc:
Remove wrong bug fix (all tests passes)
sql/sql_yacc.yy:
Indentation cleanup
removed unused field (now it is in variables)
mysql-test/r/query_cache.result:
rewritten test using loop
mysql-test/t/query_cache.test:
rewritten test using loop
sql/sql_class.h:
removed unused field (now it is in variables)
- Bug #985: "Between RESET SLAVE and START SLAVE, SHOW SLAVE STATUS is wrong."
Now RESET SLAVE puts correct info in mi->host etc. A new test rpl_reset_slave
for that.
- Bug #986: "CHANGE MASTER & START SLAVE do not reset error columns in SHOW
SLAVE STATUS". Now these reset the errors.
mysql-test/r/rpl_loaddata.result:
result update.
mysql-test/t/rpl_loaddata.test:
Test that RESET SLAVE, START SLAVE and CHANGE MASTER all reset
Last_slave_error and Last_slave_errno (columns of SHOW SLAVE STATUS).
We do it in this test because that's one of tests which have
an intentional query error on the slave.
sql/slave.cc:
As we need TWICE the code to copy command-line options (--master-host etc)
to mi (we already had it in init_master_info, but we also need it in RESET
SLAVE to fix bug#985), I make a function of this code.
And a function to reset Last_slave_error and Last_slave_errno (we need
it in CHANGE MASTER, RESET SLAVE, and at the start of the SQL thread).
sql/slave.h:
declarations for new functions.
sql/sql_repl.cc:
copy --master-host etc to mi in RESET SLAVE, so that SHOW SLAVE STATUS
shows correct information.
replicate-*-table rules which exclude 'mysql' tables
(e.g. replicate-wild-ignore-table=mysql.%).
This was already the behaviour for GRANT/REVOKE, I'm extending it to
SET PASSWORD because it seems very logical (the contrary seems illogical).
2 new tests:
- one to test if GRANT and SET PASSWORD are replicated
- one to test if they are not replicated if replicate-wild-ignore-table=mysql.%
The 2nd is also a testcase for BUG#980.
sql/sql_acl.cc:
Fix so that SET PASSWORD is not replicated by the slave if running with
replicate-*-table rules which exclude 'mysql' tables
(e.g. replicate-wild-ignore-table=mysql.%).
This was already the behaviour for GRANT/REVOKE, I'm extending it to
SET PASSWORD because it seems very logical (the contrary seems illogical).
mysql-test/r/query_cache.result:
test of many merged tales
mysql-test/t/query_cache.test:
test of many merged tales
sql/sql_cache.h:
query with merged tables can depend of more then 255 tables
so that it really tests replication of SET FOREIGN_KEY_CHECKS (previously
it used MyISAM).
mysql-test/r/rpl_insert_id.result:
result update
mysql-test/t/rpl_insert_id.test:
Make test use InnoDB, and added foreign keys to the table, so that it really tests
replication of FOREIGN_KEY_CHECKS.
--disable_warnings because 4.1 prints a warning when the table type
is not available.
myisam/mi_check.c:
Fixed memory overrun in _mi_put_key_in_record
myisam/mi_key.c:
Fixed unnecessary memory allocation
mysql-test/r/insert_select.result:
Added test case for memory corruption
mysql-test/t/insert_select.test:
Added test case for memory corruption
mysys/safemalloc.c:
Removed compiler warnings
sql/sql_acl.cc:
Fixed core dump when running with --debug
Changed is_open() to work as before.
Added back inited argument to LOG
mysql-test/r/rpl_flush_log_loop.result:
Fixed results (probably bug in previous rpatch)
sql/handler.cc:
Changed is_open() to work as before
sql/item_func.cc:
Changed is_open() to work as before
sql/log.cc:
Part revert of previous patch.
The reason for adding back 'inited' is that is that we can't be 100 % sure that init_pthread_objects() is called before mysqld dies (for example on windows)
I removed mutex lock handling in is_open() as the new code didn't have ANY affect except beeing slower.
Added back checking of is_open() to some functions as we don't want to do a mutex lock when we are not using logging.
Indentation/comment fixes
sql/log_event.cc:
Changed is_open() to work as before
sql/repl_failsafe.cc:
Changed is_open() to work as before
sql/sql_base.cc:
Changed is_open() to work as before
sql/sql_class.h:
Changed is_open() to work as before. Added back 'inited' variable
sql/sql_db.cc:
Changed is_open() to work as before
sql/sql_delete.cc:
Changed is_open() to work as before
sql/sql_insert.cc:
Changed is_open() to work as before
sql/sql_load.cc:
Changed is_open() to work as before
sql/sql_parse.cc:
Changed is_open() to work as before
sql/sql_rename.cc:
Changed is_open() to work as before
sql/sql_repl.cc:
Changed is_open() to work as before
sql/sql_table.cc:
Changed is_open() to work as before
sql/sql_update.cc:
Changed is_open() to work as before
port number can be different from 3306 when doing the release builds
with Do-compile, therefore it has to be replaced with the correct
value during the test run using the "--replace_result" function.
mysql-test/r/rpl_error_ignored_table.result:
- replaced hard-coded master port number with MASTER_PORT variable, since
the port number is different when running the test suite during the
release builds with "Do-compile".
mysql-test/t/rpl_error_ignored_table.test:
- replaced hard-coded master port number with MASTER_PORT variable, since
the port number is different when running the test suite during the
release builds with "Do-compile".
Removed double my_thread_end() which caused fatal error on windows if mysqld died on startup
myisam/mi_extra.c:
Fixed bug in ALTER TABLE ... DISABLE/ENABLE KEYS
mysql-test/r/alter_table.result:
Fixed bug in ALTER TABLE ... DISABLE/ENABLE KEYS
mysql-test/t/alter_table.test:
Test DISABLE/ENABLE KEY
sql/ha_myisam.cc:
Fixed bug in ALTER TABLE ... DISABLE/ENABLE KEYS
sql/mysqld.cc:
Removed double my_thread_end() which caused fatal error on windows if mysqld died on startup
sql/sql_table.cc:
Fixed bug in ALTER TABLE ... DISABLE/ENABLE KEYS
sql/table.cc:
Fixed bug in ALTER TABLE ... DISABLE/ENABLE KEYS
sql/table.h:
Fixed bug in ALTER TABLE ... DISABLE/ENABLE KEYS
BUG#797 "If query ignored on slave (replicate-ignore-table) the slave still checks if
the returned error (0) is the same as the one on the master, whereas it shouldn't
test this.
Plus a new test for BUG#797.
include/mysqld_error.h:
New error code (can be sent only to the slave thread, not to normal clients).
sql/log.cc:
removed comment from a previous debugging.
sql/log_event.cc:
ER_SLAVE_IGNORED_TABLE is an ignorable error.
sql/share/czech/errmsg.txt:
for BUG#797
sql/share/danish/errmsg.txt:
for BUG#797
sql/share/dutch/errmsg.txt:
for BUG#797
sql/share/english/errmsg.txt:
for BUG#797
sql/share/estonian/errmsg.txt:
for BUG#797
sql/share/french/errmsg.txt:
for BUG#797
sql/share/german/errmsg.txt:
for BUG#797
sql/share/greek/errmsg.txt:
for BUG#797
sql/share/hungarian/errmsg.txt:
for BUG#797
sql/share/italian/errmsg.txt:
for BUG#797
sql/share/japanese/errmsg.txt:
for BUG#797
sql/share/korean/errmsg.txt:
for BUG#797
sql/share/norwegian-ny/errmsg.txt:
for BUG#797
sql/share/norwegian/errmsg.txt:
for BUG#797
sql/share/polish/errmsg.txt:
for BUG#797
sql/share/portuguese/errmsg.txt:
for BUG#797
sql/share/romanian/errmsg.txt:
for BUG#797
sql/share/russian/errmsg.txt:
for BUG#797
sql/share/slovak/errmsg.txt:
for BUG#797
sql/share/spanish/errmsg.txt:
for BUG#797
sql/share/swedish/errmsg.txt:
for BUG#797
sql/share/ukrainian/errmsg.txt:
for BUG#797
sql/sql_parse.cc:
when in sql_parse in the slave thread we ignore the query because of replicate-do
and replicate-ignore options, we return a specific error to the slave thread,
so that it knows that the query has been ignored (which is different from a
successful query).
A small cleanup (test was done twice).