- 22 Oct, 2010 1 commit
-
-
Davi Arnaut authored
- A prerequisite cleanup patch for making KILL reliable. The test case main.kill did not work reliably. The following problems have been identified: 1. A kill signal could go lost if it came in, short before a thread went reading on the client connection. 2. A kill signal could go lost if it came in, short before a thread went waiting on a condition variable. These problems have been solved as follows. Please see also added code comments for more details. 1. There is no safe way to detect, when a thread enters the blocking state of a read(2) or recv(2) system call, where it can be interrupted by a signal. Hence it is not possible to wait for the right moment to send a kill signal. It has been decided, not to fix it in the code. Instead, the test case repeats the KILL statement until the connection terminates. 2. Before waiting on a condition variable, we register it together with a synchronizating mutex in THD::mysys_var. After this, we need to test THD::killed again. At some places we did only test it in a loop condition before the registration. When THD::killed had been set between this test and the registration, we entered waiting without noticing the killed flag. Additional checks ahve been introduced where required. In addition to the above, a re-write of the main.kill test case has been done. All sleeps have been replaced by Debug Sync Facility synchronization. A couple of sync points have been added to the server code. To avoid further problems, if the test case fails in spite of the fixes, the test case has been added to the "experimental" list for now. - Most of the work on this patch is authored by Ingo Struewing mysql-test/t/kill.test: Re-wrote test case to use Debug Sync points instead of sleeps sql/event_queue.cc: Fixed kill detection in Event_queue::cond_wait() by adding a check after enter_cond(). sql/lock.cc: Moved Debug Sync points behind enter_cond(). Fixed comments. sql/slave.cc: Fixed kill detection in start_slave_thread() by adding a check after enter_cond(). sql/sql_class.cc: Swapped order of kill and close in THD::awake(). Added comments. sql/sql_class.h: Added a comment to THD::killed. sql/sql_parse.cc: Added a sync point in do_command(). sql/sql_select.cc: Added a sync point in JOIN::optimize().
-
- 21 Oct, 2010 12 commits
-
-
Jon Olav Hauglid authored
No conflicts
-
Jon Olav Hauglid authored
No conflicts
-
Vladislav Vaintroub authored
-
Sunny Bains authored
Remove trx_t::active_trans. Split into two separate fields with distinct responsibilities. trx_t::is_registered and trx_t::owns_prepare_mutex. There are wrapper functions for using this fields in ha_innodb.cc. The wrapper functions check for invariants. Fix some formatting to conform to InnoDB guidelines. Remove innobase_register_stmt() and innobase_register_trx_and_stmt(). Add: trx_is_started() trx_deregister_from_2pc() trx_register_for_2pc() trx_is_registered_for_2pc() trx_owns_prepare_commit_mutex_set() trx_has_prepare_commit_mutex() rb://479, Approved by Jimmy Yang.
-
Dmitry Shulga authored
set to 128k. sql/sp.cc: Added checking for stack overrun at functions db_load_routine/sp_find_routine. sql/sp_head.cc: sp_head::execute() modified: pass constant value STACK_MIN_SIZE instead of 8 * STACK_MIN_SIZE as second argument value in call to check_stack_overrun. Added checking for stack overrun at functions sp_lex_keeper::reset_lex_and_exec_core/sp_instr_stmt::execute. sql/sql_parse.cc: check_stack_overrun modified: allocate buffer for error message at heap instead of stack. parse_sql modified: added call to check_stack_overrun() before parsing of sql statement.
-
Marko Mäkelä authored
The variable innodb_change_buffering_debug is only present in debug builds. Hide it from the test, so that the test passes in both debug and non-debug.
-
Marko Mäkelä authored
These files were needed when InnoDB Plugin was maintained and distributed separately from the MySQL 5.1 source tree. They have never been needed in MySQL 5.5. storage/innobase/mysql-test: Patches to the test suite. storage/innobase/handler/mysql_addons.cc: Wrappers for private MySQL functions.
-
Marko Mäkelä authored
It is filling the error log when testing the debug version of the server. The printout only seems to be useful when debugging a crash, not when testing an instrumented version of the server.
-
unknown authored
-
unknown authored
Rows events were applied wrongly on the temporary table with the same name. But rows events are generated only for base tables. As temporary table's data never be binlogged on row mode. Normally, base table of the same name cannot be updated if a temporary table has the same name. But there are two cases which can generate rows events on the base table of same name. Case1: 'CREATE TABLE ... SELECT' statement. In mixed format, it will generate rows events if it is unsafe. Case2: Drop a transactional temporary table in a transaction (happens only on 5.5+). BEGIN; DROP TEMPORARY TABLE t1; # t1 is a InnoDB table INSERT INTO t1 VALUES(rand()); # t1 is a MyISAM table COMMIT; 'DROP TEMPORARY TABLE' will be put in the transaction cache and binlogged after the rows events generated by the 'INSERT' statement. After this patch, slave opens only base table when applying a rows event.
-
Jimmy Yang authored
-
Jimmy Yang authored
index or foreign key Approved by Sunny Bains
-
- 20 Oct, 2010 12 commits
-
-
Davi Arnaut authored
-
Davi Arnaut authored
-
Davi Arnaut authored
Fix assorted warnings that are generated in optimized builds. Most of it is silencing variables that are set but unused. This patch also introduces the MY_ASSERT_UNREACHABLE macro which helps the compiler to deduce that a certain piece of code is unreachable. include/my_compiler.h: Use GCC's __builtin_unreachable if available. It allows GCC to deduce the unreachability of certain code paths, thus avoiding warnings that, for example, accused that a variable could be used without being initialized (due to unreachable code paths).
-
Horst.Hunger authored
-
Horst.Hunger authored
-
Davi Arnaut authored
-
Davi Arnaut authored
Fix assorted compiler warnings. include/my_pthread.h: Like for pthread_cond_timedwait, the abstime is constant. mysys/my_gethwaddr.c: Instead of using a manual copy that introduce warnings due to type mismatch, copy the buffer using memcpy and use memcmp to check whether all bytes of the buffer are zeroed. mysys/thr_mutex.c: Like for pthread_cond_timedwait, the abstime is constant. unittest/mytap/tap.h: Introduce a ok() variant that does not take a format argument. Since ok() is tagged with a printf attribute, GCC complains if the fmt argument is NULL.
-
Marko Mäkelä authored
Declare DATA_MBMAXLEN with the same data type as DATA_MBMINLEN.
-
Marko Mäkelä authored
Rename buf_pool_watch, buf_pool_mutex, buf_pool_zip_mutex to buf_pool->watch, buf_pool->mutex, buf_pool->zip_mutex in comments. Refer to buf_pool->flush_list_mutex instead of flush_list_mutex. Remove obsolete declarations of buf_pool_mutex and buf_pool_zip_mutex.
-
Jon Olav Hauglid authored
No conflicts
-
Vasil Dimov authored
In the fix for Bug#53916 also apply equivalent changes to CMakeLists.txt
-
Sunny Bains authored
For DATA_MBMINLEN(), cast the result of UNIV_EXPECT to ulint because in GCC it returns a long causing unsigned/signed comparison warnings. Approved by Jimmy Yang on IM.
-
- 19 Oct, 2010 15 commits
-
-
Davi Arnaut authored
-
Davi Arnaut authored
Tag or remove unused arguments and variables. regex/main.c: Use the real prototype. sql/ha_ndbcluster.cc: Make conditions less ambiguous.
-
Davi Arnaut authored
-
Davi Arnaut authored
Ensure that fdatasync is properly declared as on Mac OS X, the function is available but there is no prototype. Also, port a fix for a warning from the InnoDB plugin over to the builtin. configure.in: Check that fdatasync is declared. mysys/my_sync.c: Use fdatasync only if it is declared. storage/innobase/include/ut0dbg.h: Port over from the plugin a fix for a warning.
-
Konstantin Osipov authored
-
Vasil Dimov authored
Just check for all the functions that we are going to use, not a subset of them. Reviewed by: Davi (via IRC)
-
Davi Arnaut authored
-
Davi Arnaut authored
Tag unused arguments. Approved by: Marko (via IRC)
-
Davi Arnaut authored
Tag unused arguments. Approved by: Marko (via IRC)
-
Davi Arnaut authored
Fix assorted compiler warnings on Mac OS X. BUILD/SETUP.sh: Remove -Wctor-dtor-privacy flag to workaround a GCC bug that causes it to not properly detect that implicitly generated constructors are always public. cmd-line-utils/readline/terminal.c: tgetnum and tgetflag might not take a const string argument. mysys/my_gethostbyname.c: Tag unused arguments. mysys/my_sync.c: Tag unused arguments.
-
Magne Mahre authored
data dictionary confusion On file systems with case insensitive file names, and lower_case_table_names set to '2', the server could crash due to a table definition cache inconsistency. This is the default setting on MacOSX, but may also be set and used on MS Windows. The bug is caused by using two different strategies for creating the hash key for the table definition cache, resulting in failure to look up an entry which is present in the cache, or failure to delete an existing entry. One strategy was to use the real table name (with case preserved), and the other to use a normalized table name (i.e a lower case version). This is manifested in two cases. One is during 'DROP DATABASE', where all known files are removed. The removal from the table definition cache is done via a generated list of TABLE_LIST with keys (wrongly) created using the case preserved name. The other is during CREATE TABLE, where the cache lookup is also (wrongly) based on the case preserved name. The fix was to use only the normalized table name when creating hash keys. sql/sql_db.cc: Normalize table name (i.e lower case it) sql/sql_table.cc: table_name contains the normalized name alias contains the real table name
-
Jon Olav Hauglid authored
No conflicts
-
Jon Olav Hauglid authored
No conflicts
-
Jon Olav Hauglid authored
(variables_debug fails) The problem was that "SET GLOBAL debug" could cause a crash on Solaris. The crash happened if the server failed to open the trace file given in the "SET GLOBAL debug" statement. This caused an error message to be printed to stderr containing the process name. However, printing to stderr crashed the server since the pointer to the process name had not been initialized. This patch fixes the problem by initializing the process name properly when doing "SET GLOBAL debug". No test case added as this bug was repeatable with existing test coverage in variables_debug.test.
-
Tor Didriksen authored
-