(output was not repeatable accross machines).
storage/maria/ma_check.c:
comment
storage/maria/ma_test_recovery.expected:
output update
storage/maria/ma_test_recovery:
* data_file_length/key_file_length differ between machines because
ma_test2 uses srand(). Removing them from output.
* there is no reason to copy/restore logs, test should work without
* applying log to recreate tables should not change log, testing this.
The patch for Bug 26379 (Combination of FLUSH TABLE and
REPAIR TABLE corrupts a MERGE table) fixed this bug too.
However it revealed a new bug that crashed the server.
Flushing a merge table at the moment when it is between open
and attach of children crashed the server.
The flushing thread wants to abort locks on the flushed table.
It calls ha_myisammrg::lock_count() and ha_myisammrg::store_lock()
on the TABLE object of the other thread.
Changed ha_myisammrg::lock_count() and ha_myisammrg::store_lock()
to accept non-attached children. ha_myisammrg::lock_count() returns
the number of MyISAM tables in the MERGE table so that the memory
allocation done by get_lock_data() is done correctly, even if the
children become attached before ha_myisammrg::store_lock() is
called. ha_myisammrg::store_lock() will not return any lock if the
children are not attached.
This is however a change in the handler interface. lock_count()
can now return a higher number than store_lock() stores locks.
This is more safe than the reverse implementation would be.
get_lock_data() in the SQL layer is adjusted accordingly. It sets
MYSQL_LOCK::lock_count based on the number of locks returned by
the handler::store_lock() calls, not based on the numbers returned
by the handler::lock_count() calls. The latter are only used for
allocation of memory now.
No test case. The test suite cannot reliably run FLUSH between
lock_count() and store_lock() of another thread. The bug report
contains a program that can repeat the problem with some
probability.
include/myisammrg.h:
Bug#30273 - merge tables: Can't lock file (errno: 155)
Added mutex to struct st_myrg_info (MYRG_INFO).
sql/handler.h:
Bug#30273 - merge tables: Can't lock file (errno: 155)
Extended comments for handler::lock_count() and
handler::store_lock().
sql/lock.cc:
Bug#30273 - merge tables: Can't lock file (errno: 155)
Changed get_lock_data() so that the final lock_count is taken
from the number of locks returned from handler::store_lock()
instead of from handler::lock_count().
sql/sql_base.cc:
Fixed a purecov comment. (unrelated to the rest of the changeset)
storage/myisammrg/ha_myisammrg.cc:
Bug#30273 - merge tables: Can't lock file (errno: 155)
Changed ha_myisammrg::lock_count() and ha_myisammrg::store_lock()
to accept non-attached children.
Protected ha_myisammrg::store_lock() by MYRG_INFO::mutex.
storage/myisammrg/myrg_close.c:
Bug#30273 - merge tables: Can't lock file (errno: 155)
Added MYRG_INFO::mutex destruction to myrg_parent_close().
storage/myisammrg/myrg_open.c:
Bug#30273 - merge tables: Can't lock file (errno: 155)
Added MYRG_INFO::mutex initialization to myrg_parent_open().
Protected myrg_attach_children() and myrg_detach_children()
by MYRG_INFO::mutex.
Fixed a purecov comment. (unrelated to the rest of the changeset)
into desktop.sanja.is.com.ua:/home/bell/mysql/bk/work-maria-logpurge
storage/maria/ma_checkpoint.c:
Auto merged
storage/maria/ma_loghandler.c:
Auto merged
storage/maria/ma_loghandler.h:
Auto merged
storage/maria/ma_recovery.c:
Auto merged
Added more checks.
storage/maria/ha_maria.cc:
Let control size to my_get_opts().
storage/maria/ma_loghandler.c:
Let control size to my_get_opts().
Removed unused function.
Assert to check log file size.
Additional compilation warnings.
storage/maria/ma_loghandler.h:
New log size bounds.
Removed unused function.
storage/maria/unittest/ma_test_loghandler-t.c:
Fixed test to confirm new log size bounds.
into ramayana.hindu.god:/home/tsmith/m/bk/maint/51
mysql-test/mysql-test-run.pl:
Auto merged
storage/innobase/buf/buf0buf.c:
Auto merged
storage/innobase/buf/buf0flu.c:
Auto merged
storage/innobase/buf/buf0lru.c:
Auto merged
storage/innobase/include/buf0buf.h:
Auto merged
storage/innobase/include/buf0buf.ic:
Auto merged
storage/innobase/include/sync0arr.h:
Auto merged
storage/innobase/include/sync0rw.h:
Auto merged
storage/innobase/include/sync0rw.ic:
Auto merged
storage/innobase/include/sync0sync.h:
Auto merged
storage/innobase/os/os0sync.c:
Auto merged
storage/innobase/sync/sync0arr.c:
Auto merged
storage/innobase/sync/sync0rw.c:
Auto merged
storage/innobase/sync/sync0sync.c:
Auto merged
into ramayana.hindu.god:/home/tsmith/m/bk/maint/50
innobase/buf/buf0buf.c:
use local (null merge)
innobase/buf/buf0flu.c:
use local (null merge)
innobase/buf/buf0lru.c:
use local (null merge)
innobase/include/buf0buf.h:
use local (null merge)
innobase/include/buf0buf.ic:
use local (null merge)
innobase/include/sync0arr.h:
Auto merged
innobase/include/sync0rw.h:
use local (null merge)
innobase/include/sync0rw.ic:
use local (null merge)
innobase/include/sync0sync.h:
use local
innobase/os/os0sync.c:
use local (null merge)
innobase/sync/sync0arr.c:
use local (null merge)
innobase/sync/sync0rw.c:
use local (null merge)
innobase/sync/sync0sync.c:
use local (null merge)
mysql-test/mysql-test-run.pl:
use local (null merge)
into ramayana.hindu.god:/home/tsmith/m/bk/maint/41
innobase/buf/buf0buf.c:
Auto merged
innobase/buf/buf0flu.c:
Auto merged
innobase/buf/buf0lru.c:
Auto merged
innobase/include/buf0buf.h:
Auto merged
innobase/include/buf0buf.ic:
Auto merged
innobase/include/sync0arr.h:
Auto merged
innobase/include/sync0rw.h:
Auto merged
innobase/include/sync0rw.ic:
Auto merged
innobase/include/sync0sync.h:
Auto merged
innobase/os/os0sync.c:
Auto merged
innobase/sync/sync0arr.c:
Auto merged
innobase/sync/sync0rw.c:
Auto merged
innobase/sync/sync0sync.c:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
fix for bug: if a crash happened right after writing a REDO like this:
REDO - UNDO - REDO*, then recovery would ignore the last REDO* (ok),
rollback: REDO - UNDO - REDO* - REDO - CLR, and a next recovery would
thus execute REDO* instead of skipping it again. Recovery now logs
LOGREC_INCOMPLETE_GROUP when it meets REDO* for the first time,
to draw a boundary and ensure it is always skipped. Tested by hand.
Note: ma_test_all fails "maria_chk: error: Key 1 - Found too many records"
not due to this patch (failed before).
BitKeeper/triggers/post-commit:
no truncation of the commit mail, or how to review patches?
mysql-test/include/maria_verify_recovery.inc:
let caller choose the statement used to crash (sometimes we
want the crash to happen at special places)
mysql-test/t/maria-recovery.test:
user of maria_verify_recovery.inc now specifies statement which the
script should use for crashing.
storage/maria/ma_bitmap.c:
it's easier to search for all places using functions from the bitmap
module (like in ma_blockrec.c) if those exported functions all start
with "_ma_bitmap": renaming some of them.
Assertion that when we read a bitmap page, overwriting bitmap->map,
we are not losing information (i.e. bitmap->changed is false).
storage/maria/ma_blockrec.c:
update to new names. Adding code (disabled, protected by a #ifdef)
that I use to test certain crash scenarios (more to come).
storage/maria/ma_blockrec.h:
update to new names
storage/maria/ma_checkpoint.c:
update to new names
storage/maria/ma_extra.c:
update to new names
storage/maria/ma_loghandler.c:
new LOGREC_INCOMPLETE_GROUP
storage/maria/ma_loghandler.h:
new LOGREC_INCOMPLETE_GROUP
storage/maria/ma_recovery.c:
When at the end of the REDO phase we have identified some transactions
with incomplete REDO groups (REDOs without an UNDO or CLR_END),
for each of them we log LOGREC_INCOMPLETE_GROUP. This way, the
upcoming UNDO phase can write more records for such transaction,
a future recovery won't pair the incomplete group with the
CLR_END (as there is LOGREC_INCOMPLETE_GROUP to draw a boundary).
Formatting change to improve readability of the "test-*" targets.
Makefile.am:
Formatting change to improve readability:
In multi-line actions, indent the continuation lines
so that the start of the next statement is better visible.
This affects only "test-*" targets.
into adventure.(none):/home/thek/Development/cpp/mysql-5.1-runtime
mysql-test/r/read_only.result:
Auto merged
sql/sql_parse.cc:
Auto merged
mysql-test/t/read_only.test:
Manual merge
mysql-test/r/read_only.result:
Removing non deterministic test results from test.
mysql-test/t/read_only.test:
Removing non deterministic test results from test.
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb-merge
mysql-test/extra/rpl_tests/rpl_extraMaster_Col.test:
Auto merged
mysql-test/suite/rpl_ndb/r/rpl_ndb_extraColMaster.result:
Auto merged
mysql-test/suite/rpl/r/rpl_extraColmaster_innodb.result:
manual merge
mysql-test/suite/rpl/r/rpl_extraColmaster_myisam.result:
manual merge
Unified printing of mutex addresses to make them easier to compare
mysys/thr_mutex.c:
Unified printing of mutex addresses to make them easier to compare
storage/maria/ma_dynrec.c:
Fixed indentation
storage/maria/ma_open.c:
Fixed bug in allocation of dynamic record buffer
into janus.mylan:/usr/home/serg/Abk/mysql-5.1
client/mysqldump.c:
Auto merged
mysql-test/r/innodb_mysql.result:
Auto merged
mysql-test/t/disabled.def:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_table.cc:
Auto merged
into pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.1-build
client/mysqldump.c:
Auto merged
mysql-test/r/innodb_mysql.result:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_table.cc:
Auto merged
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb-merge
mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/mysqld.cc:
Auto merged