- 22 Oct, 2010 2 commits
-
-
Igor Babaev authored
After the patch for bug 663840 had been applied the test case for bug 663818 triggered the assert introduced by this patch. It happened because the the patch turned out to be incomplete: the space needed for a key entry must be taken into account for the record written into the buffer, and, for the next record as well, when figuring out whether the record being written is the last for the buffer or not.
-
Igor Babaev authored
When adding a new record into the join buffer that is employed by BNLH join algorithm the writing procedure JOIN_CACHE::write_record_data checks whether there is enough space for the record in the buffer. When doing this it must take into account a possible new key entry added to the buffer. It might happen, as it has been demonstrated by the bug test case, that there is enough remaining space in the buffer for the record, but not for the additional key entry for this record. In this case the key entry overwrites the end of the record that might cause a crash or wrong results. Fixed by taking into account a possible addition of new key entry when estimating the remaining free space in the buffer.
-
- 18 Oct, 2010 3 commits
-
-
Igor Babaev authored
-
Igor Babaev authored
-
Igor Babaev authored
about the employed join algorithms. Refactored constructors of the JOIN_CACHE* classes.
-
- 08 Oct, 2010 1 commit
-
-
Sergey Petrunya authored
-
- 07 Oct, 2010 1 commit
-
-
Igor Babaev authored
-
- 06 Oct, 2010 1 commit
-
-
Igor Babaev authored
Employed the same kind of optimization as in the fix for the cases when join buffer is used. The optimization performs early evaluation of the conditions from on expression with table references to only outer tables of an outer join.
-
- 04 Oct, 2010 1 commit
-
-
Igor Babaev authored
The fix aligns join_null_complements() with join_matching_records() making both call generate_full_extensions(). There should not be any difference between how the WHERE clause is applied to NULL-complemented records from a partial join and how it is applied to other partially joined records:the latter happens in join_matching_records(), precisely in generate_full_extensions().
-
- 02 Oct, 2010 1 commit
-
-
Igor Babaev authored
the fix for bug 52636.
-
- 01 Oct, 2010 3 commits
-
-
Igor Babaev authored
-
Igor Babaev authored
Added a possibility not to factor out the condition pushed to the access index out of the condition pushed to a joined table. This is useful for the condition pushed to the index when a hashed join buffer for BKA is employed. In this case the index condition may be false for some, but for all records with the same key. So the condition must be checked not only after index lookup, but after fetching row data as well, and it makes sense not to factor out the condition from the condition checked after reading row data, The bug happened because the condition pushed to an index always was factor out from the condition pushed to the accessed table. ****** Fixed bug #54539. Added a possibility not to factor out the condition pushed to the access index out of the condition pushed to a joined table. This is useful for the condition pushed to the index when a hashed join buffer for BKA is employed. In this case the index condition may be false for some, but for all records with the same key. So the condition must be checked not only after index lookup, but after fetching row data as well, and it makes sense not to factor out the condition from the condition checked after reading row data, The bug happened because the condition pushed to an index always was factor out from the condition pushed to the accessed table.
-
Igor Babaev authored
Added a possibility not to factor out the condition pushed to the access index out of the condition pushed to a joined table. This is useful for the condition pushed to the index when a hashed join buffer for BKA is employed. In this case the index condition may be false for some, but for all records with the same key. So the condition must be checked not only after index lookup, but after fetching row data as well, and it makes sense not to factor out the condition from the condition checked after reading row data, The bug happened because the condition pushed to an index always was factor out from the condition pushed to the accessed table.
-
- 28 Sep, 2010 1 commit
-
-
Igor Babaev authored
Applied the fix for bug #47217 from the mysql-6.0 codebase. The patch adds not null predicates generated for the left parts of the equality predicates used for ref accesses. This is done for such predicates both in where conditions and on conditions. For the where conditions the not null predicates were generated but in 5.0/5.1 they actually never were used due to some lame merge from 4.1 to 5.0. The fix for bug #47217 made these predicates to be used in the condition pushed to the tables. Yet only this patch generates not null predicates for equality predicated from on conditions of outer joins. This patch introduces a performance regression that can be observed on a test case from null_key.test. The regression will disappear after the fix for bug #57024 from mariadb-5.1 is pulled into mariadb-5.3. The patch contains many changes in the outputs of the EXPLAIN commands since generated not null predicates are considered as parts of the conditions pushed to join tables and may add 'Usingwhere' in some rows of EXPLAINs where there used to be no such comments.
-
- 23 Sep, 2010 2 commits
-
-
Igor Babaev authored
-
Igor Babaev authored
-
- 22 Sep, 2010 1 commit
-
-
Igor Babaev authored
-
- 21 Sep, 2010 1 commit
-
-
Igor Babaev authored
When an incremental join cache is used to join a table whose fields are not referenced anywhere in the query the association pointer to the last record in the such cache can be the same as the pointer to the end of the buffer. The function JOIN_CACHE_BKA::get_next_key must take into consideration this when iterating over the keys of the records from the join buffer. The assertion in JOIN_TAB_SCAN_MRR::next also must take this into consideration. Borrowed a slightly changed test case from a patch attached to the bug #52394.
-
- 03 Sep, 2010 1 commit
-
-
Igor Babaev authored
-
- 02 Sep, 2010 2 commits
-
-
Igor Babaev authored
-
Igor Babaev authored
-
- 01 Sep, 2010 3 commits
-
-
Igor Babaev authored
-
Igor Babaev authored
-
Igor Babaev authored
-
- 31 Aug, 2010 2 commits
-
-
Igor Babaev authored
-
Igor Babaev authored
-
- 30 Aug, 2010 1 commit
-
-
unknown authored
The bug is a result of the following change by Monty: Revision Id: monty@askmonty.org-20100716073301-gstby2062nqd42qv Timestamp: Fri 2010-07-16 10:33:01 +0300 Where Monty changed the queues interface and implementation. The fix adjusts the queue_remove call to the new interface. mysql-test/r/subselect_partial_match.result: Added new file for tests related to MWL#89. mysql-test/t/subselect_partial_match.test: Added new file for tests related to MWL#89.
-
- 09 Aug, 2010 2 commits
-
-
Sergey Petrunya authored
-
unknown authored
Incorrect limitation on number of parameters removed. mysql-test/r/subselect_cache.result: Test suite added. mysql-test/t/subselect_cache.test: Test suite added. sql/sql_class.h: Iterator changed. sql/sql_expression_cache.cc: Incorrect limitation removed. Removing NULL references from subquery parameter list added.
-
- 05 Aug, 2010 1 commit
-
-
unknown authored
-
- 30 Jul, 2010 1 commit
-
-
unknown authored
Removed indirect reference in equalities for cache index lookup. We should use a direct reference because some optimization of the query may optimize out a condition predicate and if the outer reference is the only element of the condition predicate the indirect reference becomes NULL. We can resolve correctly the indirect reference in Expression_cache_tmptable::make_equalities because it is called before optimization of the cached subquery. mysql-test/r/subquery_cache.result: The test suite for the bug added. mysql-test/t/subquery_cache.test: The test suite for the bug added. sql/sql_expression_cache.cc: Removed indirect reference in equalities for cache index lookup.
-
- 29 Jul, 2010 1 commit
-
-
unknown authored
Added get_tmp_table_item() to cache wrapper as it has all not simple Items (Item_func, Item_field, Item_subquery). mysql-test/r/subquery_cache.result: Tests for bugs fixed. mysql-test/t/subquery_cache.test: Tests for bugs fixed. sql/item.cc: Added get_tmp_table_item() to cache wrapper as it has all not simple Items (Item_func, Item_field, Item_subquery). sql/item.h: Added get_tmp_table_item() to cache wrapper as it has all not simple Items (Item_func, Item_field, Item_subquery).
-
- 23 Jul, 2010 1 commit
-
-
unknown authored
check_join_cache_usage() by the change: Revno: 2793 Revision Id: igor@askmonty.org-20091221022615-kx5ieiu0okmiupuc Timestamp: Sun 2009-12-20 18:26:15 -0800 Backport into MariaDB-5.2 the following: WL#2771 "Block Nested Loop Join and Batched Key Access Join"
-
- 16 Jul, 2010 5 commits
-
-
unknown authored
was not cleaned up between PS re-executions. The reason was two-fold: - a merge with mysql-6.0 missed select_union::cleanup() that should have cleaned up the temp table, and - the subclass of select_union used by materialization didn't call the base class cleanup() method.
-
Sergey Petrunya authored
-
Sergey Petrunya authored
- Let "mysqld --help --verbose" list all optimizer options - Make it possible to add new @@optimizer_switch flags w/o causing .result changes all over the testsuite: = Remove "select @@optimizer_switch" from tests that do not need all switches = Move @@optimizer_switch-specific tests to t/optimizer_switch.test
-
Michael Widenius authored
Updated configure.in to have version 5.3 configure.in: Updated to version 5.3.0
-
Michael Widenius authored
Improved speed of thr_alarm from O(N) to O(1). thr_alarm is used to handle timeouts and kill of connections. Fixed compiler warnings. queues.h and queues.c are now based on the UNIREG code and thus made BSD. Fix code to use new queue() interface. This mostly affects how you access elements in the queue. If USE_NET_CLEAR is not set, don't clear connection from unexpected characters. This should give a speed up when doing a lot of fast queries. Fixed some code in ma_ft_boolean_search.c that had not made it from myisam/ft_boolean_search.c include/queues.h: Use UNIREG code base (BSD) Changed init_queue() to take all initialization arguments. New interface to access elements in queue include/thr_alarm.h: Changed to use time_t instead of ulong (portability) Added index_in_queue, to be able to remove random element from queue in O(1) mysys/queues.c: Use UNIREG code base (BSD) init_queue() and reinit_queue() now takes more initialization arguments. (No need for init_queue_ex() anymore) Now one can tell queue_insert() to store in the element a pointer to where element is in queue. This allows one to remove elements from queue in O(1) instead of O(N) mysys/thr_alarm.c: Use new option in queue() to allow fast removal of elements. Do less inside LOCK_alarm mutex. This should give a major speed up of thr_alarm usage when there is many threads sql/create_options.cc: Fixed wrong printf sql/event_queue.cc: Use new queue interface() sql/filesort.cc: Use new queue interface() sql/ha_partition.cc: Use new queue interface() sql/ha_partition.h: Fixed compiler warning sql/item_cmpfunc.cc: Fixed compiler warning sql/item_subselect.cc: Use new queue interface() Removed not used variable sql/net_serv.cc: If USE_NET_CLEAR is not set, don't clear connection from unexpected characters. This should give a speed up when doing a lot of fast queries at the disadvantage that if there is a bug in the client protocol the connection will be dropped instead of being unnoticed. sql/opt_range.cc: Use new queue interface() Fixed compiler warnings sql/uniques.cc: Use new queue interface() storage/maria/ma_ft_boolean_search.c: Copy code from myisam/ft_boolean_search.c Use new queue interface() storage/maria/ma_ft_nlq_search.c: Use new queue interface() storage/maria/ma_sort.c: Use new queue interface() storage/maria/maria_pack.c: Use new queue interface() Use queue_fix() instead of own loop to fix queue. storage/myisam/ft_boolean_search.c: Use new queue interface() storage/myisam/ft_nlq_search.c: Use new queue interface() storage/myisam/mi_test_all.sh: Remove temporary file from last run storage/myisam/myisampack.c: Use new queue interface() Use queue_fix() instead of own loop to fix queue. storage/myisam/sort.c: Use new queue interface() storage/myisammrg/myrg_queue.c: Use new queue interface() storage/myisammrg/myrg_rnext.c: Use new queue interface() storage/myisammrg/myrg_rnext_same.c: Use new queue interface() storage/myisammrg/myrg_rprev.c: Use new queue interface()
-
- 15 Jul, 2010 2 commits
-
-
Sergey Petrunya authored
range plans with identical costs.
-
unknown authored
subquery execution, where the the REF buffer format was mistaken to be in record format instead of key format. The error was that the null byte for all fields of the record was in the front of the buffer, and not before each field data.
-