summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Added handler and temporary table usage to mytopMichael Widenius2011-12-032-2/+38
| | | | | | | | | | 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
* Added new file (for netware)Michael Widenius2011-12-022-0/+13
| | | | Added some file to ignore
* Fixes for netware by Guenter KnaufMichael Widenius2011-12-025-400/+404
|
* Patch to get MariaDB to compile on CYGWIN; By Guenter KnaufMichael Widenius2011-12-023-2/+9
| | | | | | | | | | | | Increased number of locks in thr_lock (used only when testing) include/my_global.h: Patch for CYGWIN mysys/my_getsystime.c: Patch for CYGWIN mysys/thr_lock.c: Increase number of locks for testing
* Fixed LP bug #898073.Igor Babaev2011-11-303-2/+64
| | | | | | | | | The tables from the same semi-join or outer join nest cannot use join buffers if in the join sequence of the query execution plan they are separated by a table that is planned to be joined without usage of a join buffer.
* Merge the fix of bug lp:825051unknown2011-11-307-1/+147
|\
| * Fixed bug lp:825051unknown2011-11-297-1/+147
| | | | | | | | | | | | | | | | | | The cause of the wrong result was that Item_ref_null_helper::get_date() didn't use a method of the *_result() family, and fetched the data for the field from the current row instead of result_field. Changed to use the correct *_result() method, like to all other similar methods of Item_ref_null_helper.
* | Added test suite for the LP BUG#885162 (fixed by the patch for LP BUG#859375 ↵unknown2011-11-296-0/+93
|/ | | | and LP BUG#887458).
* bug 857066 Wrong result with ST_DISJOINT when using an index.Alexey Botchkov2011-11-291-1/+1
| | | | | | | | | | DISJOINT can't be properly optimized with the RTree keys in MyISAM also. per-file comments: storage/myisam/rt_index.c bug 857066 Wrong result with ST_DISJOINT when using an index. don't optimize DISJOINT with the RTree keys.
* bug 857066 Wrong result with ST_DISJOINT when using an indexAlexey Botchkov2011-11-291-1/+1
| | | | | | | | | | | the ST_DISJOINT can't be properly optimized with the RTree key at the moment. per-file comments: storage/maria/ma_rt_index.c bug 857066 Wrong result with ST_DISJOINT when using an index disabled optimization for the DISJOINT case.
* Fix bugs lp:833777, lp:894397unknown2011-11-287-8/+87
| | | | | | | | | | | | | | | Analysis: lp:894397 was a consequence of a prior incorrect fix of lp:833777 which didn't take into account that even when all tables are constant there may be correlated conditions, and the where clause is not equivalent to the constant conditions. Solution: When there are constant tables only, evaluate only the conditions that reference outer fields, because the constant conditions are already checked, and the where clause doesn't have other conditions than constant ones, and outer referencing ones. The fix for lp:894397 also fixes lp:833777.
* Fixed LP BUG#747278unknown2011-11-2810-1/+491
| | | | | | | | | | | | | The problem was that when we have single row subquery with no rows Item_cache(es) which represent result row was not null and being requested via element_index() returned random value. The fix is setting all Item_cache(es) in NULL before executing the query (reset() method) which guaranty NULL value of whole query or its elements requested in any way if no rows was found. set_null() method was added to Item_cache to guaranty correct NULL value in case of reseting the cache.
* Set new default values for the optimizer switch flags 'derived_merge'Igor Babaev2011-11-2649-21/+208
| | | | and 'derived_with_keys'. Now they are set on by default.
* MergeSergey Petrunya2011-11-2625-729/+1154
|\
| * Subquery code cleanups:Sergey Petrunya2011-11-254-56/+48
| | | | | | | | | | | | - Make functions that operate on SJ_TMP_TABLE be member functions - Make Loose_scan_opt data members private
| * Update test resultsSergey Petrunya2011-11-251-2/+2
| |
| * Update test resultsSergey Petrunya2011-11-254-14/+14
| |
| * Remove garbage commentsSergey Petrunya2011-11-251-8/+0
| |
| * MergeSergey Petrunya2011-11-2519-663/+1104
| |\
| | * Semi-join optimizations code cleanup part 2:Sergey Petrunya2011-11-2517-249/+263
| | | | | | | | | | | | | | | | | | | | | | | | - Make EXPLAIN display "Start temporary" at the start of the fanout (it used to display at the first table whose rowid gets into temp. table which is not that useful for the user) - Updated test results (all checked)
| | * Semi-join optimizations code cleanup:Sergey Petrunya2011-11-236-429/+720
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Break down POSITION/advance_sj_state() into four classes representing potential semi-join strategies. - Treat all strategies uniformly (before, DuplicateWeedout was special as it was the catch-all strategy. Now, we're still relying on it to be the catch-all, but are able to function,e.g. with firstmatch=on,duplicate_weedout=off. - Update test results (checked)
| | * BUG#887468: Second assertion `keypart_map' failed in maria_rkey with semijoinSergey Petrunya2011-11-123-1/+137
| | | | | | | | | | | | | | | - in advance_sj_state: Do not try to construct LooseScan strategy if we're already behind the last LooseScan table.
* | | Remove garbage commentSergey Petrunya2011-11-251-1/+0
|/ /
* | Currently innodb_plugin does not support ICP. Part2.Igor Babaev2011-11-242-1/+7
| |
* | Added valgrind suppression for an error due tounknown2011-11-241-0/+9
| | | | | | | | http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=577135
* | Fix bug lp:894326unknown2011-11-242-2/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The patch also fixes an unrelated compiler warning. Analysis: The temporary table created during SJ-materialization might be used for sorting for a group by operation. The sort buffers for this internal temporary table were not cleared by the execution code after each subquery re-execution. This resulted in a memory leak detected by valgrind. Solution: Cleanup the sort buffers for the semijon tables as well. sql/item_subselect.cc: - Fix a compiler warning and add logic to revert to table scan partial match when there are more rows in the materialized subquery than there can be bits in the NULL bitmap index used for partial matching. sql/opt_subselect.cc: - Fixed a memory leak detected by valgrind
* | Currently innodb_plugin does not support ICP.Igor Babaev2011-11-242-1/+7
| |
* | Fix for LP BUG#859375 and LP BUG#887458.unknown2011-11-247-8/+306
| | | | | | | | | | Stop attempts to apply IN/ALL/ANY optimizations to so called "fake_select" (used for ordering and filtering results of union) in union subquery execution.
* | fixes to make compilers happy.Alexey Botchkov2011-11-242-1/+5
| | | | | | | | | | | | | | | | | | | | per-file comments: mysql-test/t/gis-precise.test number-to-string conversion differs on Windows. Have to tolerate this while GIS data is stored in doubles. sql/spatial.cc prev_x initialization added.
* | Fix bug lp:893486unknown2011-11-233-12/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Analysis: The bug is a result of an incomplete fix for bug lp:869036. That fix didn't take into account that there may be a case when ther are no NULLs in the materialized subquery, however all columns without NULLs may not be grouped in the only non-null index. This is the case when the left subquery expression has nullable columns. Solution: The patch handles two missing sub-cases of the case when there are no value (non-null matches) for any outer expression, and there are both NULLs and non-NUll values in the outer reference. a) If the materialized subquery contains no NULLs there cannot be a partial match, because there are no NULLs in those columns where the outer reference has no NULLs. b) If the materialized subquery contains NULLs, but there exists a column, such that its corresponding outer expression has no NULL, and this column also has no NULL. Then there cannot be a partial match either.
* | Small fixes to make compilers happy.Alexey Botchkov2011-11-221-3/+3
| |
* | Windows has no 'nearbyint' in libraries.Alexey Botchkov2011-11-221-2/+1
| | | | | | | | | | So removed.
* | Merge default materialization=on.unknown2011-11-2231-225/+342
|\ \
| * \ Merge enabling materialization=on by default.unknown2011-11-2131-225/+342
| |\ \
| | * \ Merge enabling of materialization=on by default with main tree.unknown2011-11-2131-225/+342
| | |\ \
| | | * | Fixed PBXT test cases.unknown2011-11-092-7/+11
| | | | |
| | | * | - Removed a comment that is not true any more.unknown2011-11-092-8/+4
| | | | | | | | | | | | | | | | | | | | | | | | | - Consistent use of the SUBS_NOT_TRANSFORMED constant for in_strategy.
| | | * | Enable subquery materialization=ON by default.unknown2011-11-0927-216/+327
| | | | |
* | | | | Correct test file.unknown2011-11-211-1/+1
| | | | |
* | | | | Fix test to pass on 32-bit machines by reducingunknown2011-11-215-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | the depth of subquery nestedness to less than 31 (sizeof(ulong)-1).
* | | | | Merge.Igor Babaev2011-11-215-3/+99
|\ \ \ \ \
| * | | | | Fixed LP bug #887496.Igor Babaev2011-11-215-3/+99
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This bug in the function Loose_scan_opt::check_ref_access_part1 could lead to choosing an invalid execution plan employing a loose scan access to a semi-join table even in the cases when such access could not be used at all. This could result in wrong answers for some queries with IN subqueries.
* | | | | Fix bug lp:833777unknown2011-11-218-3/+68
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Analysis: The optimizer distinguishes two kinds of 'constant' conditions: expensive ones, and non-expensive ones. The non-expensive conditions are evaluated inside make_join_select(), and if false, already the optimizer detects empty query results. In order to avoid arbitrarily expensive optimization, the evaluation of expensive constant conditions is delayed until execution. These conditions are attached to JOIN::exec_const_cond and evaluated in the beginning of JOIN::exec. The relevant execution logic is: JOIN::exec() { if (! join->exec_const_cond->val_int()) { produce an empty result; stop execution } continue execution execute the original WHERE clause (that contains exec_const_cond) ... } As a result, when an expensive constant condition is TRUE, it is evaluated twice - once through JOIN::exec_const_cond, and once through JOIN::cond. When the expensive constant condition is a subquery, predicate, the subquery is evaluated twice. If we have many levels of subqueries, this logic results in a chain of recursive subquery executions that walk a perfect binary tree. The result is that for subquries with depth N, JOIN::exec is executed O(2^N) times. Solution: Notice that the second execution of the constant conditions happens inside do_select(), in the branch: if (join->table_count == join->const_tables) { ... } In this case exec_const_cond is equivalent to the whole WHERE clause, therefore the WHERE clause has already been checked in the beginnig of JOIN::exec, and has been found to be true. The bug is addressed by not evaluating the WHERE clause if there was exec_const_conds, and it was TRUE.
* | | | Corrected the patch that made the optimizer switch for index condition pushdownIgor Babaev2011-11-211-1/+1
| | | | | | | | | | | | | | | | set to 'on' by default.
* | | | Made the optimizer switch for index condition pushdown set to 'on' by default. Igor Babaev2011-11-2140-323/+324
| | | |
* | | | Fixed LP bug #892725.Igor Babaev2011-11-203-0/+86
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A non-first execution of a prepared statement missed a call of the TABLE_LIST::process_index_hints() method in the code of the function setup_tables(). At some scenarios this could lead to the choice of a quite inefficient execution plan for the base query of the prepared statement.
* | | | Fix for bug #809849 spatial operations must be KILL-able.Alexey Botchkov2011-11-206-5/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Checks for thd->killed state added to the long loops in geometry calculations. per-file comments: sql/gcalc_slicescan.cc Fix for bug #809849 spatial operations must be KILL-able. checks for TERMINATED_STATE added. sql/gcalc_slicescan.h Fix for bug #809849 spatial operations must be KILL-able. defines added to include checks for termination in the library. sql/gcalc_tools.cc Fix for bug #809849 spatial operations must be KILL-able. checks for TERMINATED_STATE added. sql/gcalc_tools.h Fix for bug #809849 spatial operations must be KILL-able. TERMINATED_STATE pointers added. sql/item_geofunc.cc Fix for bug #809849 spatial operations must be KILL-able. sql/item_geofunc.h Fix for bug #809849 spatial operations must be KILL-able.
* | | | Fixed LP bug #891995.Igor Babaev2011-11-183-2/+92
| | | | | | | | | | | | | | | | | | | | | | | | This bug in the function setup_semijoin_dups_elimination() could lead to invalid choice of the sequence of tables for which semi-join duplicate elimination was applied.
* | | | Fixed LP bug #891953.Igor Babaev2011-11-184-1/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Due to this bug the function SEL_IMERGE::or_sel_tree_with_checks() could build an inconsistent merge tree if one of the SEL_TREEs in the resulting index merge happened to contain a full key range. This could trigger an assertion failure.
* | | | unused variable removed.Alexey Botchkov2011-11-181-2/+1
| | | |