- 19 Sep, 2010 1 commit
-
-
Joerg Bruehe authored
-
- 17 Sep, 2010 1 commit
-
-
Davi Arnaut authored
The problem was that the x86 assembly based atomic CAS (compare and swap) implementation could copy the wrong value to the ebx register, where the cmpxchg8b expects to see part of the "comparand" value. Since the original value in the ebx register is saved in the stack (that is, the push instruction causes the stack pointer to change), a wrong offset could be used if the compiler decides to put the source of the comparand value in the stack. The solution is to copy the comparand value directly from memory. Since the comparand value is 64-bits wide, it is copied in two steps over to the ebx and ecx registers.
-
- 13 Sep, 2010 1 commit
-
-
Joerg Bruehe authored
The first part is the functional change, the second is needed as a compile fix on Windows (header file order). | committer: Marc Alff <marc.alff@oracle.com> | branch nick: mysql-5.5-bugfixing-56521 | timestamp: Thu 2010-09-09 14:28:47 -0600 | message: | Bug#56521 Assertion failed: (m_state == 2), function allocated_to_free, pfs_lock.h (138) | | Before this fix, it was possible to build the server: | - with the performance schema | - with a dummy implementation of my_atomic (MY_ATOMIC_MODE_DUMMY). | | In this case, the resulting binary will just crash, | as this configuration is not supported. | | This fix enforces that the build will fail with a compilation error in this | configuration, instead of resulting in a broken binary. | committer: Tor Didriksen <tor.didriksen@oracle.com> | branch nick: 5.5-bugfixing-56521 | timestamp: Fri 2010-09-10 11:10:38 +0200 | message: | Header files should be self-contained
-
- 10 Sep, 2010 1 commit
-
-
Joerg Bruehe authored
This is not the final merge!
-
- 07 Sep, 2010 1 commit
-
-
Joerg Bruehe authored
After installation from RPM, server is run under root, not mysql user The problem was that in the cmake way of building the variable "MYSQLD_USER" was not set and propagated. In the script "mysqld_safe" its value is used as the name of the user who should run the server process. The fix is to explicitly set this variable to "mysql" and propagate it in the build process. It was analyzed and proposed by Jonathan Perkin.
-
- 06 Sep, 2010 2 commits
-
-
Dmitry Lenev authored
MDL deadlock detector". Deadlock could have occurred when workload containing mix of DML, DDL and FLUSH TABLES statements affecting same set of tables was executed in heavily concurrent environment. This deadlock occurred when several connections tried to perform deadlock detection in metadata locking subsystem. The first connection started traversing wait-for graph, encountered sub-graph representing wait for flush, acquired LOCK_open and dived into sub-graph inspection. When it has encounterd sub-graph corresponding to wait for metadata lock and blocked while trying to acquire rd-lock on MDL_lock::m_rwlock (*) protecting this subgraph, since some other thread had wr-lock on it. When this wr-lock was released it could have happened (if there was other pending wr-lock against this rwlock) that rd-lock from the first connection was left unsatisfied but at the same time new rd-lock request from the second connection sneaked in and was satisfied (for this to be possible second rd- request should come exactly after wr-lock is released but before pending wr-lock manages to grab rwlock, which is possible both on Linux and in our own rwlock implementation). If this second connection continued traversing wait-for graph and encountered sub-graph representing wait for flush it tried to acquire LOCK_open and thus deadlock was created. This patch tries to workaround this problem but not allowing deadlock detector to lock LOCK_open mutex if some other thread doing deadlock detection already owns it and current search depth is greater than 0. Instead deadlock is reported. Other possible solutions are either known to have negative effects on performance or require much more time for proper implementation and testing. No test case is provided as this bug is very hard to repeat in MTR environment but is repeatable with the help of RQG tests.
-
Joerg Bruehe authored
The problem was not caused by a change in the client, rather by the tests using the Windows built-in "echo" and not the one built by MySQL. This again happened because the binary was missing in the package, caused by the wrong macro being used to build it in "cmake".
-
- 02 Sep, 2010 1 commit
-
-
Joerg Bruehe authored
-
- 01 Sep, 2010 1 commit
-
-
Alexander Nozdrin authored
-
- 31 Aug, 2010 6 commits
-
-
Alexander Nozdrin authored
Original changeset: ------------------------------------------------------------ revno: 3186 revision-id: davi.arnaut@oracle.com-20100831142822-2qhufn3hho4xqr4p parent: gshchepa@mysql.com-20100830222201-ie7n43mjy4irlllk committer: Davi Arnaut <davi.arnaut@oracle.com> branch nick: mysql-5.5-merge timestamp: Tue 2010-08-31 11:28:22 -0300 message: Bug#55846: Link tests fail on Windows - my_compiler.h missing Make the my_compiler.h header, like my_attribute.h, part of the distribution. This is required due to the dependency of the former on the latter (which can undefine __attribute__). ------------------------------------------------------------
-
Alexander Nozdrin authored
Original changeset: ------------------------------------------------------------ revno: 3197 revision-id: alik@sun.com-20100831135426-h5a4s2w6ih1d8q2x parent: magnus.blaudd@sun.com-20100830120632-u3xzy002mdwueli8 committer: Alexander Nozdrin <alik@sun.com> branch nick: mysql-5.5-bugfixing timestamp: Tue 2010-08-31 17:54:26 +0400 message: Bug#55980 Character sets: supplementary character _bin ordering is wrong Problem: - ORDER BY for utf8mb4_bin, utf16_bin and utf32_bin returned results in a wrong order, because old functions (supporting only BMP range) were used to handle these collations. - Additionally, utf16_bin did not sort supplementary characters between U+D700 and U+E000, as WL#1213 specification specified. ------------------------------------------------------------
-
Alexander Nozdrin authored
```--------------------------------------------------------- revno: 3124 revision-id: dlenev@mysql.com-20100831090419-rzr5ktekby2gspm1 parent: alik@sun.com-20100827083901-x4wvtc10u9p7gcs9 committer: Dmitry Lenev <dlenev@mysql.com> branch nick: mysql-5.5-rt-56137 timestamp: Tue 2010-08-31 13:04:19 +0400 message: Bug #56137 "Assertion `thd->lock == 0' failed on upgrading from 5.1.50 to 5.5.6". Debug builds of the server aborted due to an assertion failure when DROP DATABASE statement was run on an installation which had outdated or corrupt mysql.proc table. Particularly this affected the mysql_upgrade tool which is run as part of 5.1 to 5.5 upgrade. The problem was that sp_drop_db_routines(), which was invoked during dropping of the database, could have returned without closing and unlocking mysql.proc table in cases when this table was not up-to-date with the current server. As a result further attempt to open and lock the mysql.event table, which was necessary to complete dropping of the database, ended up with an assert. This patch solves this problem by ensuring that sp_drop_db_routines() always closes mysql.proc table and releases metadata locks on it. This is achieved by changing open_proc_table_for_update() function to close tables and release metadata locks acquired by it in case of failure. This step also makes behavior of the latter function consistent with behavior of open_proc_table_for_read()/ open_and_lock_tables(). Test case for this bug was added to sp-destruct.test. ``` ---------------------------------------------------------
-
Alexander Nozdrin authored
-
Daniel Fischer authored
-
Alexander Nozdrin authored
-
- 30 Aug, 2010 8 commits
-
-
Gleb Shchepa authored
-
Gleb Shchepa authored
"Access compatibility" syntax The "wild" "DELETE FROM table_name.* ... USING ..." syntax for multi-table DELETE statements is documented but it was lost in the fix for the bug 30234. The table_ident_opt_wild parser rule has been added to restore the lost syntax.
-
Alexander Nozdrin authored
-
Dmitry Shulga authored
so test case has to be updated.
-
Alexander Nozdrin authored
-
Alexander Nozdrin authored
-
Alexander Nozdrin authored
-
Alexey Kopytov authored
-
- 28 Aug, 2010 1 commit
-
-
Alexander Nozdrin authored
-
- 27 Aug, 2010 6 commits
-
-
Marc Alff authored
-
Sergey Vojtovich authored
-
Alexey Kopytov authored
== MYSQL_TYPE_LONGLONG A MIN/MAX() function with a subquery as its argument could lead to a debug assertion on debug builds or wrong data on release ones. The problem was a combination of the following factors: - Item_sum_hybrid::fix_fields() might use the argument (args[0]) to calculate 'hybrid_field_type' which was later used to decide how the data should be sent to the client. - Item_sum::make_field() might use the argument again to calculate the field's type when sending result set metadata to the client. - The argument could be changed in between these two calls via Item::set_arg() leading to inconsistent metadata being reported. Here is what was happening for the bug's test case: 1. Item_sum_hybrid::fix_fields() calculates hybrid_field_type as MYSQL_TYPE_LONGLONG based on args[0] which is an Item::SUBSELECT_ITEM at that time. 2. A temporary table is created to execute the query. create_tmp_field_from_item() creates a Field_long object according to the subselect's max_length. 3. The subselect item in Item_sum_hybrid is replaced by the Item_field object referencing the newly created Field_long. 4. Item_sum::make_field() rightfully returns the MYSQL_TYPE_LONG type when calculating the result set metadata. 5. When sending the actual data, Item::send() relies on the virtual field_type() function which in our case returns previously calculated hybrid_field_type == MYSQL_TYPE_LONGLONG. It looks like the only solution is to never refer to the argument's metadata after the result metadata has been calculated in fix_fields(), since the argument itself may be different by then. In this sense, Item_sum::make_field() should never be used, because it may rely on the argument's metadata and is only called after fix_fields(). The "default" implementation in Item::make_field() should be used instead as it relies only on field_type(), but not on the argument's type. Fixed by removing Item_sum::make_field() so that the superclass implementation Item::make_field() is always used.
-
Ramil Kalimullin authored
Free memory allocated by the server for all plugins, with or without deinit() method.
-
Sergey Vojtovich authored
-
Sergey Vojtovich authored
not tested by ABI check plugin_audit.h and plugin_ftparser.h are now subject for ABI check. plugin.h is now tested implicitly. Also fixed broken ABI check cmake rules.
-
- 26 Aug, 2010 10 commits
-
-
Marc Alff authored
-
Christopher Powers authored
Handle combined instrument states of ENABLED and/or TIMED: ENABLED TIMED 1 1 Aggregate stats, increment counter 1 0 Increment counter 0 1 Do nothing 0 0 Do nothing
-
Alexander Nozdrin authored
-
Marc Alff authored
-
Marc Alff authored
-
Bjorn Munch authored
-
Alexey Kopytov authored
-
Alexander Barkov authored
Problem: trailing spaces were stripped using 8-bit code, so the truncation result length was incorrect, which led to an assertion failure. Fix: using multi-byte safe code.
-
Alexey Kopytov authored
-
Sergey Vojtovich authored
-