- 30 Mar, 2012 1 commit
-
-
Rohit Kalhans authored
Description: When the table has more than one unique or primary key, INSERT... ON DUP KEY UPDATE statement is sensitive to the order in which the storage engines checks the keys. Depending on this order, the storage engine may determine different rows to mysql, and hence mysql can update different rows on master and slave. Solution: We mark INSERT...ON DUP KEY UPDATE on a table with more than on unique key as unsafe therefore the event will be logged in row format if it is available (ROW/MIXED). If only STATEMENT format is available, a warning will be thrown. mysql-test/suite/binlog/r/binlog_unsafe.result: Updated result file mysql-test/suite/binlog/t/binlog_unsafe.test: Added test to check for warning being thrown when the unsafe statement is executed mysql-test/suite/rpl/r/rpl_known_bugs_detection.result: Updated result file sql/share/errmsg-utf8.txt: Added new warning message sql/sql_base.cc: check for tables in the query with more than one UNIQUE KEY and INSERT ON DUPLICATE KEY UPDATE, and mark such statements unsafe.
-
- 29 Mar, 2012 3 commits
-
-
Hery Ramilison authored
-
Tor Didriksen authored
Background: - as described in MySQL Internals Prepared Stored (http://forge.mysql.com/wiki/MySQL_Internals_Prepared_Stored), the Optimizer sometimes does destructive changes to the parsed LEX-object (Item-tree), which makes it impossible to re-use that tree for PS/SP re-execution. - in order to be able to re-use the Item-tree, the destructive changes are remembered and rolled back after the statement execution. The problem, discovered by this bug, was that the objects representing GROUP-BY clause did not restored after query execution. So, the GROUP-BY part of the statement could not be properly re-initialized for re-execution after destructive changes. Those objects do not take part in the Item-tree, so they can not be saved using the approach for Item-tree. The fix is as follows: - introduce a new array in st_select_lex to store the original ORDER pointers, representing the GROUP-BY clause; - Initialize this array in fix_prepare_information(). - restore the list of GROUP-BY items in reinit_stmt_before_use().
-
Sunny Bains authored
Fix the calculation of the next autoinc value when offset > 1. Some of the results have changed due to the changes in the allocation calculation. The new calculation will result in slightly bigger gaps for bulk inserts. rb://866 Approved by Jimmy Yang. Backported from mysql-trunk (5.6)
-
- 28 Mar, 2012 6 commits
-
-
Marc Alff authored
LOCK_THREAD_COUNT When using the performance schema file io instrumentation in MySQL 5.5, a thread would loop forever inside lf_pinbox_put_pins, when disconnecting. It would also hold LOCK_thread_count while doing so, effectively killing the server. The root cause of the loop in lf_pinbox_put_pins() is a leak of LF_PINS, when used with the filename_hash LF_HASH table in the performance schema. This fix contains the following changes: 1) Added the missing call to lf_hash_search_unpin(), to prevent the leak. 2) In mysys/lf_alloc-pin.c, there was some extra debugging code (MY_LF_EXTRA_DEBUG) written to detect precisely this kind of issues, but it was never used. Replaced MY_LF_EXTRA_DEBUG with DBUG_OFF, so that leaks similar to this one can be always detected in regular debug builds. 3) Backported the fix for the following bug, from 5.6 to 5.5: Bug#13417446 - 63339: INCORRECT FILE PATH IN PEFORMANCE_SCHEMA ON WINDOWS
-
Praveenkumar Hulakund authored
-
Praveenkumar Hulakund authored
Analysis: ------------------------------- According to the Manual (http://dev.mysql.com/doc/refman/5.1/en/identifier-case-sensitivity.html): "Column, index, stored routine, and event names are not case sensitive on any platform, nor are column aliases." In other words, 'lower_case_table_names' does not affect the behaviour of those identifiers. On the other hand, trigger names are case sensitive on some platforms, and case insensitive on others. 'lower_case_table_names' does not affect the behaviour of trigger names either. The bug was that SHOW statements did case sensitive comparison for stored procedure / stored function / event names. Fix: Modified the code so that comparison in case insensitive for routines and events for "SHOW" operation. As part of this commit, only fixing the test failures due to the actual code fix.
-
Sunny Bains authored
-
Sunny Bains authored
-
Sunny Bains authored
Change the type of purge_sys_t::n_pages_handled and purge_sys_t::handle_limit to ulonglong from ulint. On a 32 bit system doing ~700 deletes per second the counters can overflow in ~3.5 months, if they are 32 bit. Approved by Jimmy Yang over IM.
-
- 27 Mar, 2012 4 commits
-
-
Tor Didriksen authored
-
Tor Didriksen authored
-
Praveenkumar Hulakund authored
-
Praveenkumar Hulakund authored
Analysis: ------------------------------- According to the Manual (http://dev.mysql.com/doc/refman/5.1/en/identifier-case-sensitivity.html): "Column, index, stored routine, and event names are not case sensitive on any platform, nor are column aliases." In other words, 'lower_case_table_names' does not affect the behaviour of those identifiers. On the other hand, trigger names are case sensitive on some platforms, and case insensitive on others. 'lower_case_table_names' does not affect the behaviour of trigger names either. The bug was that SHOW statements did case sensitive comparison for stored procedure / stored function / event names. Fix: Modified the code so that comparison in case insensitive for routines and events for "SHOW" operation.
-
- 26 Mar, 2012 1 commit
-
-
Inaam Rana authored
rb://942 approved by: Marko Makela We don't need to scan LRU for dropping AHI entries when DROPing a table. AHI entries are already removed when we free up extents for the btree.
-
- 22 Mar, 2012 1 commit
-
-
Bjorn Munch authored
-
- 21 Mar, 2012 3 commits
-
-
Joerg Bruehe authored
Manually resolved conflicts in ".bzr-mysql/default.conf" (tree name) and in "storage/innodb_plugin" (does not belong into 5.5).
-
Joerg Bruehe authored
solve a conflict in ".bzr-mysql/default.conf".
-
Jimmy Yang authored
to mysql-5.5 rb://979 approved by Marko
-
- 20 Mar, 2012 6 commits
-
-
Joerg Bruehe authored
-
Joerg Bruehe authored
conflict in "sql/filesort.cc" solved manually.
-
unknown authored
-
unknown authored
-
Jimmy Yang authored
-
Alexander Barkov authored
Problem: Field_set::val_str in case of an empty SET value returned a String with str_length==0 and Ptr==0, which is not expected by some pieces of the code. Fix: Returning an empty string with str_length==0 and Ptr=="", like Field_enum does.
-
- 16 Mar, 2012 3 commits
-
-
Bjorn Munch authored
Doing this for Sayantan whose VPN is not working ATM
-
Annamalai Gurusami authored
-
Annamalai Gurusami authored
The test case must insert all the records using a single transaction. Otherwise the test case takes more than 15 minutes and will time out in pb2 and mtr.
-
- 15 Mar, 2012 9 commits
-
-
Inaam Rana authored
-
Inaam Rana authored
FROM BUFFER POOL rb://975 approved by: Marko Makela There is a race in lock_validate() where we try to access a page without ensuring that the tablespace stays valid during the operation i.e.: it is not deleted. This patch tries to fix that by using an existing flag (the flag is renamed to make it's name more generic in line with it's new use).
-
Inaam Rana authored
-
Inaam Rana authored
rb://976 approved by: Marko Makela Add an assertion to ensure that string overflow is not happening. Pointed by Coverity analysis.
-
Inaam Rana authored
-
Inaam Rana authored
IN OS_THREAD_EQ rb://977 approved by: Marko Makela rw_lock::writer_thread field contains the thread id of current x-holder or wait-x thread. This field is un-initialized at lock creation and is written to for the first time when an attempt is made to x-lock. Current code considers ::writer_thread as valid memory region only when the lock is held in x-mode (or there is an x-waiter). This is an overkill and it generates valgrind warnings. The fix is to consider ::writer_thread as valid memory region once it has been written to. Reasoning: ========== The ::writer_thread can be safely considered valid because: * We only ever do comparison with current calling threads id. * We only ever do comparison when ::recursive flag is set * We always unset ::recursive flag in x-unlock * Same thread cannot be unlocking and attempting to lock at the same time * thread_id recycling is not an issue because before an id is recycled the thread must leave innodb meaning it must release all locks meaning it must unset ::recursive flag.
-
Jon Olav Hauglid authored
Pre-requisite patch. Add end-of-file marker to 5.5 version of errmsg-utf8.txt.
-
Dmitry Shulga authored
AND SAVEPOINT. The bug was introduced by the patch for bug#11766752. This patch sets too strong condition on XA state for SAVEPOINT statement that disallows its execution during XA transaction. But since the statement SAVEPOINT doesn't imply implicit commit we can allow its handling during XA transaction. The patch explicitly check for transaction state against states XA_NOTR and XA_ACTIVE for which the handling of statement SAVEPOINT for XA transaction is allowed. mysql-test/t/xa.test: Testcase was adjusted for bug#13737343. Now SAVEPOINT is allowed for XA transactions in ACTIVE state.
-
unknown authored
-
- 14 Mar, 2012 3 commits
-
-
Mattias Jonsson authored
-
Mattias Jonsson authored
Updated code comments according to reviewers requests.
-
Tor Didriksen authored
We are trying to sort a lot of text/blob fields, so the buffer is indeed too small. Memory available = thd->variables.sortbuff_size = 262144 min_sort_memory = param.sort_length*MERGEBUFF2 = 292245 So the decision to abort the query is correct. filesort() calls my_error(), the error is reported. But, since we have DELETE IGNORE ... the error is converted to a warning by THD::raise_condition filesort currently expects an error to be recorded in the THD diagnostics area. If we lift this restriction (remove the assert) we end up in the familiar void Protocol::end_statement() default: DBUG_ASSERT(0); The solution seems to be to call my_error(ME_FATALERROR) in filesort, so that the error is propagated as an error rather than a warning. mysql-test/r/filesort_debug.result: New test case. mysql-test/t/filesort_debug.test: New test case.
-