mysql-test/r/rpl_ndb_basic.result:
Masking out error that is not generated by the test itself
mysql-test/t/rpl_ndb_basic.test:
Masking out error that is not generated by the test itself
include/config-win.h:
strnlen() presents in the build in library only starting from
Visual Studio 2005, identified by _MSC_VER 1400.
Previous versions of Visual Studio didn't have this
function, so they need the MySQL replacement function to be compiled.
Fixed test case rpl_incident.test (synchronize drop table, masked IO thread behaviour)
mysql-test/r/rpl_incident.result:
Masking master_log_file since IO thread is not synchronized in rpl_incident.test
mysql-test/t/rpl_incident.test:
Masking master_log_file since IO thread is not synchronized in rpl_incident.test
Correcting drop of table so it is synchronized
sql/log_event.cc:
Added extra parenthesis to remove compiler warning
The source of the problem was in my_vsnprintf() implementation.
strings/my_vsnprintf.c:
Fixing a problem in vsnprintf('%.*s', len, ptr)
When processing the above format, it's incorrect
to use strlen() because the string is not necessarily
a null terminated string.
Changing strlen() followed by set_if_smaller()
to strnlen() - which covers both cases - limiting
by '\0' and by "len".
test comments correction
mysql-test/r/binlog_killed.result:
changed
mysql-test/t/binlog_killed.test:
wrong comments (but important ones) left;
little refinement in result calc
combining the final result variable in such way that either option of the test execution
will yield zero.
mysql-test/r/binlog_killed.result:
results changed
mysql-test/t/binlog_killed.test:
there are two options for the test passing:
1. no rows inserted and the INSERT gets killed, then there is no INSERT query in binlog
2. all rows inserted, then INSERT gets to binlog and error_code is zero
tests refining, see binlog_killed.test file for details
mysql-test/r/binlog_killed.result:
results changed
mysql-test/t/binlog_killed.test:
killer conn waits for the first row to appear;
log-disabling kill query since prey's id is not deterministic;
correcting pattern to search in binlog for insert query;
merge with 5.0
sql/sql_class.cc:
THD::binlog_query receives killed status arg with default the same for Query_log_event
sql/sql_class.h:
relocation public binlog_query down to the point where killed_state is declared
The bug in that slave version of a table with unique field still was
able to execute INSERT query as replace whereas it's impossible on master.
The reason of this artifact is wrong usage of ndb->extra:s.
Fixed with resetting flags at do_after.
There is open issue with symmetrical resetting
table->file->extra(HA_EXTRA_NO_IGNORE_NO_KEY)
which i had to hand to bug#27077.
The test for the current bug was committed in a cset for bug#27320.
sql/log_event.cc:
fixing do_after_row_operation to reset the effect of the extra engine's
flags set at do_before;
comments on meaning of extra flags added;
execution of table->file->ha_end_bulk_insert() in do_after is not dependant on error;
Refining the tests since pb revealed the older version's fragality - the error from SF() due to killed
may be different on different env:s.
DBUG_ASSERT instead of assert.
mysql-test/r/binlog_killed.result:
new result file
mysql-test/t/binlog_killed.test:
regression for bug#22725 simplified. tests for bug27563, BUG#27565 made inactive.
sql/sql_insert.cc:
DBUG_ASSERT
into dsl-hkibras1-ff5dc300-70.dhcp.inet.fi:/tmp/merge_5.0
sql/log_event.cc:
Auto merged
sql/log_event.h:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_insert.cc:
merge with 5.0 bug#22725
sql/sql_update.cc:
merge with 5.0 bug#22725
The reason for the bug was that replaying of a query on slave could not be possible since its event
was recorded with the killed error. Due to the specific of handling INSERT, which per-row-while-loop is
unbreakable to killing, the query on transactional table should have not appeared in binlog unless
there was a call to a stored routine that got interrupted with killing (and then there must be an error
returned out of the loop).
The offered solution added the following rule for binlogging of INSERT that accounts the above
specifics:
For INSERT on transactional-table if the error was not set the only raised flag
is harmless and is ignored via masking out on time of creation of binlog event.
For both table types the combination of raised error and KILLED flag indicates that there
was potentially partial execution on master and consistency is under the question.
In that case the code continues to binlog an event with an appropriate killed error.
The fix relies on the specified behaviour of stored routine that must propagate the error
to the top level query handling if the thd->killed flag was raised in the routine execution.
The patch adds an arg with the default killed-status-unset value to Query_log_event::Query_log_event.
sql/log_event.cc:
killed_status as the value of thd->killed can be passed as an arg to the constructor.
if the value is different from the default the arg is set to the current thd->killed value.
A caller might need to masquerade thd->killed with THD::NOT_KILLED.
So far only mysql_insert() uses such explicit way to tell the constructor about killing status.
sql/log_event.h:
default arg to the constructor with meaning of killed status of the query.
if the arg is not explicitly provided the status of thd->killed will be snapshot
inside of the constuctor, which is potentially incorrect (see bug#27571)
sql/sql_class.h:
extending killed_state with no-state member.
sql/sql_insert.cc:
ignore the KILLED flag incl KILL_BAD_DATA when the INSERT query event
is created without an `error';
sql/sql_update.cc:
Suggestion how to fix bug#27571 as comments.
mysql-test/r/binlog_killed.result:
new result file
mysql-test/t/binlog_killed.test:
regression tests also apply for bug27563, BUG#27565
into mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/t/disabled.def:
Auto merged
sql/sql_load.cc:
Auto merged
into mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/t/disabled.def:
Auto merged
mysql-test/t/rpl_row_mysqlbinlog.test:
Auto merged
sql/sql_load.cc:
Auto merged
BitKeeper/deleted/.del-.del-rpl_critical_errors.result:
Delete: BitKeeper/deleted/.del-rpl_critical_errors.result
into mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/t/disabled.def:
Auto merged
sql/sql_load.cc:
Auto merged
into pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.1-build
configure.in:
Auto merged
include/my_global.h:
Auto merged
sql/item_func.cc:
Auto merged
strings/strtod.c:
Auto merged
into pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.1-build
configure.in:
Auto merged
include/my_global.h:
Auto merged
sql/item_func.cc:
Auto merged
strings/strtod.c:
Auto merged
into pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0-build
configure.in:
Auto merged
include/my_global.h:
Auto merged
sql/item_func.cc:
Auto merged
strings/strtod.c:
Auto merged
into mysql.com:/nfsdisk1/lars/bk/mysql-5.1-new-rpl
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/t/disabled.def:
Auto merged
sql/sql_load.cc:
Auto merged
storage/heap/hp_hash.c:
Auto merged
BitKeeper/deleted/.del-rpl_critical_errors.result:
Delete: mysql-test/r/rpl_critical_errors.result
mysql-test/r/rpl_loaddata.result:
Manual merge
mysql-test/t/rpl_loaddata.test:
Manual merge
As MySQL character set tests can print results in many character sets
(latin1, utf8-8, sjis, cp932 and others) - its output can be incompatible
with the current locale settings, which makes PERL confuse.
Fix: reset LC_ALL and LC_CTYPE to "C", which is compatible with
any character set.
mysql-test/mysql-test-run.pl:
Ignore current locale settings, because "mysqltest" output
can be not compatible with the locale.
into pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.1-build
configure.in:
Auto merged
include/my_global.h:
Auto merged
sql/item_func.cc:
Auto merged
BitKeeper/deleted/.del-CMakeLists.txt~13:
Auto merged
into mysql.com:/home/svoj/devel/mysql/merge/mysql-5.1-engines
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/t/disabled.def:
Auto merged
sql/handler.cc:
Auto merged
sql/sql_table.cc:
Auto merged
storage/myisam/ha_myisam.cc:
Auto merged
Problem: Memory overrun happened in attempts to generate
error messages (e.g. in case of incorrect XPath syntax).
Reason: set_if_bigger() was used instead of set_if_smaller().
Change: replacing wrong set_if_bigger() to set_if_smaller(),
and making minor additional code clean-ups.
mysql-test/r/xml.result:
Adding test cases for all pieces of code with
set_if_smaller() followed by my_printf_error().
mysql-test/t/xml.test:
Adding test cases for all pieces of code with
set_if_smaller() followed by my_printf_error().
sql/item_xmlfunc.cc:
- fixing incorrect set_if_bigger to set_if_smaller in two places
- getting read of unnesessary "char context[32]" variable and
using '%.*s' instead if '%s' in the error format.