Commit graph

68316 commits

Author SHA1 Message Date
Sergei Golubchik
1417606b1f on windows: don't link all plugins with mysqld, only do it for storage engines. 2011-12-29 22:52:13 +01:00
Igor Babaev
4b7919368e Back-ported the test case for bug #12616253 from mariadb-5.3 that
was actually a duplicate of LP bug #888456 fixed in mariadb-5.2.
2012-01-14 00:02:02 -08:00
Igor Babaev
4de7978a3f Back-ported the fix and the test case for bug #50257 from mariadb-5.3 code line.
Adjusted results for a few test cases.
2012-01-13 19:00:50 -08:00
Igor Babaev
6dfe0956d6 Back-ported the test cases for bug #12763207 from mysql-5.6 code line into 5.2
Completed the fix for this bug.
Note: in 5.3 the affected 'if' statement in Item_in_subselect::single_value_transformer()
starting with the  condition (thd->variables.sql_mode & MODE_ONLY_FULL_GROUP_BY)
should be removed altogether. The change from table.cc is not needed either.
This is because in 5.3
 - min/max transformation for subqueries are done at the optimization phase
 - evaluation of the expensive subqueries is done at the execution phase.

Added an EXPLAIN EXTENDED to the test case for bug #12329653.
2012-01-13 12:23:19 -08:00
Vladislav Vaintroub
22876a5495 MDEV-50 : Fix default compilation comment 2012-01-10 19:26:47 +01:00
Vladislav Vaintroub
39ebfa51ef Fix MDEV-49 : version_compile_machine server variable is 'unknown' for x64 builds 2012-01-10 19:23:00 +01:00
Michael Widenius
629cdab808 Fixed compiler and test failures found by buildbot
configure.in:
  Added testing of STRNDUP (not found on solaris)
mysql-test/include/wait_until_connected_again.inc:
  Also test for error 2005 (can happen on windows)
mysql-test/include/wait_until_disconnected.inc:
  Also test for error 2005 (can happen on windows)
mysql-test/suite/innodb_plugin/r/innodb_bug30423.result:
  Number of rows is not stable (found difference on Solaris)
mysql-test/suite/innodb_plugin/t/innodb_bug30423.test:
  Number of rows is not stable (found difference on Solaris)
plugin/auth_pam/auth_pam.c:
  Use internal strndup if it doesn't exist on system (solaris)
  Changed code so that it should also compile on solaris.
2012-01-08 20:29:05 +02:00
Michael Widenius
7e576c0710 Merge 2012-01-07 14:59:03 +02:00
Michael Widenius
d725c52d27 Fixed wrong merge 2012-01-07 10:23:46 +02:00
unknown
d63fc00f35 Fix of LP BUG#793589 Wrong result with double ORDER BY
Problem was in caching 'eq_ref' dependency between calls of remove_const() for ORDER BY and GROUP BY lists.
2012-01-05 11:06:52 +02:00
Michael Widenius
98135fed0f Merge with 5.1 2012-01-04 17:22:06 +02:00
Vladislav Vaintroub
a0afa025a3 Fix embedded/windows tests- move COND_manager and LOCK_manager to sql_manager.cc, to prevent race condition that results into accessing already destroyed critical section 2012-01-02 23:52:31 +01:00
Igor Babaev
74fdbec68e Fixed LP bug #848652.
The cause of this bug was the same as for bug 902356 fixed for 5.3.
2011-12-29 21:55:17 -08:00
Igor Babaev
40c42468bc Fixed LP bug #806057.
A table expression with a natural join or a USING clause is transformed
into an equivalent expression with equi-join ON conditions. If a reference
to a virtual column happened to occur only in these generated equi-join
conditions then it was not erroneously marked in the TABLE::vcol_set bitmap.
This could lead to wrong results for queries containing natural join
expressions or USING clauses.
2011-12-29 15:09:20 -08:00
Sergey Petrunya
d9fcec5acd Make test results stable (they weren't, because filesort() used to read
from a heap temptable, which uses pointers to records (that is, byte*
pointers) as rowids.  
This meant that for rows with the same sort key value, the order 
was determined by memory layout.
2011-12-29 22:29:02 +01:00
Igor Babaev
5ab628e024 Fixed LP bug #777654.
The method Item_sum_num::fix_fields() calculated the value of
the flag Item_sum_num::maybe_null in some cases incorrectly.
2011-12-28 18:47:01 -08:00
Sergey Petrunya
3759df08eb Update test results. 2011-12-28 12:12:48 +04:00
Igor Babaev
31805e6214 Fixed LP bug #879860.
The MIN/MAX optimization cannot be applied to a subquery if its WHERE clause
contains a conjunctive condition depending on an outer reference.
2011-12-27 19:13:53 -08:00
Sergey Petrunya
679b7704c6 Merge 2011-12-28 03:37:34 +04:00
Igor Babaev
c9259f166b Fixed LP bug #904345.
The MIN/MAX optimizer code from the function opt_sum_query erroneously
did not take into account conjunctive conditions that did not depend on
any table, yet were not identified as constant items. These could be
items containing rand() or PS/SP parameters. These items are supposed
to be evaluated at the execution phase. That's why if such conditions
can be extracted from the WHERE condition the MIN/MAX optimization is
not applied as currently it is always done at the optimization phase.

(In 5.3 expensive subqueries are also evaluated only at the execution
phase. So, if a constant condition with such subquery can be extracted
from the WHERE clause the MIN/MAX optimization should not be applied 
in 5.3.)

IF an IN/ALL/SOME predicate with a constant left part is transformed
into an EXISTS subquery the resulting subquery should not be considered
uncacheable if the right part of the predicate is not uncacheable.

Backported the function dbug_print_item() from 5.3. The function is used
only for debugging.
2011-12-27 13:19:13 -08:00
Igor Babaev
c583aaf56b Changed a test case from join_cache.test to make it platform independent. 2011-12-25 18:03:03 -08:00
Igor Babaev
2b1f0b8757 Back-ported the patch of the mysql-5.6 code line that
fixed several defects in the greedy optimization:

1) The greedy optimizer calculated the 'compare-cost' (CPU-cost)
   for iterating over the partial plan result at each level in
   the query plan as 'record_count / (double) TIME_FOR_COMPARE'

   This cost was only used locally for 'best' calculation at each
   level, and *not* accumulated into the total cost for the query plan.

   This fix added the 'CPU-cost' of processing 'current_record_count'
   records at each level to 'current_read_time' *before* it is used as
   'accumulated cost' argument to recursive 
   best_extension_by_limited_search() calls. This ensured that the
   cost of a huge join-fanout early in the QEP was correctly
   reflected in the cost of the final QEP.

   To get identical cost for a 'best' optimized query and a
   straight_join with the same join order, the same change was also
   applied to optimize_straight_join() and get_partial_join_cost()

2) Furthermore to get equal cost for 'best' optimized query and a
   straight_join the new code substrcated the same '0.001' in
   optimize_straight_join() as it had been already done in
   best_extension_by_limited_search()

3) When best_extension_by_limited_search() aggregated the 'best' plan a
   plan was 'best' by the check :

   'if ((search_depth == 1) || (current_read_time < join->best_read))'

   The term '(search_depth == 1' incorrectly caused a new best plan to be
   collected whenever the specified 'search_depth' was reached - even if
   this partial query plan was more expensive than what we had already
   found.
2011-12-24 08:55:10 -08:00
Vladislav Vaintroub
a22ab047e5 merge 2011-12-23 15:02:57 +01:00
Vladislav Vaintroub
0e8f71b2bc LPBUG#906638 : Fixes to build oqgraph with boost 1.48
- dijkstra_shortest_paths() needs a Graph as first parameter, in case of reverse_graph we now need to use
  its m_g member
- use boost::tuples::tie() on all places where tie() was used . Reason -
  fix the build with Visual Studio 10 SP1 (which includes std:tr1:tie, thus creating  ambiguity)
2011-12-22 15:50:33 +01:00
Sergei Golubchik
a5e92c7e6d compilation warning - unused variable 2011-12-22 11:07:04 +01:00
Michael Widenius
2be9a419f5 Fixes lp:907049 "Server started with skip-aria crashes on an attempt to connect to it"
sql/sql_parse.cc:
  Only call ha_maria::implicit_commit if aria is enabled
2011-12-21 13:23:15 +02:00
unknown
7b29727a5a Supression condition made wider to cover some other system cases. 2011-12-21 12:45:53 +02:00
Igor Babaev
27380e4fb5 Fixed LP bug #794005.
The function st_table::mark_virtual_columns_for_write() did not take into
account the fact that for any table the value of st_table::vfield is 0
when there are no virtual columns in the table definition.
2011-12-20 01:56:41 -08:00
Sergey Petrunya
5d9fbc6177 Fix version number: it's 5.3.3 2011-12-20 12:13:47 +04:00
Sergey Petrunya
fa061af373 Update mysql-test/suite/pbxt/r/subselect.result for the previous push 2011-12-20 09:57:42 +04:00
Igor Babaev
bad3e4179c Fixed LP bug #906322.
If the sorted table belongs to a dependent subquery then the function
create_sort_index() should not clear TABLE:: select and TABLE::select
for this table after the sort of the table has been performed, because
these members are needed for the second execution of the subquery.
2011-12-19 14:55:30 -08:00
unknown
072073c09e Backport of WL#5953 from MySQL 5.6
The patch differs from the original MySQL patch as follows:
- All test case differences have been reviewed one by one, and
  care has been taken to restore the original plan so that each
  test case executes the code path it was designed for.
- A bug was found and fixed in MariaDB 5.3 in
  Item_allany_subselect::cleanup().
- ORDER BY is not removed because we are unsure of all effects,
  and it would prevent enabling ORDER BY ... LIMIT subqueries.
- ref_pointer_array.m_size is not adjusted because we don't do
  array bounds checking, and because it looks risky.

Original comment by Jorgen Loland:
-------------------------------------------------------------
WL#5953 - Optimize away useless subquery clauses
      
For IN/ALL/ANY/SOME/EXISTS subqueries, the following clauses are 
meaningless:
      
* ORDER BY (since we don't support LIMIT in these subqueries)
* DISTINCT
* GROUP BY if there is no HAVING clause and no aggregate 
  functions
      
This WL detects and optimizes away these useless parts of the
query during JOIN::prepare()
2011-12-19 23:05:44 +02:00
Sergey Petrunya
a05a566cf0 BUG#906357: Incorrect result with outer join and full text match
- The problem was that const-table-reading code would try to evaluate MATCH()
  before init_ftfuncs() was called. 
- Fixed by making MATCH function "expensive" so that nobody tries to evaluate it
  at optimization phase.
2011-12-20 00:55:32 +04:00
Sergey Petrunya
15ea7238e4 BUG#906385: EXPLAIN EXTENDED crashes in TABLE_LIST::print with limited max_join_size
- Take into account that subquery's optimization can fail because of @@max_join_size error.
2011-12-19 22:24:10 +04:00
Sergey Petrunya
be3e52984f BUG#904432: Wrong result with LEFT JOIN, constant table, semijoin=ON,materialization=ON
- Correct handling for SJ-Materialization + outer joins (details in the comments in the code)
2011-12-19 20:58:55 +04:00
Sergey Petrunya
263ee55318 Remove garbage comments 2011-12-19 18:07:19 +04:00
unknown
11e2462152 Supression condition made wider to cover some other system cases. 2011-12-19 10:11:21 +02:00
Igor Babaev
7a1406f229 Fixed LP bug #904832.
Do not perform index condition pushdown for conditions containing subqueries
and stored functions.
2011-12-18 23:38:37 -08:00
Sergey Petrunya
2bfd02cea9 Bump version number: now it's 5.3.3 (5.3.2 has been released some time ago) 2011-12-18 19:25:00 +04:00
Igor Babaev
68dad67762 Adjusted test cases of the suite funcs_1. 2011-12-16 08:05:14 -08:00
Sergey Petrunya
a4073c1990 Update test results for previous push 2011-12-16 14:19:58 +04:00
Alexey Botchkov
56125a3bce GIS issues fixed.
Failures on SUN Solaris. Buggy compiler there required some extra initialization
for variables. Then the 02 optimization leads to bugs when values set through the
pointer are not always taken into account. Finally, the (long long) / (long)
crashes there, the explicit typeconverstion added.
Failing innodb_plunin.innodb_gis.test fixed.

per-file comments:
  mysql-test/suite/innodb_plugin/t/innodb_gis.test
GIS issues fixed.
  sql/gcalc_slicescan.cc
GIS issues fixed.
  sql/gcalc_tools.cc
GIS issues fixed.
2011-12-16 10:21:46 +04:00
Igor Babaev
919f19110f Merge 2011-12-15 15:55:00 -08:00
Sergey Petrunya
4dd456c220 Merge 2011-12-16 03:46:04 +04:00
Sergey Petrunya
04e9004fa3 BUG#901399: Wrong result (extra row) with semijoin=ON, materialization=OFF, optimizer_prune_level=0
- 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.
2011-12-16 03:44:25 +04:00
Igor Babaev
43d9fc3204 Merge. 2011-12-15 14:28:34 -08:00
Igor Babaev
a910e8ef5b Made join_cache_level == 2 by default. 2011-12-15 14:26:59 -08:00
Sergey Petrunya
876f16afbb Fix unused variable 'thd' error. 2011-12-15 17:26:32 +04:00
Sergey Petrunya
b1e037da6a Merge 2011-12-15 16:47:39 +04:00
Sergey Petrunya
7a99121b2c Fix trivial merge error 2011-12-15 16:43:28 +04:00