A big test was written and is committed, which found 3 bugs in total:
- ALTER TABLE PAGE_CHECKSUM=0 sometimes had no effect
- ALTER TABLE ENGINE=MARIA sometimes changed page checksumming in
the table
- SHOW CREATE TABLE and 'maria_chk -dv' disagreed on the presence
of page checksumming.
They are all fixed here. Side-effect is that SHOW CREATE TABLE now
always prints a PAGE_CHECKSUM clause for Maria tables.
mysql-test/mysql-test-run.pl:
allow calling maria_chk and maria_pack in tests
mysql-test/r/maria.result:
PAGE_CHECKSUM=0 is now always printed
mysql-test/t/create.test:
PAGE_CHECKSUM= is now always present in SHOW CREATE TABLE of Maria tables
mysql-test/t/disabled.def:
better bug number
sql/sql_table.cc:
If ALTER TABLE PAGE_CHECKSUM=#, it affects the engine's data (structure
of data pages) so a full table rebuild is needed. We already did
so for ROW_FORMAT=#, following same logic. This fixes disagreements
between SHOW CREATE TABLE and 'maria_chk -dv' regarding the
presence of page checksums after certain ALTER TABLE (as seen
with the attached testcase).
storage/maria/ha_maria.cc:
In ALTER TABLE PAGE_CHECKSUM=0, ha_maria::update_create_info() started
with create_info->page_checksum=HA_CHOICE_NO and wrongly set it
to the table's original setting, which is HA_CHOICE_YES if the table
had page checksums, in which case the ALTER left page checksum
in the table.
The fix for this bug is: only if create_info->page_checksum is
undefined (no clause in the ALTER TABLE, or we are in SHOW CREATE TABLE)
we may set HA_CHOICE_YES.
The second bug in this file was that the code left HA_CHOICE_UNDEF if
the table didn't have page checksums originally, leading ALTER TABLE
ENGINE=MARIA to change the table's page checksum to the value of
maria_page_checksum.
This is fixed by setting create_info->page_checksum to HA_CHOICE_NO
if UNDEF and table does not have page checksum.
The side-effect of this last fix, because ha_maria::update_create_info()
is also called by SHOW CREATE TABLE, is that:
SET GLOBAL maria_page_checksum=0;
CREATE TABLE t(a INT) ENGINE=MARIA;
SHOW CREATE TABLE t;
which used to not show a PAGE_CHECKSUM= clause, now shows PAGE_CHECKSUM=0.
I consider this side-effect good:
- clearer for users: it eliminates the differences between the
above and this:
SET GLOBAL maria_page_checksum=0;
CREATE TABLE t(a INT) ENGINE=MARIA PAGE_CHECKSUM=0;
SHOW CREATE TABLE t;
which already showed PAGE_CHECKSUM=0; difference which is not easy
to explain.
- if using mysqldump to copy from one server to another, it eliminates
the dependency on the value of maria_page_checksum being the same on
original server and new server.
mysql-test/r/maria-page-checksum.result:
Result. If you undo the code fixes and run the test, the new result
file will show bugs at:
error lineno 56 : expected PAGE_CHECKSUM=1, got Page checksums are not used
error lineno 73 : expected PAGE_CHECKSUM=0, got ) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
error lineno 110 : expected PAGE_CHECKSUM=1, got Page checksums are not used
error lineno 164 : expected PAGE_CHECKSUM=1, got Page checksums are not used
error lineno 181 : expected PAGE_CHECKSUM=0, got ) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
error lineno 218 : expected PAGE_CHECKSUM=1, got Page checksums are not used
error lineno 253 : expected PAGE_CHECKSUM=0, got ) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
error lineno 307 : expected PAGE_CHECKSUM=0, got ) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
error lineno 361 : expected PAGE_CHECKSUM=0, got ) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
error lineno 415 : expected PAGE_CHECKSUM=0, got ) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
error lineno 488 : expected PAGE_CHECKSUM=1, got Page checksums are not used
error lineno 505 : expected PAGE_CHECKSUM=0, got ) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
error lineno 542 : expected PAGE_CHECKSUM=1, got Page checksums are not used
error lineno 577 : expected PAGE_CHECKSUM=0, got ) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
error lineno 631 : expected PAGE_CHECKSUM=0, got ) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
(lineno is line number in the result file)
mysql-test/t/maria-page-checksum.test:
Test for the 3 bugs
Verbose SafeProcess.pm
mysql-test/mysql-test-run.pl:
Cleanup how script find ndb binaries and paths
Remove "executable_setup_failed" code, i.e either we have ndb support or we don't
Remove ndb_extra_test, not used by any test. If there is a need for that, just
create a new suite
mysql-test/lib/My/Find.pm:
Add possibility to use my_find_bin for a binary that is not required
mysql-test/lib/My/SafeProcess.pm:
Add verbose printous that can be turned on
Wait on process also if start_kill failed
Turn verbose on for windows
mysql-test/lib/My/SafeProcess/safe_kill_win.cc:
Extend sleep from 0 to 100
mysql-test/lib/mtr_cases.pm:
Remove ndb_extra
mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test:
Extra checks should be for Last_IO_Errno
Don't retry by default
Fixes for --embedded
mysql-test/lib/My/ConfigFactory.pm:
Don't copy log-error to [embedded] section
mysql-test/lib/mtr_cases.pm:
Auto skip all not_embedded when running with embedded
mysql-test/mysql-test-run.pl:
Only uise one file for current test
Don't retry by default
mysql-test/t/csv.test:
Change master-data -> mysqld.1/data
mysql-test/t/innodb.test:
Change master-data -> mysqld.1/data
mysql-test/t/ps_1general.test:
Change master-data -> mysqld.1/data
mysql-test/t/trigger.test:
Change master-data -> mysqld.1/data
Disable extra team trees.
Temporary fix for entry 34761 in the bugs DB.
(Patch by Magnus Svensson, 2008-02-22 17:40:14+01:00, msvensson@pilot.mysql.com +1 -0)
mysql-test/mysql-test-run.pl:
Disable extra team trees.
Temporary fix for entry 34761 in the bugs DB.
(Patch by Magnus Svensson, 2008-02-22 17:40:14+01:00, msvensson@pilot.mysql.com +1 -0)
Disable extra team trees.
Temporary fix for entry 34761 in the bugs DB.
(Patch by Magnus Svensson, 2008-02-22 17:40:14+01:00, msvensson@pilot.mysql.com +1 -0)
into trift2.:/MySQL/M51/push-5.1
configure.in:
Auto merged
extra/yassl/src/handshake.cpp:
Auto merged
extra/yassl/src/template_instnt.cpp:
Auto merged
extra/yassl/src/yassl_imp.cpp:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
sql/ha_ndbcluster_binlog.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_class.cc:
Auto merged
storage/ndb/src/common/util/OutputStream.cpp:
Auto merged
storage/ndb/src/kernel/blocks/dbtux/DbtuxScan.cpp:
Auto merged
storage/ndb/tools/waiter.cpp:
Auto merged
Put all path conversions in one file
Convert the --tmpdir passed to "mysqld --verbose --help"
mysql-test/lib/My/Find.pm:
Use My::Platform
mysql-test/lib/My/SafeProcess.pm:
use My::Platform
mysql-test/lib/mtr_cases.pm:
Use My::Platform
mysql-test/lib/mtr_misc.pl:
Move 'mtr_native_path' to My::Platform
mysql-test/lib/My/Platform.pm:
New BitKeeper file ``mysql-test/lib/My/Platform.pm''
mysql-test/lib/t/Platform.t:
New BitKeeper file ``mysql-test/lib/t/Platform.t''
into poseidon.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb-merge
mysql-test/mysql-test-run.pl:
Auto merged
sql/log_event.cc:
Auto merged
mysql-test/suite/rpl_ndb/t/disabled.def:
manual merge
into janus.mylan:/usr/home/serg/Abk/mysql-maria
mysql-test/mysql-test-run.pl:
Auto merged
sql/log_event.cc:
Auto merged
sql/slave.cc:
Auto merged
sql/slave.h:
Auto merged
sql/share/errmsg.txt:
Auto merged
include/my_base.h:
merged
*correct* disabling of dbug in mysql-test-run
include/atomic/gcc_builtins.h:
after-merge
mysql-test/lib/mtr_report.pl:
after-merge
mysql-test/mysql-test-run.pl:
*correct* disabling of dbug in mysql-test-run
mysql-test/r/ps_maria.result:
after-merge
mysql-test/t/crash_commit_before-master.opt:
*correct* disabling of dbug in mysql-test-run
mysql-test/t/maria-recovery-big-master.opt:
*correct* disabling of dbug in mysql-test-run
mysql-test/t/maria-recovery-bitmap-master.opt:
*correct* disabling of dbug in mysql-test-run
mysql-test/t/maria-recovery-master.opt:
*correct* disabling of dbug in mysql-test-run
sql/mysqld.cc:
--disable-debug
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb-merge
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/lib/mtr_cases.pl:
Auto merged
mysql-test/suite/ndb_team/r/rpl_ndb_dd_advance.result:
Auto merged
mysql-test/suite/rpl_ndb/t/disabled.def:
Auto merged
sql/log_event.cc:
Auto merged