BUG#4506 "mysqlbinlog --position --read-from-remote-server has wrong "# at" lines",
BUG#4553 "Multi-table DROP TABLE replicates improperly for nonexistent table" with a test file.
It was not possible to add a test for BUG#4506 as in the test suite we must use --short-form
which does not display the "# at" lines.
client/mysqlbinlog.cc:
Fix for BUG#4506 "mysqlbinlog --position --read-from-remote-server has wrong "# at" lines"
when reading a remote binlog, the start position is not always BIN_LOG_HEADER_SIZE (4).
sql/sql_table.cc:
Fix for BUG#4553 "Multi-table DROP TABLE replicates improperly for nonexistent table"
we must my_error() _before_ we write to the binlog, so that a meaningful error code is available
in thd->net.last_errno for storage of the DROP TABLE statement into the binlog.
(Bug #4446)
innobase/row/row0ins.c:
row_ins_foreign_check_on_constraint(): limit recursion for UPDATE too
mysql-test/r/innodb.result:
Add test for recursion depth limit
mysql-test/t/innodb.test:
Add test for recursion depth limit
Do not add + 1 to the InnoDB index cardinality estimate if the B-tree just contains one page; the fix made in March 2004 caused InnoDB systematically to overestimate the cardinality of empty or small tables by 1
innobase/btr/btr0cur.c:
Do not add + 1 to the InnoDB index cardinality estimate if the B-tree just contains one page; the fix made in March 2004 caused InnoDB systematically to overestimate the cardinality of empty or small tables by 1
sql/sql_load.cc:
A fix for a long standing bug in LOAD DATA .. LOCAL ..'
When the error occurs, a link is broken instead of simply returning
the error message and maintaining the same connection.
Decrement n_lock_table_exp in lock_table_remove_low()
instead of lock_table_dequeue().
Do not empty lock_heap in lock_release_tables_off_kernel().
innobase/lock/lock0lock.c:
Decrement n_lock_table_exp in lock_table_remove_low()
instead of lock_table_dequeue().
Do not empty lock_heap in lock_release_tables_off_kernel().
innobase/include/lock0lock.h:
Improve comments regarding LOCK_TABLE_EXP
innobase/include/row0mysql.h:
Rename row_unlock_table_for_mysql() to row_unlock_tables_for_mysql()
and improve its comment
innobase/include/trx0trx.h:
Rename n_tables_locked to n_lock_table_exp
innobase/lock/lock0lock.c:
Rename n_tables_locked to n_lock_table_exp
Increment n_lock_table_exp already in lock_table_create()
Replace some ut_ad() assertions with ut_a()
innobase/row/row0mysql.c:
Rename n_tables_locked to n_lock_table_exp
Rename row_unlock_table_for_mysql() to row_unlock_tables_for_mysql()
and improve its comment
innobase/trx/trx0trx.c:
Rename n_tables_locked to n_lock_table_exp
sql/ha_innodb.cc:
Rename n_tables_locked to n_lock_table_exp
Rename row_unlock_table_for_mysql() to row_unlock_tables_for_mysql()
(Bug #2694)
innobase/include/srv0srv.h:
Add srv_fatal_semaphore_wait_threshold
innobase/include/sync0arr.h:
Improve comment of sync_array_print_long_waits()
innobase/row/row0mysql.c:
Lengthen the srv_fatal_semaphore_wait_threshold by 2 hours during
CHECK TABLE
innobase/srv/srv0srv.c:
Add srv_fatal_semaphore_wait_threshold
innobase/sync/sync0arr.c:
Improve comment of sync_array_print_long_waits().
Replace the fixed timeout of 600 seconds with
srv_fatal_semaphore_wait_threshold.
innobase_start_or_create_for_mysql(): Rename innodb.status.<pid>
to innodb_status.<pid> to avoid problems on VMS
innobase/srv/srv0start.c:
innobase_start_or_create_for_mysql(): Rename innodb.status.<pid>
to innodb_status.<pid> to avoid problems on VMS
Fix for BUG#4375 "Windows specific directories are copied during
replication": in the Windows version of my_dir(), do not show hidden
or system files which Windows sometimes creates in the root directory
of drive (like RECYCLER and SYSTEM VOLUME INFORMATION directories) (so
this problem showed up only when the datadir was the root dir of a
drive).
This will make SHOW DATABASES display better, and will do no harm to
MySQL. For example, DROP DATABASE will not miss some files, as MySQL
creates no hidden or system files.
mysys/my_lib.c:
In my_dir(), do not show hidden or system files
which Windows sometimes creates.
if a command has a comment at the end of line, like:
error 2002 ; # this is error 2002
then the parsing of comment should not make mysqltest
forget about the value of expected error.
Reason it forgot it (so the next query caused the test to fail)
is that internally the above line is 2 queries.
client/mysqltest.c:
if a command has a comment at the end of line, like:
error 2002 ; # this is error 2002
then the parsing of comment should not make mysqltest
forget about the value of expected error.
processlist on slave":
we now report in SHOW PROCESSLIST that we are writing to the temp
files or loading the table. When we are writing to the tmp file:
| 3 | system user | | | Connect | 6 | Making temp file /tmp/SQL_LOAD-2-1-2.data |
and when we are actually loading the .data temp file into the table:
| 3 | system user | | test | Connect | 2 | | LOAD DATA INFILE '/tmp/SQL_LOAD-2-1-2.data' INTO TABLE `t` <...> |
sql/log_event.cc:
Replication of LOAD DATA INFILE:
we now report in SHOW PROCESSLIST that we are creating
the temp files or loading the table.
Plus removing a line which had a comment "should not be needed"
and a guarding assertion which we have never heard fail (and logic
says it should not fail).
Redesigned the handler close functions so that they are usable
at different places where waiting for closing tables is done.
mysql-test/r/flush_table.result:
bug#3565 - HANDLER and FLUSH TABLE/TABLES deadlock.
Added the test results.
mysql-test/t/flush_table.test:
bug#3565 - HANDLER and FLUSH TABLE/TABLES deadlock.
Activated old test case.
Added new test cases.
sql/mysql_priv.h:
bug#3565 - HANDLER and FLUSH TABLE/TABLES deadlock.
Made mysql_ha_close() more flexible.
Removed mysql_ha_closeall(), which closed only one table despite its name.
Added mysql_ha_close_list(), which closes the complete list or all tables and does not lock.
Removed a duplicate declaration.
sql/sql_base.cc:
bug#3565 - HANDLER and FLUSH TABLE/TABLES deadlock.
Added proper close calls before some wait points to avoid deadlocks
or infinite loops.
sql/sql_handler.cc:
bug#3565 - HANDLER and FLUSH TABLE/TABLES deadlock.
Redesigned the internal function find_table_ptr_by_name().
It can now suppress locking and tells if the requested table
has been flushed by itself.
Extended mysql_ha_close() so that it can now suppres locking
and error reporting. That way it can be used at more places and the
old function mysql_ha_closeall() is now obsolete.
Added a new function mysql_ha_close_list() which closes a whole list
of HANDLER tables or all HANDLER tables, if the list is NULL.
Furthermore is can close all 'old' (marked for flush) HANDLER tables.
sql/sql_table.cc:
bug#3565 - HANDLER and FLUSH TABLE/TABLES deadlock.
Replaced the obsolte mysql_ha_closeall() by the new mysql_ha_close().
Added put_length() to get_length() and unpack_key() to pack_key().
Keys were packed with the minimum size of the length field for the key part and
unpacked with length size of the base column.
For the purpose of optimal key packing we have the method pack_key(), while rows are
packed with pack(). Now keys are unpacked with unpack_key() and no longer with
unpack() which is used for rows.
mysql-test/r/bdb.result:
bug#2686 - index_merge select on BerkeleyDB table with varchar PK causes mysqld to crash.
Added the test case results.
mysql-test/t/bdb.test:
bug#2686 - index_merge select on BerkeleyDB table with varchar PK causes mysqld to crash.
Added the test case.
sql/field.cc:
bug#2686 - index_merge select on BerkeleyDB table with varchar PK causes mysqld to crash.
Added put_length() to get_length() and unpack_key() to pack_key().
Keys were packed with the minimum size of the length field for the key part and
unpacked with length size of the base column.
For the purpose of optimal key packing we have the method pack_key(), while rows are packed
with pack(). Now keys are unpacked with unpack_key() and no longer with unpack() which is
used for rows.
sql/field.h:
bug#2686 - index_merge select on BerkeleyDB table with varchar PK causes mysqld to crash.
Added put_length() to get_length() and unpack_key() to pack_key().
The default implementation simply calls unpack() for those field types that don't need
a special key unpacking.
sql/ha_berkeley.cc:
bug#2686 - index_merge select on BerkeleyDB table with varchar PK causes mysqld to crash.
Now keys are unpacked with unpack_key() and no longer with unpack() which is used for rows.
For most field types, however, this simply calls unpack().
add typelib.h to filelist
Clients and Tools.fgl:
add libmysql.dll to file list
4.0.XX-gpl.ipr:
Various fixes to installshield project file (added files)
VC++Files/InstallShield/4.0.XX-gpl/4.0.XX-gpl.ipr:
Various fixes to installshield project file (added files)
VC++Files/InstallShield/4.0.XX-gpl/File Groups/Clients and Tools.fgl:
add libmysql.dll to file list
VC++Files/InstallShield/4.0.XX-gpl/File Groups/Development.fgl:
add typelib.h to filelist