The fix for BUG#20103 "Escaping with backslash does not work as expected"
was implemented too greedy though in that it not only changes the behavior
of backslashes within strings but in general, so disabling command shortcuts
like \G or \C (which in turn leads to Bug #36391: "mysqlbinlog creates invalid charset
statements").
The fix allows the escaping with backslash to take place only inside a string,
thus enabling the execution of command shortcuts and presevering the fix for
BUG#20103.
- Make a rough filtering of the servers error log and write
all suspicious warnings to $error_log.warnings
The .warnings file is then examined more carefully by check_warnings.test
- This will speed things up, doing all of this in a server running
under valgrind takes far too long time.
- Add a "skip-ssl=1" to [mysqltest] section so that
mysqltest will not run with ssl turned on by default
but stil be able to turn it on when requested
- This avoids that check_warnings and check_testcase
connects to the server woth SSL turned on
Fixing pb failures caused by mtr invokes the test with --tmpdir to which
there are sensitive operations in the test
and setup_fake_relay_log.inc also needed --secure-file-priv for its own separate
directory.
Fixed with removing SELECT INTO OUTFILE and deploying --exec echo instead in the marco.
The test's opt file should contain --secure-file-priv=$MYSQL_TEST_DIR as the test
operations deal with files located in $MYSQL_TEST_DIR.
mysql-test/include/setup_fake_relay_log.inc:
Refining setup_fake_relay_log.inc to not use --secure-file-priv sensitive feature.
The latter should remain available for the test.
The test fails with timeout when applying diff on two tables.
In this test case, there can be a situation when the slave is not yet synced
with the master, thence the changes may not be on the slave at diff time.
This patch addresses this issue by synchronizing master and slave before the
diff takes place.
Overriding a default value of --secure-file-priv on pb.mtr to be $MYSQLTEST_VARDIR which
makes pb's mtr happy to execute the regression test for the bug.
mysql-test/suite/rpl/t/rpl_cross_version-master.opt:
satisfying pb's mtr that uses --vardir to shm.
Overriding a default value of --secure-file-priv on pb.mtr with a value allowable
the test to pass on pb.
mysql-test/suite/rpl/t/rpl_cross_version-master.opt:
Overriding a default value of --secure-file-priv with a value allowable the test to pass on pb.
- rewrite "check warnings" to be faster by not creating a full join
between error_log and suspicious_patterns while running REGEXP.
Instead add a column to error_log that will be set to 1 to indicate
a warning and run the 6 REGEXP's we have for suspicious lines as
6 separate full table scans.
- Remove the "suspicious_patterns" table from mtr db
- Use 'xykls37' as separator when loading the error log, that line should
hopefully never exist in a line that should be a warning
myisam_repair_threads > 1 causes crash
Problem: parallel repair (myisam_repair_threads > 1) of a myisam
table with two or more fulltext keys that use the same parser may
lead to a server crash. ALTER TABLE ENABLE KEYS is affected as well.
Fix: properly initialize fulltext structures for parallel repair.
Note: 1. there's no deterministic test case.
2. now we call parser->init() for each fulltext key
(not for each fulltext parser used).
storage/myisam/ft_parser.c:
Fix for bug #37756: enabling fulltext indexes with
myisam_repair_threads > 1 causes crash
In ftparser_call_initializer() we "group" parsers
and allocate parameters for each unique parser used.
In case of parallel repairing we may have a bunch
of parsers that use the only MI_INFO structure.
Each of these parsers must have its own parameter
structure in order not to interfere with others.
Moreover, the allocation is done without mutex
lock so parallel ftparser_call_initializer() calls
are unsafe.
Now we don't "group" the fulltext parsers.
Parameter allocation code moved to ftparser_alloc_param()
function which is called from mi_repair_parallel() as well
to allocate parameters for each parser used.
storage/myisam/ftdefs.h:
Fix for bug #37756: enabling fulltext indexes with
myisam_repair_threads > 1 causes crash
ftparser_alloc_param(MI_INFO *info) added.
storage/myisam/mi_check.c:
Fix for bug #37756: enabling fulltext indexes with
myisam_repair_threads > 1 causes crash
ftparser_alloc_param(info) called in case of parallel
repair to allocate fulltext parser parameters.
storage/myisam/mi_open.c:
Fix for bug #37756: enabling fulltext indexes with
myisam_repair_threads > 1 causes crash
set keyinfo->ftkey_nr and share->ftkeys.
- Clear test variables "comment" and "logfile" to make sure thay aren't
already set from previous run of same test
- Print warning if test result already set and set it anyway
- Rewrite "check testcase" to use LOAD DATA INFILE instead of 'load_file'
in order to speed up the reading of the servers error log.
mysql-test/include/check-warnings.test:
Use LOAD DATA to load the servers error log into error_log table and then
call 'check_warning' stored procedure to filter out any unexpected warnings
in trigger
Interchangeable calls to the mysql_change_user client function
and invocations of a trigger changing some user variable caused
a memory corruption and a crash.
The mysql_change_user API call forces TDH::cleanup() on a server
that frees user variable entries.
However it didn't reset Item_func_set_user_var::entry to NULL
because Item_func_set_user_var::cleanup() was not overloaded.
So, Item_func_set_user_var::entry held a pointer to freed memory,
that caused a crash.
The Item_func_set_user_var::cleanup method has been overloaded
to cleanup the Item_func_set_user_var::entry field.
mysql-test/r/user_var.result:
Added test case for bug #42188.
mysql-test/t/user_var.test:
Added test case for bug #42188.
sql/item_func.cc:
Bug#42188: crash and/or memory corruption with user variables
in trigger
The Item_func_set_user_var::cleanup method has been overloaded
to cleanup the Item_func_set_user_var::entry field.
sql/item_func.h:
Bug#42188: crash and/or memory corruption with user variables
in trigger
The Item_func_set_user_var::cleanup method has been overloaded
to cleanup the Item_func_set_user_var::entry field.
an additional changeset to remove printing a path name.
mysql-test/suite/rpl/r/rpl_cross_version.result:
removing a local exec env dependency
mysql-test/suite/rpl/t/rpl_cross_version.test:
refining a test to not have local exec env dependency.
conflicts:
Text conflict in client/mysqltest.cc
Text conflict in mysql-test/include/wait_until_connected_again.inc
Text conflict in mysql-test/lib/mtr_report.pm
Text conflict in mysql-test/mysql-test-run.pl
Text conflict in mysql-test/r/events_bugs.result
Text conflict in mysql-test/r/log_state.result
Text conflict in mysql-test/r/myisam_data_pointer_size_func.result
Text conflict in mysql-test/r/mysqlcheck.result
Text conflict in mysql-test/r/query_cache.result
Text conflict in mysql-test/r/status.result
Text conflict in mysql-test/suite/binlog/r/binlog_index.result
Text conflict in mysql-test/suite/binlog/r/binlog_innodb.result
Text conflict in mysql-test/suite/rpl/r/rpl_packet.result
Text conflict in mysql-test/suite/rpl/t/rpl_packet.test
Text conflict in mysql-test/t/disabled.def
Text conflict in mysql-test/t/events_bugs.test
Text conflict in mysql-test/t/log_state.test
Text conflict in mysql-test/t/myisam_data_pointer_size_func.test
Text conflict in mysql-test/t/mysqlcheck.test
Text conflict in mysql-test/t/query_cache.test
Text conflict in mysql-test/t/rpl_init_slave_func.test
Text conflict in mysql-test/t/status.test
It's a regression issue.
The reason of the bug appeared to be an error introduced into 5.1 source code.
A piece of code in Create_file_log_event::do_apply_event() did not have test
coverage which made make test and pb unaware.
Fixed with inverting the old value of the return value from
Create_file_log_event::do_apply_event().
The rpl test suite is extended with `rpl_cross_version' the file to hold
regression cases similar to the current.
mysql-test/suite/rpl/r/rpl_cross_version.result:
new results file
mysql-test/suite/rpl/t/rpl_cross_version-master.opt:
options to the server to be able to start replication to itself
mysql-test/suite/rpl/t/rpl_cross_version.test:
regression test for bug#31240.
sql/log_event.cc:
Correcting the return value from Create_file_log_event::do_apply_event()