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().
you just need to change this line of mysqld.cc:
#if MYSQL_VERSION_ID >= 40103
to, say,
#if MYSQL_VERSION_ID > 40103
I am noticing a failure of bdb.test; I believe this is not related to the
code I added yesterday and today, but I am checking. In any case I push this
changeset as it cannot by itself bring more mess that I *may* (or not)
already have brought with previous pushes.
sql/handler.cc:
if innodb_active_trans is true then innobase_tid too.
sql/mysqld.cc:
only a warning if --innodb-safe-binlog without InnoDB (it's true this situation will not hurt).
Enabling the --innodb-safe-binlog option.
file and sql/tztime.cpp to the libmysqld project file
VC++Files/innobase/innobase.dsp:
- added missing file srv/srv0que.c to the project file
VC++Files/libmysqld/libmysqld.dsp:
- added missing file sql/tztime.cpp to the project file
(the previous commit was in "non" fresh clone :-()
ndb/src/kernel/SimBlockList.cpp:
fixes for solaris build issues
ndb/src/ndbapi/Ndb.cpp:
fixes for solaris build issues
ndb/src/ndbapi/Ndbinit.cpp:
fixes for solaris build issues
a limitation of yesterday's implementation:
if there was an unfinished transaction (COMMIT not typed), and some MyISAM tables were
then updated, and then mysqld crashes, then at restart the server would use the too old
binlog offset known by InnoDB to cut the binlog, thus cutting the successful MyISAM
updates. We fix this by reporting the binlog offset into InnoDB even if InnoDB was not
affected at all by the update.
But the feature is still disabled until we decide if it can go into 4.1.3.
sql/handler.cc:
How we report the binlog offset into InnoDB:
- if the update affected InnoDB, it will happen naturally
- otherwise (for example MyISAM update not in an InnoDB transaction), we explicitely report it.
sql/handler.h:
removing warning (noticed this)
sql/log.cc:
clearer messages when truncating binlog.
sql/mysql_priv.h:
need to see opt_innodb_safe_binlog in handler.cc
sql/mysqld.cc:
No innodb-safe-binlog if no InnoDB.
Updating message as now we work with MyISAM.
scripts/make_binary_distribution.sh:
- added mysql_tzinfo_to_sql to binary distribution
support-files/mysql.spec.sh:
- added mysql_tzinfo_to_sql to the server subpackage
- run "make clean" instead of "make distclean"
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
Small fix to handle the src rpm file correctly (contains '0', release number in spec file)
Build-tools/Do-rpm:
Small fix to handle the src rpm file correctly (contains '0', release number in spec file)
mysql-test/r/union.result:
test of correct parser stack overflow handling
mysql-test/t/union.test:
test of correct parser stack overflow handling
sql/sql_parse.cc:
parameter of my_yyoverflow made independed from YYSIZE_T
sql/sql_yacc.yy:
parameter of my_yyoverflow made independed from YYSIZE_T
ndb/include/kernel/NodeInfo.hpp:
alligning node numbering
ndb/include/kernel/NodeState.hpp:
added connected nodes to NodeState
ndb/include/kernel/signaldata/ApiRegSignalData.hpp:
moved to NodeState
ndb/include/mgmapi/mgmapi.h:
alligning node numbering
ndb/include/mgmapi/mgmapi_config_parameters.h:
new config port_base param on system
ndb/include/util/Bitmask.hpp:
POD Bitmask
ndb/include/util/SocketAuthenticator.hpp:
SocketAut fix
ndb/src/common/mgmcommon/ConfigInfo.cpp:
added new config param
ndb/src/common/transporter/Transporter.cpp:
alligning node numbering
ndb/src/common/transporter/TransporterRegistry.cpp:
alligning node numbering
ndb/src/common/util/SocketAuthenticator.cpp:
alligning node numbering
ndb/src/kernel/blocks/qmgr/QmgrMain.cpp:
moved connected nodes to NodeState
ndb/src/mgmsrv/MgmtSrvr.cpp:
allocation and delallocation of resources in mgmsrvr
connected bitmask on each node status together with reserved nodes
that are reserved as long as session is active
+ check that hostname is same as client name
ndb/src/mgmsrv/MgmtSrvr.hpp:
allocation and delallocation of resources in mgmsrvr
connected bitmask on each node status together with reserved nodes
that are reserved as long as session is active
ndb/src/mgmsrv/Services.cpp:
added destuctor for apisession
ndb/src/mgmsrv/Services.hpp:
..
ndb/src/mgmsrv/main.cpp:
print node id
ndb/src/ndbapi/ClusterMgr.cpp:
..
ndb/src/ndbapi/ClusterMgr.hpp:
..
before being available to users. That will be the case in 4.1.4.
The "bk commit in mysqldoc" corresponding to this feature was not pushed.
Removing the 6 tests, they'll be pushed again later.
BitKeeper/deleted/.del-rpl_crash_binlog_ib_1a.result~c9ecac961121bd4e:
Delete: mysql-test/r/rpl_crash_binlog_ib_1a.result
BitKeeper/deleted/.del-rpl_crash_binlog_ib_1b.result~437e146cd203b120:
Delete: mysql-test/r/rpl_crash_binlog_ib_1b.result
BitKeeper/deleted/.del-rpl_crash_binlog_ib_2a.result~9a8bcdcc9218e280:
Delete: mysql-test/r/rpl_crash_binlog_ib_2a.result
BitKeeper/deleted/.del-rpl_crash_binlog_ib_2b.result~8d03dd3a2da8b228:
Delete: mysql-test/r/rpl_crash_binlog_ib_2b.result
BitKeeper/deleted/.del-rpl_crash_binlog_ib_3a.result~81a4b08a5259aef1:
Delete: mysql-test/r/rpl_crash_binlog_ib_3a.result
BitKeeper/deleted/.del-rpl_crash_binlog_ib_3b.result~ce5077d6b541e48c:
Delete: mysql-test/r/rpl_crash_binlog_ib_3b.result
BitKeeper/deleted/.del-rpl_crash_binlog_ib_1a-master.opt~f9cc9d326400bc96:
Delete: mysql-test/t/rpl_crash_binlog_ib_1a-master.opt
BitKeeper/deleted/.del-rpl_crash_binlog_ib_1a.test~ca1e5ae4b81c69ce:
Delete: mysql-test/t/rpl_crash_binlog_ib_1a.test
BitKeeper/deleted/.del-rpl_crash_binlog_ib_1b-master.opt~d8ad8b1c484b86c3:
Delete: mysql-test/t/rpl_crash_binlog_ib_1b-master.opt
BitKeeper/deleted/.del-rpl_crash_binlog_ib_1b.test~450096adbbe9214:
Delete: mysql-test/t/rpl_crash_binlog_ib_1b.test
BitKeeper/deleted/.del-rpl_crash_binlog_ib_2a-master.opt~d8e2c519c1a8d580:
Delete: mysql-test/t/rpl_crash_binlog_ib_2a-master.opt
BitKeeper/deleted/.del-rpl_crash_binlog_ib_2a.test~8a3a7646227ad59:
Delete: mysql-test/t/rpl_crash_binlog_ib_2a.test
BitKeeper/deleted/.del-rpl_crash_binlog_ib_2b-master.opt~5cb4dc88644cac71:
Delete: mysql-test/t/rpl_crash_binlog_ib_2b-master.opt
BitKeeper/deleted/.del-rpl_crash_binlog_ib_2b.test~95e00750688e5950:
Delete: mysql-test/t/rpl_crash_binlog_ib_2b.test
BitKeeper/deleted/.del-rpl_crash_binlog_ib_3a-master.opt~233787f10a34d70:
Delete: mysql-test/t/rpl_crash_binlog_ib_3a-master.opt
BitKeeper/deleted/.del-rpl_crash_binlog_ib_3a.test~c3cf56608fa38ab2:
Delete: mysql-test/t/rpl_crash_binlog_ib_3a.test
BitKeeper/deleted/.del-rpl_crash_binlog_ib_3b-master.opt~5a878d6ca9b620ba:
Delete: mysql-test/t/rpl_crash_binlog_ib_3b-master.opt
BitKeeper/deleted/.del-rpl_crash_binlog_ib_3b.test~d283dc272a38175:
Delete: mysql-test/t/rpl_crash_binlog_ib_3b.test
sql/mysqld.cc:
disabling the --innodb-safe-binlog option. It should be fixed to work with MyISAM too,
before being available to users. That will be the case in 4.1.4.
into mysql.com:/home/mysql_src/mysql-4.1-1717
client/mysqltest.c:
Auto merged
innobase/trx/trx0sys.c:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
sql/ha_innodb.cc:
Auto merged
sql/ha_innodb.h:
Auto merged
sql/log.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_class.h:
Auto merged
Final push. Printing some warnings at startup, as --innodb-safe-binlog requires
some other options, to work as expected.
Adding 6 new tests (3 pairs). If they fail on some platforms (so far they have been run only on my Linux),
they should be ignored for the 4.1.3 build (you can just
rm mysql-test/*/rpl_crash_*).
Now going to update doc.
mysql-test/misc/kill_master.sh:
If the mysqld process has already gone away, 'kill' will fail, so we need to explicitely
exit 0, so that the non-zero return code of kill does not make mysqltest stop.
sql/log.cc:
VC++ does not know (ulonglong)(-1)
sql/mysqld.cc:
When using --innodb-safe-binlog, some options need to automatically be turned on.
Fixed vim to expandtab's, retab'd code
Fixed CWD bug in trim_the_fat()
Build-tools/mysql-copyright:
Fixed vim to expandtab's, retab'd code
Fixed CWD bug in trim_the_fat()