- 09 Oct, 2007 1 commit
-
-
davi@moksha.local authored
This deadlock occurs when a client issues a HANDLER ... OPEN statement that tries to open a table that has a pending name-lock on it by another client that also needs a name-lock on some other table which is already open and associated to a HANDLER instance owned by the first client. The deadlock happens because the open_table() function will back-off and wait until the name-lock goes away, causing a circular wait if some other name-lock is also pending for one of the open HANDLER tables. Such situation, for example, can be easily repeated by issuing a RENAME TABLE command in such a way that the existing table is already open as a HANDLER table by another client and this client tries to open a HANDLER to the new table name. The solution is to allow handler tables with older versions (marked for flush) to be closed before waiting for the name-lock completion. This is safe because no other name-lock can be issued between the flush and the check for pending name-locks. The test case for this bug is going to be committed into 5.1 because it requires a test feature only avaiable in 5.1 (wait_condition).
-
- 04 Oct, 2007 3 commits
-
-
davi@moksha.local authored
into moksha.local:/Users/davi/mysql/push/mysql-5.0-runtime
-
davi@moksha.local authored
This bug is a symptom of the way handler's tables are managed. The most different aspect, compared to the conventional behavior, is that the handler's tables are long lived, meaning that their lifetimes are not bounded by the duration of the command that opened them. For this effect the handler code uses its own list (handler_tables instead of open_tables) to hold open handler tables so that the tables won't be closed at the end of the command/statement. Besides the handler_tables list, there is a hash (handler_tables_hash) which is used to associate handler aliases to tables and to refresh the tables upon demand (flush tables). The current implementation doesn't work properly with refreshed tables -- more precisely when flush commands are issued by other initiators. This happens because when a handler open or read statement is being processed, the associated table has to be opened or locked and, for this matter, the open_tables and handler_tables lists are swapped so that the new table being opened is inserted into the handler_tables list. But when opening or locking the table, if the refresh version is different from the thread refresh version then all used tables in the open_tables list (now handler_tables) are refreshed. In the "refreshing" process the handler tables are flushed (closed) without being properly unlinked from the handler hash. The current implementation also fails to properly discard handlers of dropped tables, but this and other problems are going to be addressed in the fixes for bugs 31397 and 31409. The chosen approach tries to properly save and restore the table state so that no table is flushed during the table open and lock operations. The logic is almost the same as before with the list swapping, but with a working glue code. The test case for this bug is going to be committed into 5.1 because it requires a test feature only avaiable in 5.1 (wait_condition).
-
anozdrin/alik@station. authored
This actually, fix for the patch for bug-27354. The problem with the patch was that Item_func_sp::used_tables() was updated, but Item_func_sp::const_item() was not. So, for Item_func_sp, we had the following inconsistency: - used_tables() returned RAND_TABLE, which means that the item can produce "random" results; - but const_item() returned TRUE, which means that the item is a constant one. The fix is to change Item_func_sp::const_item() behaviour: it must return TRUE (an item is a constant one) only if a stored function is deterministic and each of its arguments (if any) is a constant item.
-
- 01 Oct, 2007 2 commits
-
-
mats@kindahl-laptop.dnsalias.net authored
into kindahl-laptop.dnsalias.net:/home/bk/b30992-mysql-5.0-runtime
-
mats@kindahl-laptop.dnsalias.net authored
Adding support for correct handling of pthread_mutex_trylock() on Win32 systems as well as when using the safe mutexes.
-
- 13 Sep, 2007 1 commit
-
-
anozdrin/alik@station. authored
The problem was that aborted_threads variable was updated twice when a client connection had been aborted. The fix is to refactor a code to have aborted_threads updated only in one place.
-
- 04 Sep, 2007 2 commits
-
-
malff/marcsql@weblab.(none) authored
-
malff/marcsql@weblab.(none) authored
into weblab.(none):/home/marcsql/TREE/mysql-5.0-rt-merge
-
- 03 Sep, 2007 5 commits
-
-
thek@adventure.(none) authored
into adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime
-
thek@adventure.(none) authored
-
thek@adventure.(none) authored
into adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime
-
thek@adventure.(none) authored
into adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime
-
thek@adventure.(none) authored
Invaldating a subset of a sufficiently large query cache can take a long time. During this time the server is efficiently frozen and no other operation can be executed. This patch addresses this problem by setting a time limit on how long time a dictionary access request can take before giving up on the attempt. This patch does not work for query cache invalidations issued by DROP, ALTER or RENAME TABLE operations.
-
- 30 Aug, 2007 5 commits
-
-
malff/marcsql@weblab.(none) authored
into weblab.(none):/home/marcsql/TREE/mysql-5.0-runtime
-
davi@moksha.local authored
The problem is that a SELECT on one thread is blocked by INSERT ... ON DUPLICATE KEY UPDATE on another thread even when low_priority_updates is activated. The solution is to possibly downgrade the lock type to the setting of low_priority_updates if the INSERT cannot be concurrent.
-
malff/marcsql@weblab.(none) authored
into weblab.(none):/home/marcsql/TREE/mysql-5.0-28779-b
-
kaa@polly.(none) authored
Use double quotes instead of single ones which make the test fail on Windows. This is for bug #30164.
-
kaa@polly.(none) authored
Problem: In cases when a client-side macro appears inside a server-side comment, the add_line() function in mysql.cc discarded all characters until the next delimiter to remove macro arguments from the query string. This resulted in broken queries being sent to the server when the next delimiter character appeared past the comment's boundaries, because the comment closing sequence ('*/') was discarded. Fix: If a client-side macro appears inside a server-side comment, discard all characters in the comment after the macro (that is, until the end of the comment rather than the next delimiter). This is a minimal fix to allow only simple cases used by the mysqlbinlog utility. Limitations that are worth documenting: - Nested server-side and/or client-side comments are not supported by mysql.cc - Using client-side macros in multi-line server-side comments is not supported - All characters after a client-side macro in a server-side comment will be omitted from the query string (and thus, will not be sent to server).
-
- 29 Aug, 2007 13 commits
-
-
malff/marcsql@weblab.(none) authored
comments) Before this fix, the server would accept queries that contained comments, even when the comments were not properly closed with a '*' '/' marker. For example, select 1 /* + 2 <EOF> would be accepted as select 1 /* + 2 */ <EOF> and executed as select 1 With this fix, the server now rejects queries with unclosed comments as syntax errors. Both regular comments ('/' '*') and special comments ('/' '*' '!') must be closed with '*' '/' to be parsed correctly.
-
msvensson@pilot.(none) authored
into pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
-
msvensson@pilot.(none) authored
'mysqld_wait_started' don't return prematurely because of an old pidfile
-
msvensson@pilot.(none) authored
-
msvensson@pilot.(none) authored
into pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
-
msvensson@pilot.(none) authored
-
anozdrin/alik@ibm. authored
seems to be converted as varbinary. The bug has been already fixed. This CS just adds a test case for it.
-
msvensson@pilot.(none) authored
-
msvensson@pilot.(none) authored
-
msvensson@pilot.(none) authored
into pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
-
msvensson@pilot.(none) authored
into pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
-
msvensson@pilot.(none) authored
-
msvensson@pilot.(none) authored
-
- 28 Aug, 2007 8 commits
-
-
davi@moksha.local authored
into moksha.local:/Users/davi/mysql/push/mysql-5.0-runtime
-
tsmith@ramayana.hindu.god authored
into ramayana.hindu.god:/home/tsmith/m/bk/maint/50
-
malff/marcsql@weblab.(none) authored
This is a performance bug, affecting in particular the bison generated code for the parser. Prior to this fix, the grammar used a long chain of reduces to parse an expression, like: bit_expr -> bit_term bit_term -> bit_factor bit_factor -> value_expr value_expr -> term term -> factor etc This chain of reduces cause the internal state automaton in the generated parser to execute more state transitions and more reduces, so that the generated MySQLParse() function would spend a lot of time looping to execute all the grammar reductions. With this patch, the grammar has been reorganized so that rules are more "flat", limiting the depth of reduces needed to parse <expr>. Tests have been written to enforce that relative priorities and properties of operators have not changed while changing the grammar. See the bug report for performance data.
-
msvensson@pilot.(none) authored
Fix typo, "next_con" -> "con"
-
msvensson@pilot.(none) authored
-
msvensson@pilot.(none) authored
to perform this analyzis)
-
msvensson@pilot.(none) authored
into pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
-
msvensson@pilot.(none) authored
into pilot.(none):/data/msvensson/mysql/bug28812/my50-bug28812
-