BUG#4335 - one name can be handler open'ed many times.
Reworked the HANDLER functions and interface.
Using a HASH to store information on open tables that
survives FLUSH TABLE.
HANDLER tables alias names must now be unique, though it
is allowed in 4.0 to qualify them with the database name
of the base table.
mysql-test/r/flush_table.result:
BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
Moved pure handler test results to handler.result.
Added the new test results.
mysql-test/r/handler.result:
BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
Moved pure handler test results from flush_table.result to here.
mysql-test/t/flush_table.test:
BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
Moved pure handler tests to handler.test.
Added new tests.
mysql-test/t/handler.test:
BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
Moved pure handler tests from flush_table.test to here.
sql/mysql_priv.h:
BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
Reworked the handler interface.
sql/sql_base.cc:
BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
Replaced mysql_ha_close_list() by the better named
function mysql_ha_flush() with readable options.
sql/sql_class.cc:
BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
Added initialization for the handler tables hash.
Changed the handler tables clean-up code.
Unreleted to bug: Changed the order of THD initialization
to avoid warning messages on Linux with gcc.
sql/sql_class.h:
BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
Added the handler tables HASH to THD.
sql/sql_handler.cc:
BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
Completely reworked the handler functions.
Added an introducing comment, describing the new functionality.
sql/sql_table.cc:
BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
replaced mysql_ha_close() by the better named
function mysql_ha_flush() with readable options.
we force the message to the error log, and we make it more informative;
we treat EDQUOT like ENOSPC.
mysys/errors.c:
more informative message
mysys/my_fstream.c:
Treat EDQUOT like ENOSPC.
mysys/my_pread.c:
Treat EDQUOT like ENOSPC.
mysys/my_write.c:
Treat EDQUOT like ENOSPC.
mysys/mysys_priv.h:
Define EDQUOT when it does not exist. Finally decided to put it here after discussion with Monty:
as this constant is used only in 3 files only in mysys/, I don't make it visible everywhere
(there currently is no file of choice for such defines; my_base.h does not contain any).
Using a value which never happens avoids collisions.
sql/mysqld.cc:
If ME_NOREFRESH, we write message to error log, even if it has been saved for client (because if operation
is hanging, the message does not get to client now; example is MyISAM waiting for free disk space).
bug, whole bucket removed if delete first element in bucket
ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
bug, releaseTableObject called twice
ndb/src/ndbapi/NdbLinHash.hpp:
bug, whole bucket removed if delete first element in bucket
Logging to logging@openlogging.org accepted
sql_show.cc, type_enum.test, type_enum.result:
Bug #5628 German characters in field-defs will be '?' with some table definitions
mysql-test/r/type_enum.result:
Bug #5628 German characters in field-defs will be '?' with some table definitions
mysql-test/t/type_enum.test:
Bug #5628 German characters in field-defs will be '?' with some table definitions
sql/sql_show.cc:
Bug #5628 German characters in field-defs will be '?' with some table definitions
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
mysql-test/r/ps.result:
Test results fixed: the test case for bug#5688 "Upgraded 4.1.5 Server
seg faults"
mysql-test/t/ps.test:
Test case for bug#5688 "Upgraded 4.1.5 Server seg faults"
sql/item_cmpfunc.cc:
A fix for bug#5688 "Upgraded 4.1.5 Server seg faults":
fix just another place where we use wrong memory root for an Item
in statement prepare.
In addition, make the check for charsets in Item_bool_func2
more generic (fixes the test case when we use LIKE to compare BLOBs
with TEXT data).
in net_printf(), we fill net->last_* variables for the slave SQL thread to know the error.
sql/net_pkg.cc:
in net_printf(), store the error in net->last_*, so that slave SQL thread can be aware there was an error reported by net_printf()
(which is what yacc uses for "you have an error in your syntax").
we do not increment rli->group_master_log_pos if we are just after a SET ONE_SHOT (it's not a standalone event)
mysql-test/r/rpl_charset.result:
testing interruption of slave SQL thread between SET CHARACTER_SET_SERVER... and the companion INSERT.
mysql-test/t/rpl_charset.test:
testing interruption of slave SQL thread between SET CHARACTER_SET_SERVER... and the companion INSERT.
sql/log_event.cc:
we do not increment rli->group_master_log_pos if we are just after a SET
ONE_SHOT, because SET ONE_SHOT should not be separated from its following
updating query.
with memory roots in THD/Statement/Item_arena.
Added assertions preventing memory allocation on bzero'ed MEM_ROOT since it is worked by
pure luck and was very ineffective.
include/my_sys.h:
Reimplementation of Monty's optimization of clear_alloc_root().
Now clear_alloc_root() can be used only for detaching memory associated with MEM_ROOT
(e.g. to avoid its freeing). It can not be used for MEM_ROOT initialization any longer
(it was bad idea anyway since memory allocation on such MEM_ROOT was very ineffective
and worked by pure luck).
Introduced ALLOC_ROOT_MIN_BLOCK_SIZE constant.
mysys/my_alloc.c:
Added description of init_alloc_root().
Added assertions to alloc_root() and reset_root_defaults() so now they can only be used
on previosly initialized MEM_ROOT. (It worked for bzeroed MEM_ROOT before but
by pure luck and very inefficiently). Calling free_root() on bzero'ed MEM_ROOT
is still ok (we can't remove this easily because of static MEM_ROOTs).
Also now using ALLOC_ROOT_MIN_BLOCK_SIZE constant inside these functions.
sql/opt_range.cc:
Fixed get_quick_select_for_ref() function to not use bzero'ed MEM_ROOT for allocation.
Also QUICK_RANGEs created in this function should be created in memory root of QUICK_SELECT.
sql/sql_class.cc:
Implementation of Monty's idea about clear_alloc_root() optimization and cleanup of work
with memory roots in THD/Statement/Item_arena.
Now we are always initing THD::transaction.mem_root and THD::mem_root in THD constructor
(without memory allocation and with minimal block size) and then later change their
parameters in THD::init_for_queries() (this is partially because we can't allocate anything
on bzero'ed memory roots anymore).
Item_arena() constructor is now trivial and is used only then Item_arena is created as backup
storage for other Item_arena (we use Item_arena(bool) now if it is part of Statement).
Both trivial Item_arena constructor and destructor are now inline.
Removed unneeded clear_alloc_root from Item_arena::restore_backup_item_arena().
sql/sql_class.h:
Both trivial Item_arena constructor and destructor are now inline.
Commented various Item_arena constructors.
Check index version already in master
to prevent "non-atmoic" failing drop index
ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
Check index version already in master
to prevent "non-atmoic" failing drop index
CREATE TABLE t1 SELECT POINT(1,2); fixed
mysql-test/r/gis.result:
Appropriate test result
mysql-test/t/gis.test:
test case
sql/item_geofunc.cc:
Item_geometry_func::fix_lengths_and_dec implementation
several fix_length_and_dec's not needed now
sql/item_geofunc.h:
Item_geometry_func class presented
prepared statements."
include/hash.h:
New declaration for hash_reset() function. The old version was not used.
libmysql/client_settings.h:
Declaration for mysql_detach_stmt_list().
libmysql/libmysql.c:
Fix for bug#5315 "mysql_change_user() doesn't free prepared statements":
add call to mysql_detach_stmt_list(prepared statements) to
mysql_change_user(): all statements are freed by server, so client
counterparts need to be marked as not usable.
mysys/hash.c:
Fix for bug#5315 "mysql_change_user() doesn't free prepared statements":
implementation of hash_reset(), which frees all hash elements
and prepares the hash for reuse.
sql-common/client.c:
Fix for bug#5315 "mysql_change_user() doesn't free prepared statements":
implementation of mysql_detach_stmt_list(): zero connection pointer
in given statement list, thus marking given statements as not usable.
sql/sql_class.cc:
Fix for bug#5315 "mysql_change_user() doesn't free prepared statements":
reset prepared statements map in THD::change_user().
sql/sql_class.h:
Fix for bug#5315 "mysql_change_user() doesn't free prepared statements":
implementation of Statement_map::reset().
A little cleanup of ~Statement_map(): first empty names_hash, as st_hash
has a free function, which will delete statements.
tests/client_test.c:
A test case for bug #5315 "mysql_change_user() doesn't free prepared
statements".
are undo-logged in correct order
Add bunch of testcases to autotest
ndb/src/kernel/blocks/dbtup/Dbtup.hpp:
Send fragrecord ptr to initOpConnection so that is does not
have to look it up every time (if needed)
Make operation list on fragment fifo so that uncommitted operations
are undo-logged in correct order
ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp:
Send fragptr to initOpConnection
ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp:
dllist -> dlfifolist
ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp:
dllist -> dlfifolist
ndb/src/kernel/blocks/dbtup/DbtupGen.cpp:
Make operation list on fragment fifo so that uncommitted operations
are undo-logged in correct order
ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp:
Fix uninitialized variable c_start.m_startTime
which made startPartial and startPartitioned fail
ndb/test/ndbapi/testSystemRestart.cpp:
Added testSystemRestart -n SR9 which
demonstrates that two prepared operation on same
records _used to_ be undo-logged in wrong order makeing
system restart fail
ndb/test/run-test/daily-devel-tests.txt:
Add
* testSystemRestart -n SR6
Restart while some nodes have fs and other not
* testSystemRestart -n SR7
Restart in partition win
* testSystemRestart -n SR8
Restart in partition win, others starting during restart
* testSystemRestart -n SR9
Multiple ops on same record prepared before
mysql-test/r/ndb_autodiscover.result:
Update test result, number of rows is 1
mysql-test/t/ndb_autodiscover.test:
Dont run the test where table is dropped in NDb with ndb_drop_table
sql/ha_ndbcluster.cc:
Implement function ndbcluster_find_files which will discover new tables and delete old tables
sql/ha_ndbcluster.h:
Implement function ndbcluster_find_files
Remove function ndbcluster_list_tables and ndbcluster_can_discover
sql/handler.cc:
Add ha_find_files called from mysql_find_files
Remove ha_can_discover and ha_list_tables
sql/handler.h:
Add ha_find_files called from mysql_find_files
Remove ha_can_discover and ha_list_tables
sql/sql_show.cc:
Revert to original version of sql_show.cc
Only changes to this version is that ha_find_files is called from mysql_find_files in order to give the handlers a possibility to find new files in engine