- 15 Dec, 2011 1 commit
-
-
Sergey Petrunya authored
- Correctly handle plan refinement stage for LooseScan plans: run create_ref_for_key() if LooseScan plan includes a ref access, and if we don't have any fixed key components, switch to a full index scan.
-
- 14 Dec, 2011 3 commits
-
-
Sergey Petrunya authored
QPLAN_TMP_DISK, like Aria version does (otherwise slow query log would show Tmp_table_on_disk=No when it should have said Yes)
-
Sergey Petrunya authored
-
Sergey Petrunya authored
- Let JTBM optimization code handle the case where the subquery is degenerate and doesn't have a join query plan. Regular materialization would fall back to IN->EXISTS for such cases. Semi-Join materialization does not have such option, instead we introduce and use "constant JTBM join tabs".
-
- 13 Dec, 2011 6 commits
-
-
Igor Babaev authored
-
Igor Babaev authored
A memory overwrite in the function test_if_skip_sort_order() could cause a crash for some queries with subqueries.
-
Sergey Petrunya authored
- Do a "more thorough" cleanup of SJ-Materialization join tab in JOIN_TAB::cleanup. The bug was due to the fact that JOIN_TAB::cleanup() may be called multiple times for the same tab if the join has grouping.
-
unknown authored
-
Michael Widenius authored
-
Michael Widenius authored
- Changed storage to be 2 bytes instead of sizeof(size_t) (simple optimization) - Fixed bug when using query_cache_strip_comments and query that started with '(' - Fixed DBUG_PRINT() that used wrong (not initialized) variables. mysql-test/mysql-test-run.pl: Added some space to make output more readable. mysql-test/r/query_cache.result: Updated test results mysql-test/t/query_cache.test: Added test with query_cache_strip_comments sql/mysql_priv.h: Added QUERY_CACHE_DB_LENGTH_SIZE sql/sql_cache.cc: Fixed bug when using query_cache_strip_comments and query that started with '(' Store db length in 2 characters instead of size_t. Get db length from correct position (earlier we had an error when query started with ' ') Fixed DBUG_PRINT() that used wrong (not initialized) variables.
-
- 12 Dec, 2011 3 commits
-
-
Sergei Golubchik authored
-
unknown authored
The range optimizer incorrectly chose a loose scan for group by when there is a correlated WHERE condition. This range access method cannot be executed for correlated conditions also with the "range checked for each record" because generally the range access method can change for each outer record. Loose scan destructively changes the query plan and removes the GROUP operation, which will result in wrong query plans if another range access is chosen dynamically.
-
Igor Babaev authored
The cause of the reported assertion failure was a division of a double value by 0.
-
- 11 Dec, 2011 6 commits
-
-
Igor Babaev authored
-
Igor Babaev authored
If the duplicate elimination strategy is used for a semi-join and potentially one of the block-based join algorithms can be employed to join the inner tables of the semi-join then sorting of the head (first non-constant) table for a query with ORDER BY / GROUP BY cannot be used.
-
Igor Babaev authored
-
Michael Widenius authored
-
Michael Widenius authored
- Instead of supressing all errors, only suppress safe ones like: ER_DUP_KEY, ER_BAD_NULL_ERROR, ER_SUBQUERY_NO_1_ROW, ER_ROW_IS_REFERENCED_2
-
Michael Widenius authored
no_error handling for select (used by INSERT ... SELECT) still needs to be fixed, but I will do that in a separate commit
-
- 09 Dec, 2011 1 commit
-
-
Igor Babaev authored
The function setup_sj_materialization_part1() forgot to set the value of TABLE::map for any materialized IN subquery. This could lead to wrong results for queries with subqueries that were converted to queries with semijoins.
-
- 08 Dec, 2011 3 commits
-
-
Alexey Botchkov authored
Coinciding nodes can appear as a result of DOUBLE inaccuracy. We should test that before we start the loop. Also the spatial relations can be calculated faster if we check MBR relations first. And we do have the shape's MBR-s now. per-file comments: sql/gcalc_slicescan.cc set_extent() method added. bug #901655 ST_BUFFER asserts with a coplicated shape. sql/gcalc_slicescan.h set_extent() method declared. bug #901655 ST_BUFFER asserts with a coplicated shape. sql/gcalc_tools.cc bug #901655 ST_BUFFER asserts with a coplicated shape. checks for equal nodes added. sql/item_geofunc.cc bug #901655 ST_BUFFER asserts with a coplicated shape. MBR for the shapes calculated, and MBR checks added before we start the heavy calculations. sql/spatial.h bug #901655 ST_BUFFER asserts with a coplicated shape. MBR::buffer() method implemented.
-
unknown authored
Analysis: The class member QUICK_GROUP_MIN_MAX_SELECT::seen_first_key was not reset between subquery re-executions. Thus each subsequent execution continued from the group that was reached by the previous subquery execution. As a result loose scan reached end of file much earlier, and returned empty result where it shouldn't. Solution: Reset seen_first_key before each re-execution of the loose scan.
-
Sergey Petrunya authored
- if we're considering FirstMatch access with one inner table, and @@optimizer_switch has semijoin_with_cache flag, calculate costs as if we used join cache (because we will be able to do so)
-
- 07 Dec, 2011 4 commits
-
-
Sergey Petrunya authored
-
Sergey Petrunya authored
- opt_sum_query() should not assume that join tables from sj-materialization have known numbers of rows.
-
Sergey Petrunya authored
-
Sergey Petrunya authored
- Part2: safety and code cleanup
-
- 06 Dec, 2011 5 commits
-
-
Igor Babaev authored
The execution plan cannot use sorting on the first table from the sequence of the joined tables if it plans to employ the block-based hash join algorithm.
-
Sergey Petrunya authored
- Part 1 of the fix: for semi-join merged subqueries, calling child_join->optimize() until we're done with all PS-lifetime optimizations in the parent.
-
Igor Babaev authored
The optimizer must ignore any possible hash join key when looking for the query execution plan with join_cache_level set to 0.
-
Igor Babaev authored
-
Igor Babaev authored
-
- 05 Dec, 2011 3 commits
-
-
Sergey Petrunya authored
- Make create_tmp_table() set KEY_PART_INFO attributes for the keys it creates. This wasn't needed before but is needed now, when temp. tables that are results of SJ-Materialization are being used for joins. This particular bug depended on HA_VAR_LENGTH_PART being set, but also added code to set HA_BLOB_PART and HA_NULL_PART when appropriate.
-
Igor Babaev authored
KEYUSE elements for a possible hash join key are not sorted by field numbers of the second table T of the hash join operation. Besides some of these KEYUSE elements cannot be used to build any key as their key expressions depend on the tables that are planned to be accessed after the table T. The code before the patch did not take this into account and, as a result, execition of a query the employing block-based hash join algorithm could cause a crash or return a wrong result set.
-
Sergey Petrunya authored
-
- 04 Dec, 2011 2 commits
-
-
Sergey Petrunya authored
in EXPLAIN as select_type==MATERIALIZED. Before, we had select_type==SUBQUERY and it was difficult to tell materialized subqueries from uncorrelated scalar-context subqueries.
-
Igor Babaev authored
If has been decided that the first match strategy is to be used to join table T from a semi-join nest while no buffer can be employed to join this table then no join buffer can be used to join any table in the join sequence between the first one belonging to the semi-join nest and table T.
-
- 03 Dec, 2011 3 commits
-
-
Sergei Golubchik authored
-
Michael Widenius authored
Fixed prompt on reconnect in mysql client client/mysql.cc: Free server_version for reconnect. This ensures that prompt is correct if reconnecting to a different server. scripts/mytop.sh: Added handler and temporary table usage
-
Michael Widenius authored
-