"./mtr --mysqld=--default-storage-engine=maria mysqldump".
First problem was use of INSERT DELAYED and MERGE tables without
specifying that the tables to create should always be MyISAM.
After fixing this, no rows were returned by the final SELECT of the
"BUG 19025" portion of the test. Simplified problem was:
LOCK TABLES `t1` WRITE;
/*!40000 ALTER TABLE `t1` DISABLE KEYS */;
INSERT INTO `t1` VALUES ('bla',1000),('bla',1001),('bla',1002);
/*!40000 ALTER TABLE `t1` ENABLE KEYS */;
UNLOCK TABLES;
select * from t1;
The SELECT would find no rows. Reason: ENABLE KEYS does a maria_repair();
but data pages are still in the page cache and not on disk (because
they were not flushed because maria_lock_database(F_UNLCK) was
not called at the end of INSERT because under LOCK TABLES).
At start of maria_repair(), sort_info.filelength is set to the
physical size of the data file (=> too small because pages are in
cache and not on disk).
Then in sort_get_next_record(), when seeing end-of-file, this is done:
sort_param->max_pos= sort_info->filelength;
Further in maria_repair(), this is done:
info->state->data_file_length= sort_param.max_pos;
and so data_file_length is smaller (0) than reality (16384).
This makes SELECT think EOF is where it is not, and thus find
no rows.
This is fixed by flushing all data pages at the start of maria_repair()
(no performance problem is introduced as in common cases where
ALTER TABLE is not under LOCK TABLES, the previous statement did
this flush anyway).
Another reason to do this flush is that, if not doing it, old cached
pages might go down onto the repaired data file at a later point
and thus corrupt it (assume a REPAIR non-QUICK).
A similar bug is fixed:
LOCK TABLES WRITE; INSERT; CHECK TABLE;
reports "Size of datafile is: 0 Should be: 16384"
again because the physical size was read without a preliminary
page cache flush.
mysql-test/r/maria.result:
result update
mysql-test/r/mysqldump.result:
result update
mysql-test/t/maria.test:
adding test for fixed bug in LOCK TABLES + CHECK TABLE + block format.
Disabling portion which hits "incorrect key file" but still
letting it make the test fail (Monty to fix).
mysql-test/t/mysqldump.test:
in places where test expects engine to support INSERT DELAYED and
be includable in a MERGE table, i.e. be MyISAM, we explicitely
ask for MyISAM.
storage/maria/ma_check.c:
Before reading the data file's physical size with my_seek(MY_SEEK_END)
during maria_chk_size() and maria_repair(), we must flush this
data file, otherwise physical size is misleading and leads to
- CHECK TABLE finding the table corrupted ("size of datafile should be"
error)
- ALTER TABLE ENABLE KEYS losing rows (maria_repair()
setting data_file_length to a too small value => later SELECT does
not find rows though they are in the data file).
This fixes the "mysqldump.test" failure.
sort_info.filelength contains the physical size, re-using it.
into bodhi.(none):/opt/local/work/mysql-5.1-runtime
client/mysqldump.c:
Auto merged
mysql-test/r/mysqldump.result:
Auto merged
mysql-test/t/disabled.def:
Auto merged
mysql-test/t/mysqldump.test:
Auto merged
sql/handler.cc:
Auto merged
sql/lock.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/table.cc:
Auto merged
sql/table.h:
Auto merged
mysql-test/include/mix1.inc:
Manual merge.
mysql-test/r/innodb_mysql.result:
Manual merge.
mysqldump generates view defitions in two stages:
- dump CREATE TABLE statements for the temporary tables. For each view a
temporary table, that has the same structure as the view is created.
- dump DROP TABLE statements for the temporary tables and CREATE VIEW
statements for the view.
This approach is required because views can have dependencies on each other
(a view can use other views). So, they should be created in the particular
order. mysqldump however is not smart enough, so in order to resolve
dependencies it creates temporary tables first of all.
The problem was that mysqldump might have generated incorrect dump for the
temporary table when a view has non-ASCII column name. That happened when
default-character-set is not utf8.
The fix is to:
1. Switch character_set_client for the mysqldump's connection to binary
before issuing SHOW FIELDS statement in order to avoid conversion.
2. Dump switch character_set_client statements to UTF8 and back for
CREATE TABLE statement that is issued to create temporary table.
client/mysqldump.c:
1. Switch character_set_results for mysqldump's connection to
binary before SHOW FIELDS in order to avoid conversion to client
character set.
2. Dump switch character_set_client statements to UTF8 and back
for CREATE TABLE statement.
mysql-test/r/mysqldump.result:
Update result file.
mysql-test/t/mysqldump.test:
Test case for BUG#30027.
mysqldump generates view defitions in two stages:
- dump CREATE TABLE statements for the temporary tables. For each view a
temporary table, that has the same structure as the view is created.
- dump DROP TABLE statements for the temporary tables and CREATE VIEW
statements for the view.
This approach is required because views can have dependencies on each other
(a view can use other views). So, they should be created in the particular
order. mysqldump however is not smart enough, so in order to resolve
dependencies it creates temporary tables first of all.
The problem was that mysqldump might have generated incorrect dump for the
temporary table when a view has non-ASCII column name. That happened when
default-character-set is not utf8.
The fix is to:
1. Switch character_set_client for the mysqldump's connection to binary
before issuing SHOW FIELDS statement in order to avoid conversion.
2. Dump switch character_set_client statements to UTF8 and back for
CREATE TABLE statement that is issued to create temporary table.
into gleb.loc:/home/uchum/work/bk/5.1-opt
mysql-test/t/mysqldump.test:
Auto merged
client/mysqldump.c:
Null merge of bug #29788.
mysql-test/r/mysqldump.result:
Merge with 5.0-opt.
After dumping triggers mysqldump copied
the value of the OLD_SQL_MODE variable to the SQL_MODE
variable. If the --compact option of the mysqldump was
not set the OLD_SQL_MODE variable had the value
of the uninitialized SQL_MODE variable. So
usually the NO_AUTO_VALUE_ON_ZERO option of the
SQL_MODE variable was discarded.
This fix is for non-"--compact" mode of the mysqldump,
because mysqldump --compact never set SQL_MODE to the
value of NO_AUTO_VALUE_ON_ZERO.
The dump_triggers_for_table function has been modified
to restore previous value of the SQL_MODE variable after
dumping triggers using the SAVE_SQL_MODE temporary
variable.
client/mysqldump.c:
Fixed bug #29788.
The dump_triggers_for_table function has been modified
to restore previous value of the SQL_MODE variable after
dumping triggers using the SAVE_SQL_MODE temporary
variable.
mysql-test/r/mysqldump.result:
Updated test case for bug #29788.
mysql-test/t/mysqldump.test:
Updated test case for bug #29788.
After dumping triggers mysqldump copied
the value of the OLD_SQL_MODE variable to the SQL_MODE
variable. If the --compact option of the mysqldump was
not set the OLD_SQL_MODE variable had the value
of the uninitialized SQL_MODE variable. So
usually the NO_AUTO_VALUE_ON_ZERO option of the
SQL_MODE variable was discarded.
This fix is for non-"--compact" mode of the mysqldump,
because mysqldump --compact never set SQL_MODE to the
value of NO_AUTO_VALUE_ON_ZERO.
The dump_triggers_for_table function has been modified
to restore previous value of the SQL_MODE variable after
dumping triggers using the SAVE_SQL_MODE temporary
variable.
into gleb.loc:/home/uchum/work/bk/5.1-opt
client/mysqldump.c:
Auto merged
mysql-test/t/mysqldump.test:
Auto merged
mysql-test/r/mysqldump.result:
Merge with 5.0-opt.
For each view the mysqldump utility creates a temporary table
with the same name and the same columns as the view
in order to satisfy views that depend on this view.
After the creation of all tables, mysqldump drops all
temporary tables and creates actual views.
However, --skip-add-drop-table and --compact flags disable
DROP TABLE statements for those temporary tables. Thus, it was
impossible to create the views because of existence of the
temporary tables with the same names.
client/mysqldump.c:
Fixed bug #28524.
The mysqldump utility has been modified to unconditionally drop
temporary tables before the creation of views.
mysql-test/t/mysqldump.test:
Updated test case for bug #28524 and updated result of previous tests.
mysql-test/r/mysqldump.result:
Updated test case for bug #28524 and updated result of previous tests.
For each view the mysqldump utility creates a temporary table
with the same name and the same columns as the view
in order to satisfy views that depend on this view.
After the creation of all tables, mysqldump drops all
temporary tables and creates actual views.
However, --skip-add-drop-table and --compact flags disable
DROP TABLE statements for those temporary tables. Thus, it was
impossible to create the views because of existence of the
temporary tables with the same names.
into quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/jun14/51
configure.in:
Auto merged
BitKeeper/deleted/.del-ctype_cp932_notembedded.test~3047e508460cef42:
Auto merged
mysql-test/extra/binlog_tests/binlog.test:
Auto merged
mysql-test/extra/binlog_tests/blackhole.test:
Auto merged
mysql-test/extra/binlog_tests/ctype_cp932_binlog.test:
Auto merged
mysql-test/extra/binlog_tests/ctype_ucs_binlog.test:
Auto merged
mysql-test/extra/binlog_tests/drop_temp_table.test:
Auto merged
mysql-test/extra/binlog_tests/insert_select-binlog.test:
Auto merged
mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
Auto merged
mysql-test/include/mix1.inc:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/binlog_stm_binlog.result:
Auto merged
mysql-test/r/binlog_stm_mix_innodb_myisam.result:
Auto merged
mysql-test/r/have_log_bin.require:
Auto merged
mysql-test/t/flush_block_commit_notembedded.test:
Auto merged
mysql-test/t/insert_update.test:
Auto merged
mysql-test/t/mysqlbinlog-cp932.test:
Auto merged
mysql-test/t/mysqlbinlog2.test:
Auto merged
mysql-test/t/mysqldump.test:
Auto merged
mysql-test/t/ps.test:
Auto merged
mysql-test/t/sp_trans.test:
Auto merged
sql/handler.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
mysql-test/r/date_formats.result:
Use local
mysql-test/r/partition.result:
SCCS merged
mysql-test/t/date_formats.test:
Use local
mysql-test/t/ndb_basic.test:
manual merge
mysql-test/t/partition.test:
manual merge
mysql-test/t/user_var-binlog.test:
use local
into quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/jun14/50
configure.in:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/binlog.result:
Auto merged
mysql-test/r/have_log_bin.require:
Auto merged
BitKeeper/deleted/.del-ctype_cp932_notembedded.test:
Auto merged
mysql-test/t/binlog.test:
Auto merged
mysql-test/t/ctype_cp932_binlog.test:
Auto merged
mysql-test/t/ctype_ucs_binlog.test:
Auto merged
mysql-test/t/flush_block_commit_notembedded.test:
Auto merged
mysql-test/t/insert_select-binlog.test:
Auto merged
mysql-test/t/mysqlbinlog-cp932.test:
Auto merged
mysql-test/t/mysqldump.test:
Auto merged
mysql-test/t/sp_trans.test:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
mysql-test/r/mix_innodb_myisam_binlog.result:
Use local
mysql-test/t/blackhole.test:
manual merge
mysql-test/t/drop_temp_table.test:
manual merge
mysql-test/t/mix_innodb_myisam_binlog.test:
Use local
mysql-test/t/mysqlbinlog.test:
Use local
into pilot.(none):/data/msvensson/mysql/mysql-5.1-new-maint
mysql-test/extra/binlog_tests/blackhole.test:
Auto merged
mysql-test/t/mysqldump.test:
Auto merged
mysql-test/t/ndb_binlog_basic2.test:
Auto merged
mysql-test/t/ps.test:
Auto merged
- Turn on binlog only for tests that need it
- Skip those tests if --skip-binlog is used
BitKeeper/deleted/.del-ctype_cp932_notembedded.result:
Rename: mysql-test/r/ctype_cp932_notembedded.result -> BitKeeper/deleted/.del-ctype_cp932_notembedded.result
BitKeeper/deleted/.del-ctype_cp932_notembedded.test:
Rename: mysql-test/t/ctype_cp932_notembedded.test -> BitKeeper/deleted/.del-ctype_cp932_notembedded.test
mysql-test/include/master-slave.inc:
Need binlog
mysql-test/lib/mtr_cases.pl:
Turn on binlog only for tests that need it
Skip those tests if --skip-binlog is used
mysql-test/r/sp_trans.result:
Moved to "sp_binlog"
mysql-test/t/binlog.test:
Need binlog
mysql-test/t/blackhole.test:
Need binlog
mysql-test/t/ctype_cp932_binlog.test:
Need binlog
mysql-test/t/ctype_ucs_binlog.test:
Need binlog
mysql-test/t/drop_temp_table.test:
Need binlog
mysql-test/t/flush_block_commit_notembedded.test:
Need binlog
mysql-test/t/innodb.test:
Need binlog
mysql-test/t/insert_select-binlog.test:
Need binlog
mysql-test/t/mix_innodb_myisam_binlog.test:
Need binlog
mysql-test/t/mysqlbinlog-cp932.test:
Need binlog
mysql-test/t/mysqlbinlog.test:
Need binlog
mysql-test/t/mysqlbinlog2.test:
Need binlog
mysql-test/t/mysqldump.test:
Need binlog
mysql-test/t/rpl000015.test:
Need binlog
mysql-test/t/rpl000017.test:
Need binlog
mysql-test/t/rpl_rotate_logs.test:
Need binlog
mysql-test/t/sp_trans.test:
Moved to "sp_binlog"
mysql-test/t/user_var-binlog.test:
Need binlog
mysql-test/r/sp_trans_log.result:
New BitKeeper file ``mysql-test/r/sp_trans_log.result''
mysql-test/t/sp_trans_log.test:
New BitKeeper file ``mysql-test/t/sp_trans_log.test''
into gleb.loc:/home/uchum/work/bk/mysql-5.1-opt
client/mysqldump.c:
Auto merged
mysql-test/r/join_outer.result:
Auto merged
mysql-test/r/kill.result:
Auto merged
mysql-test/r/view.result:
Auto merged
mysql-test/t/join_outer.test:
Auto merged
mysql-test/t/kill.test:
Auto merged
sql/field.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sql_base.cc:
Auto merged
mysql-test/r/mysqldump.result:
Merge with 5.0-opt
mysql-test/t/mysqldump.test:
Merge with 5.0-opt
mysql-test/t/view.test:
Merge with 5.0-opt
sql/sql_select.cc:
Merge with 5.0-opt
sometimes `mysqldump --hex-blob' overruned output buffer by '\0' byte.
The dump_table() function has been fixed to reserve 1 byte more for the
last '\0' byte of dumped string.
client/mysqldump.c:
Fixed bug #28522.
The dump_table() function has been fixed to reserve 1 byte more for the
last '\0' byte of dumped string.
mysql-test/t/mysqldump.test:
Updated test case for bug #28522.
mysql-test/r/mysqldump.result:
Updated test case for bug #28522.
sometimes `mysqldump --hex-blob' overruned output buffer by '\0' byte.
The dump_table() function has been fixed to reserve 1 byte more for the
last '\0' byte of dumped string.
mysqldump didn't properly handle getting no data on
SHOW CREATE PROCEDURE. If S/C/P fails (due to dumping
user's insufficient privileges on mysql.proc, say),
mysqldump will print a comment to that effect to the
output and return an error-code. If the -f (force) option
is used, the dump will continue, otherwise, it will abort
right there and then.
Also fixes Bug#22761, "mysqldump reports no errors when using
--routines without mysql.proc privileges"
---
Merge mysql.com:/home/tnurnberg/27293/50-27293
into mysql.com:/home/tnurnberg/27293/51-27293
---
Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.1-maint
into mysql.com:/home/tnurnberg/27293/51-27293
client/mysqldump.c:
Bug#27293: mysqldump crashes when dumping procedure defined by different user
handle failure of SHOW CREATE PROCEDURE, give user diagnostics,
heed -f (force) option
---
manual merge
mysql-test/r/mysqldump.result:
Bug#27293: mysqldump crashes when dumping procedure defined by different user
show that trying to mysqldump --routines with insufficient
privileges will no longer crash the client
---
manual merge
mysql-test/t/mysqldump.test:
Bug#27293: mysqldump crashes when dumping procedure defined by different user
show that trying to mysqldump --routines with insufficient
privileges will no longer crash the client
---
manual merge
mysqldump didn't properly handle getting no data on
SHOW CREATE PROCEDURE. If S/C/P fails (due to dumping
user's insufficient privileges on mysql.proc, say),
mysqldump will print a comment to that effect to the
output and return an error-code. If the -f (force) option
is used, the dump will continue, otherwise, it will abort
right there and then.
Also fixes Bug#22761, "mysqldump reports no errors when using
--routines without mysql.proc privileges"
---
Merge mysql.com:/home/tnurnberg/27293/50-27293
into mysql.com:/home/tnurnberg/27293/51-27293
---
Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.1-maint
into mysql.com:/home/tnurnberg/27293/51-27293
mysqldump didn't properly handle getting no data on
SHOW CREATE PROCEDURE. If S/C/P fails (due to dumping
user's insufficient privileges on mysql.proc, say),
mysqldump will print a comment to that effect to the
output and return an error-code. If the -f (force) option
is used, the dump will continue, otherwise, it will abort
right there and then.
Also fixes Bug#22761, "mysqldump reports no errors when using
--routines without mysql.proc privileges"
---
Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into mysql.com:/home/tnurnberg/27293/50-27293
client/mysqldump.c:
Bug#27293: mysqldump crashes when dumping procedure defined by different user
handle failure of SHOW CREATE PROCEDURE, give user diagnostics,
heed -f (force) option
mysql-test/r/mysqldump.result:
Bug#27293: mysqldump crashes when dumping procedure defined by different user
show that trying to mysqldump --routines with insufficient
privileges will no longer crash the client
---
manual merge
mysql-test/t/mysqldump.test:
Bug#27293: mysqldump crashes when dumping procedure defined by different user
show that trying to mysqldump --routines with insufficient
privileges will no longer crash the client
---
manual merge
mysqldump didn't properly handle getting no data on
SHOW CREATE PROCEDURE. If S/C/P fails (due to dumping
user's insufficient privileges on mysql.proc, say),
mysqldump will print a comment to that effect to the
output and return an error-code. If the -f (force) option
is used, the dump will continue, otherwise, it will abort
right there and then.
Also fixes Bug#22761, "mysqldump reports no errors when using
--routines without mysql.proc privileges"
---
Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into mysql.com:/home/tnurnberg/27293/50-27293
- Giving the directive '--all-databases' to mysqldump caused
an attempt to lock and dump log tables which don't support this
operation.
- With this patch the log tables are excluded from the set of
databases tables to dump.
client/mysqldump.c:
- Ignore log tables which can't be locked.
mysql-test/t/mysqldump.test:
Added test