Commit graph

2817 commits

Author SHA1 Message Date
Sergey Petrunya
c763fb1b15 MWL#90: Address review feedback in get_best_combination(). 2011-03-27 04:49:31 +04:00
Sergey Petrunya
73510c289a MWL#90: Switch update_depend_map() back to single loop (so that diff is smaller) 2011-03-27 04:02:27 +04:00
Sergey Petrunya
924bdf3e1c Remove comments 2011-03-27 03:55:38 +04:00
Sergey Petrunya
4e5199912b Rename JOIN::top_jtrange_tables to top_join_tab_count 2011-03-27 03:54:15 +04:00
Sergey Petrunya
5de770f317 MWL#90: Address review feedback part #14 2011-03-27 03:45:16 +04:00
Sergey Petrunya
290a72d50b Check the theory that optimize_wo_join_buffering() doesn't need to save/restore join->cur_sj_inner_tables. 2011-03-26 17:39:34 +03:00
Sergey Petrunya
2071ac10fd MWL#90: Address review feedback part #12
- Address review feedback in select_describe().
2011-03-26 12:46:00 +03:00
Sergey Petrunya
bf894470de MWL#90: Address review feedback part #11. 2011-03-25 18:42:47 +03:00
Sergey Petrunya
5ae088f8c1 Fix a problem introduced in previous cset 2011-03-25 17:10:16 +03:00
Sergey Petrunya
5a07fcc6c4 MWL#90: Address review feedback part #10. 2011-03-25 14:24:58 +03:00
Sergey Petrunya
253087815a Make first_linear_tab()/next_linear_tab() use named constants instead of TRUE/FALSE flags, for better readability. 2011-03-25 12:58:27 +03:00
Sergey Petrunya
daf4acc18a MWL#90: Address review feedback: fix a problem introduced a few csets earlier: Do perform tab->cleanup()
for const tables in JOIN::cleanup().
2011-03-24 22:46:10 +03:00
Sergey Petrunya
f064087ed0 MWL#90: Address review feedback part #9:
- among everything else, switch to using first/next_linear_tab() in make_outerjoin_info().
2011-03-22 19:42:36 +03:00
Sergey Petrunya
739e6c99a2 MWL#90: Address review feedback part #8 2011-03-22 19:23:12 +03:00
Sergey Petrunya
39fe368d68 MWL#90: Address review feedback part #7 2011-03-22 16:46:39 +03:00
Sergey Petrunya
b9d4c69135 MWL#90: Address review feedback part #6: more clearer code in next_linear_tab() function 2011-03-22 13:17:14 +03:00
Sergey Petrunya
b77e3dc9f4 MWL#90: Address review feedback part #5 2011-03-22 13:09:55 +03:00
Sergey Petrunya
809a805251 MWL#90: Address review feedback part #4 2011-03-22 00:39:27 +03:00
Sergey Petrunya
4e5dbab5a6 MWL#90: Address review feedback part #3 2011-03-21 23:25:09 +03:00
Sergey Petrunya
d56e74eb9b MWL#90: Address review feedback part #2 2011-03-21 23:06:16 +03:00
Sergey Petrunya
792c67ff61 MWL#90: Address review feedback part #1 2011-03-19 12:27:08 +03:00
Sergey Petrunya
cb147b3965 Merge 5.3 -> 5.3-subqueries-mwl90 2011-03-01 13:21:48 +03:00
Sergey Petrunya
10b8119ad3 BUG#724275: Crash in JOIN::optimize in maria-5.3
- Make equality-substitution-for-ref-access code in JOIN::optimize() treat join_tab->ref.key_copy correctly
  (in the way create_ref_for_key() has filled it).
2011-03-01 00:29:59 +03:00
Igor Babaev
1b03a028fc Merge. 2011-02-27 10:14:11 -08:00
Igor Babaev
ed3524c212 Minor corrections.
sql/mysqld.cc:
  Fixed: optimize_join_buffer_size was missing in the description of possible
  options for the optimizer switch.
sql/sql_select.cc:
  Fixed: initialization for the field ref_table_rows of the KEYUSE structure was 
  missing (as a result of a lame merge).
2011-02-27 09:35:14 -08:00
Igor Babaev
d57b1be961 Merge 2011-02-27 00:21:45 -08:00
Igor Babaev
272e5e6212 BNLH algorithm always used a full table scan over the joined table
even in the cases when there existed range/index-merge scans that
were cheaper than the full table scan.
This was a defect/bug of the implementation of mwl #128. 
Now hash join can work not only with full table scan of the joined
table, but also with full index scan, range and index-merge scans.
Accordingly, in the cases when hash join is used the column 'type'
in the EXPLAINs can contain now 'hash_ALL', 'hash_index', 'hash_range'
and 'hash_index_merge'. If hash join is coupled with a range/index_merge
scan then the columns 'key' and 'key_len' contain info not only on
the used hash index, but also on the indexes used for the scan.
2011-02-23 22:23:12 -08:00
Sergey Petrunya
862135a18a Code cleanup (remove garbage comments and #if 0-s) 2011-02-22 17:19:03 +03:00
Michael Widenius
4ad6d6b6c9 Merge in new handler and handlersocket code into 5.3 main 2011-02-22 11:15:47 +02:00
Sergey Petrunya
9ccce9f100 Fix valgrind warnings 2011-02-20 11:35:26 +03:00
Vladislav Vaintroub
70a7e97e3c Fixed high-impact Windows 64bit warnings (at least 4000 of them) 2011-02-19 13:43:01 +01:00
Vladislav Vaintroub
019256c9fc Fix numerous warnings introduced in the last pushes on Windows 2011-02-18 23:31:01 +01:00
Sergey Petrunya
e7aa18fb9c Code cleanup (1) 2011-02-19 00:22:38 +03:00
Sergey Petrunya
2c7c230a59 Fix typo 2011-02-18 15:11:16 +03:00
Sergey Petrunya
e7605349d6 Fix compiler warning 2011-02-18 14:35:41 +03:00
Sergey Petrunya
f93b0bbebb MWL#90: subquery optimizations
- Remove redundant changes againist 5.3-main
2011-02-18 14:17:28 +03:00
Sergey Petrunya
9482a2cf09 Fix valgrind failure: don't look at join->join_tab[-1] 2011-02-17 15:37:38 +03:00
Sergey Petrunya
0d26e2cdf5 Fix compiler warnings: add LINT_INIT() 2011-02-16 14:16:09 +03:00
Sergey Petrunya
716091e2a0 Post-merge fixes part 4 2011-02-16 13:26:27 +03:00
Sergey Petrunya
089d2e2ea3 Post-merge fixes part 2 2011-02-16 00:59:02 +03:00
Sergey Petrunya
7e5795fe04 Post-merge fixes 2011-02-15 23:42:57 +03:00
Sergey Petrunya
cdccdea951 MWL#90: Merge (4) 2011-02-15 22:25:10 +03:00
Sergey Petrunya
e4325ff60b MWL#90: Subqueries: Inside-out execution for materialized non-sj subqueries
- Merge with 5.3 (3)
2011-02-15 20:29:57 +03:00
Sergey Petrunya
21fdc91091 Merge: BUG#716293: "Range checked for each record" is not used if condition refers to outside of subquery 2011-02-11 13:27:35 +03:00
Sergey Petrunya
e431f106b9 BUG#716293: "Range checked for each record" is not used if condition refers to outside of subquery
- Assume that outside subquery references are known when doing "Range-checked-for-each-record" check.
2011-02-10 11:36:43 +03:00
Igor Babaev
cbeab25085 Fixed LP bug #702403 that caused a crash on the tree for mwl#128
with the test case added by this patch.
The bug cannot be reproduced with the same test case for the main
5.3 tree because the backported fix for bug 59696 masks the 
problem that causes the crash in the mentioned test case. It's not
clear weather this fix masks this problem in all possible cases. 

Anyway the patch for bug 698882 introduced some inconsistent data
structures that could contain indirect references to deleted object.
It happened when two Item_equal objects were merged and the Item_field
list of the second object was joined to such list of the first object.
This operation required adjustment of the backward pointers in 
Item fields from the joined list. However the adjustment was missing 
and this caused crashes in the tree for mwl#128.

Now the backward pointers are set only when Item_equal items are
completely built and are not changed anymore.
2011-02-05 20:57:03 -08:00
Igor Babaev
9ea80ac481 Merge 2011-01-28 18:54:30 -08:00
Igor Babaev
3e868cd3cb Fixed LP bug #707848.
This was another bug in the patch for bug 698882. The new
code from this patch did not ensured that substitutions
of fields for best equal fields were performed on all
AND-OR levels. As a result substitutions for best fields
in some predicates that had been used by the range optimizer
were not actually performed while range plans could employ
these substitutions. This could lead to inconsistent data
structures and ultimately to a crash.
2011-01-26 20:45:23 -08:00
Igor Babaev
a624f99e98 Fixed LP bug #707555.
The bug was in the code of the patch fixing bug 698882.
With improper casting the method store_key_field::change_source_field
was called for the elements of the array TABLE_REF::key_copy that
were either of a different type or not allocated at all. This caused
crashes in some queries.
2011-01-26 11:30:29 -08:00
Igor Babaev
edeeb023bc Post-second-review fixes for the patch that added the code allowing to use
hash join over equi-join conditions without supporting indexes.
2011-01-24 14:54:50 -08:00