- 25 Mar, 2013 4 commits
-
-
Michael Widenius authored
-
Michael Widenius authored
-
unknown authored
During server shutdown, we need to wait for binlog checkpointing to finish in the binlog background thread before closing the binlog. This was not done, so we could get assert and failure to finish the final binlog checkpoint if shutdown happened in the middle.
-
Michael Widenius authored
-Change my_rnd() slightly to make it safer if two threads use it at the same time. -Avoid some sprintf and strmov in vio. -Changed thread_count to be automaticly incremented (instead of under LOCK_thread_count). -Thread cache now uses LOCK_thread_cache instead of LOCK_thread_count. -Moved delete thd out from LOCK_thread_count. -Save some mysql_cond_broadcast(&COND_thread_count) calls. -Removed call to getsockname() during connect. -Initialize random generator without locks. Other things: -Fixed test cases that depends on changes for LOCK_grant -Added thread_safe_decrement32() and thread_safe_increment32() -Removed sql_rnd_with_mutex() and get_thread_running() -In check_table_access() don't lock LOCK_grant if we can resolve the grant with user or db level grants (the normal case). -Don't use a lock for setting THD->query_id. -Fixed bug where thd->set_query_id() could be set to same value by multiple threads. Thanks to Yoshinori Matsunobu for the benchmark of connection speed and to Domas Mituzas for the inspiration for many of the fixes. include/violite.h: Change desc to a string pointer mysql-test/suite/perfschema/r/all_instances.result: Added new mutex mysql-test/suite/perfschema/t/func_mutex.test: Test for LOCK_system_variables_hash instead of LOCK_grant, as LOCK_grant is not anymore always taken for SELECT's. mysys/my_gethwaddr.c: More DBUG mysys/my_rnd.c: Change my_rnd() slightly to make it safer if two threads use it at the same time. sql/event_scheduler.cc: Changed thread_count to be automically incremented Moved some safe things out from LOCK_thread_count. Simplify deleting of THD for running thread. sql/mysqld.cc: Changed thread_count to be automically incremented Thread cache now uses LOCK_thread_cache instead of LOCK_thread_count Added delete_running_thd() Moved delete thd out from LOCK_thread_count More DBUG Only call mysql_cond_broadcast(&COND_thread_count) if thread_count is 0 Removed call to getsockname() (old not anymore needed check) sql/mysqld.h: Removed sql_rnd_with_mutex() (not needed anymore) Removed not used function get_thread_running() Added thread_safe_decrement32() and thread_safe_increment32() Simplified dec_thread_running() and inc_thread_running() next_query_id() should return the original value for global_query_id, not the next one. (Bug introduced with MySQL 5.5 merge). sql/sql_acl.cc: In check_table_access() don't lock LOCK_grant if we can resolve the grant with user or db level grants (the normal case). sql/sql_class.cc: Removed thd_lock_thread_count() and thd_unlock_thread_count() Initialize random generator without locks Don't use a lock for setting THD->query_id. (This is only accessed by thread owning the THD) sql/sql_class.h: Don't use a lock for setting THD->query_id. sql/sql_insert.cc: Changed thread_count to be automically incremented sql/sql_parse.cc: Changed thread_count to be automically incremented Fixed bug where thd->set_query_id() could be set to same value by multiple threads. vio/vio.c: Don't generate 'desc' with sprintf/strmov. Assign a pointer instead. (Good enough as this is just for debugging)
-
- 19 Mar, 2013 1 commit
-
-
Michael Widenius authored
-Change my_rnd() slightly to make it safer if two threads use it at the same time. -Avoid some sprintf and strmov in vio. -Changed thread_count to be automically incremented (instead of under LOCK_thread_count). -Thread cache now uses LOCK_thread_cache instead of LOCK_thread_count. -Moved delete thd out from LOCK_thread_count. -Save some mysql_cond_broadcast(&COND_thread_count) calls. -Removed call to getsockname() during connect. -Initialize random generator without locks. Other things: -Added thread_safe_decrement32() and thread_safe_increment32() -Removed sql_rnd_with_mutex() and get_thread_running() Thanks to Yoshinori Matsunobu for the benchmark of connection speed and to Domas Mituzas for the inspiration for many of the fixes. include/violite.h: Change desc to a string pointer mysql-test/suite/perfschema/r/all_instances.result: Added new mutex mysys/my_rnd.c: Change my_rnd() slightly to make it safer if two threads use it at the same time. sql/event_scheduler.cc: Changed thread_count to be automically incremented Moved some safe things out from LOCK_thread_count. Simplify deleting of THD for running thread. sql/mysqld.cc: Changed thread_count to be automically incremented Thread cache now uses LOCK_thread_cache instead of LOCK_thread_count Added delete_running_thd() Moved delete thd out from LOCK_thread_count More DBUG_ENTER Only call mysql_cond_broadcast(&COND_thread_count) if thread_count is 0 Removed call to getsockname() (old not anymore needed check) sql/mysqld.h: Removed sql_rnd_with_mutex() (not needed anymore) Removed not used function get_thread_running() Added thread_safe_decrement32() and thread_safe_increment32() Simplified dec_thread_running() and inc_thread_running() sql/sql_class.cc: Removed thd_lock_thread_count() and thd_unlock_thread_count() Initialize random generator without locks sql/sql_insert.cc: Changed thread_count to be automically incremented sql/sql_parse.cc: Changed thread_count to be automically incremented vio/vio.c: Don't generate 'desc' with sprintf/strmov. Assign a pointer instead. (Good enough as this is just for debugging)
-
- 17 Mar, 2013 2 commits
-
-
Michael Widenius authored
STRAIGHT_JOIN couldn't be combined with NATURAL or USING(), INNER JOIN not with NATURAL (MDEV-4271, MySQL Bug #35268) Separate rules existed for "natural" (non-outer) joins and for STRAIGHT_JOIN, with the only difference code wise being that with STRAIGHT_JOIN the "straight" property of the right side table was set before calling the appropriate add_...() function. The "natural_join" parser rule has now been extended to also accept STRAIGHT_JOIN, and the rule result value is set to 1 for straight joins, 0 otherwise, so acting as a "straight" flag that can directly be assigned to the "straight" property of the right side table. The rule parsing NATURAL JOIN was hard coded to accept just this keyword combination, without support for either STRAIGHT_JOIN or the optional INNER. The "natural_join" rule has now been split up in an inner "inner_join" rule that matches the JOIN, INNER JOIN and STRAIGHT_JOIN cases while "natural_join" also matches CROSS JOIN. The NATURAL rule has been changed to accept "inner_join" instead of just JOIN, so now NATURAL STRAIGHT_JOIN and NATURAL INNER JOIN also work as expected. As a side effect the removal of the duplciated rules for STRAIGHT_JOIN handling has reduced the shift/reduce conflict count by one. mysql-test/r/join.result: Added new test cases mysql-test/t/join.test: Added new test cases sql/sql_yacc.yy: The "natural_join" parser rule was extended to also accept STRAIGHT_JOIN NATURAL STRAIGHT_JOIN and NATURAL INNER JOIN also now work as expected
-
Michael Widenius authored
-
- 12 Mar, 2013 1 commit
-
-
Alexander Barkov authored
Mini-benchmarking demonstrates up to 10% improvement in latin1->utf8 conversion. modified: @ strings/ctype-latin1.c redundant test in ctype-latin1.c removed @ strings/ctype-utf8.c my_uni_utf8 rewritten in a more efficient way
-
- 07 Mar, 2013 1 commit
-
-
Sergey Petrunya authored
Backport the code that runs cassandra.test only when Cassandra is present and running from 10.0 to 10.0-base.
-
- 27 Feb, 2013 1 commit
-
-
Michael Widenius authored
-
- 25 Feb, 2013 1 commit
-
-
unknown authored
-
- 15 Feb, 2013 1 commit
-
-
Michael Widenius authored
mysql-test/suite/heap/heap.result: Added test case mysql-test/suite/heap/heap.test: Added test case storage/heap/hp_delete.c: Fixed that we don't change order of keys for the current key when we delete them from the hash table. Fixed that 'current_hash_ptr' is correct after heap_delete_key(). Don't "reset current_hash_ptr" on delete; This will improve time a lot for delete of rows when not all rows matches the search criteria.
-
- 07 Feb, 2013 2 commits
-
-
Elena Stepanova authored
committer: Sergei Golubchik <sergii@pisem.net> fix for a valgrind builds. my_alloca() cannot have MY_THREAD_SPECIFIC, because can be used outside of the THD context.
-
unknown authored
MDEV-537 Make multi-column non-top level subqueries to be executed via index (index/unique subquery) instead of single_select_engine This task changes the IN-EXISTS rewrite for multi-column subqueries "(a, b) IN (select b, c ...)" to work in the same way as for single-column subqueries "a IN (select b ...) with respect to the injection of NULL-rejecting predicates. More specifically, the method Item_in_subselect::create_row_in_to_exists_cond() adds Item_is_not_null_test and Item_func_trig_cond only if the left IN operand can be NULL. Not having these predicates when not necessary, makes it possible to rewrite the subquery into a "unique_subquery" or "index_subquery" when there is a suitable index on the only subquery table.
-
- 05 Feb, 2013 1 commit
-
-
Sergei Golubchik authored
otherwise safemalloc and my_malloc_size_cb_func will use current_thd before it's defined
-
- 04 Feb, 2013 3 commits
-
-
unknown authored
-
Sergei Golubchik authored
-
unknown authored
-
- 31 Jan, 2013 1 commit
-
-
unknown authored
Add a wait for binlog checkpoint to avoid thread scheduling giving different binlog order at random.
-
- 30 Jan, 2013 2 commits
-
-
Sergei Golubchik authored
-
unknown authored
When CHANGE MASTER fails, it may or may not have already added the Master_info * to the index. Implement logic that properly handles removal and freeing in both cases.
-
- 29 Jan, 2013 5 commits
-
-
Sergei Golubchik authored
to storage/cassandra/CMakeLists.txt
-
Sergei Golubchik authored
storage/cassandra/CMakeLists.txt: more thourough CHECK_CXX_SOURCE_COMPILES test, that checks whether boost::shared_ptr can work with --fno-rtti don't install anything in INSTALL_SYSCONFDIR, if the latter is unset
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
- 28 Jan, 2013 7 commits
-
-
Vladislav Vaintroub authored
-
Sergei Golubchik authored
-
unknown authored
from MariaDB 10.0. The bug in mdev-3948 was an instance of the problem fixed by Sergey's patch in 10.0 - namely that the range optimizer could change table->[read | write]_set, and not restore it. revno: 3471 committer: Sergey Petrunya <psergey@askmonty.org> branch nick: 10.0-serg-fix-imerge timestamp: Sat 2012-11-03 12:24:36 +0400 message: # MDEV-3817: Wrong result with index_merge+index_merge_intersection, InnoDB table, join, AND and OR conditions Reconcile the fixes from: # # guilhem.bichot@oracle.com-20110805143029-ywrzuz15uzgontr0 # Fix for BUG#12698916 - "JOIN QUERY GIVES WRONG RESULT AT 2ND EXEC. OR # AFTER FLUSH TABLES [-INT VS NULL]" # # guilhem.bichot@oracle.com-20111209150650-tzx3ldzxe1yfwji6 # Fix for BUG#12912171 - ASSERTION FAILED: QUICK->HEAD->READ_SET == SAVE_READ_SET # and # and related fixes from: BUG#1006164, MDEV-376: Now, ROR-merged QUICK_RANGE_SELECT objects make no assumptions about the values of table->read_set and table->write_set. Each QUICK_ROR_SELECT has (and had before) its own column bitmap, but now, all QUICK_ROR_SELECT's functions that care: reset(), init_ror_merged_scan(), and get_next() will set table->read_set when invoked and restore it back to what it was before the call before they return. This allows to avoid the mess when somebody else modifies table->read_set for some reason.
-
Sergei Golubchik authored
-
unknown authored
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
- 26 Jan, 2013 2 commits
-
-
Sergei Golubchik authored
MDEV-3875 Wrong result (missing row) on a DISTINCT query with the same subquery in the SELECT list and GROUP BY fix remove_dup_with_hash_index() and remove_dup_with_compare() to take NULLs into account
-
Vladislav Vaintroub authored
-
- 25 Jan, 2013 5 commits
-
-
Michael Widenius authored
-
Vladislav Vaintroub authored
-
Michael Widenius authored
The problem was that a temporary table was re-created as a non-temporary table. mysql-test/suite/maria/truncate.result: Added test cases mysql-test/suite/maria/truncate.test: Added test cases sql/sql_truncate.cc: Mark that table to be created is a temporary table storage/maria/ha_maria.cc: Ensure that temporary tables are not transactional.
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
Miscellaneous workarounds for drop-in compatibility problems with Linux distributions, arounf versioning of the MySQL 5.5 client shared library. There seems to be 3 different ways major distributions handle versioning 1. Fedora (also Mageia, and likely other Redhat descendants) way old, 5.1 API functions are given version libmysqlclient_16 new API functions (client plugins, mysql_stmt_next ) are given version libmysqlclient_18 some extra functions beyond API are exported. some functions are renamed. 2.Debian Wheezy way all functions are given libmysqlclient_18 version 3. Ubuntu way (or MySQL/MariaDB download packages) no versioning UIp to this fix, MariaDB distributions did not have any versioning in the libraries, this rendered client library incompatible to distributions thus exchanging distribution's libmysqlclient.so.18.0.0 with MariaDB's did not work nicely (anywhere but on Ubuntu) THE FIX is to build libraries the same way as distributions do it - when building RPMs, use same version script as Fedora does, Make sure to export extra-symbols, the same as Fedora exports. - when building DEBs, use the same version script as Debian Wheezy - do not use version scripts otherwise Also, makes sure that extensions of MySQL APIs (asynchronous client functionality) is exported by the shared libraries.
-