Advertisement
Guest User

Untitled

a guest
May 14th, 2017
540
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.26 KB | None | 0 0
  1. ------------------------------------------------------------
  2. revno: 2779 [merge]
  3. committer: Sergey Petrunya <psergey@askmonty.org>
  4. branch nick: maria-5.3-subqueries-r7
  5. timestamp: Mon 2010-03-15 18:09:35 +0300
  6. message:
  7. Merge in MWL#68: Subquery optimization: Efficient NOT IN execution with NULLs
  8. ------------------------------------------------------------
  9. revno: 2761.1.7 [merge]
  10. committer: Timour Katchaounov <timour@sun.com>
  11. branch nick: 5.3-mwl68-merge
  12. timestamp: Mon 2010-03-15 16:34:56 +0200
  13. message:
  14. MWL#68 Subquery optimization: Efficient NOT IN execution with NULLs
  15.  
  16. Automerge with 5.3-subqueries
  17. ------------------------------------------------------------
  18. revno: 2761.1.6
  19. committer: timour@askmonty.org
  20. branch nick: 5.3-mwl68
  21. timestamp: Thu 2010-03-11 23:43:31 +0200
  22. message:
  23. MWL#68 Subquery optimization: Efficient NOT IN execution with NULLs
  24.  
  25. This patch does three things:
  26. - It adds the possibility to force the execution of top-level [NOT] IN
  27. subquery predicates via the IN=>EXISTS transformation. This is done by
  28. setting both optimizer switches partial_match_rowid_merge and
  29. partial_match_table_scan to "off".
  30. - It adjusts all test cases where the complete optimizer_switch is
  31. selected because now we have two more switches.
  32. - For those test cases where the plan changes because of the new available
  33. strategies, we switch off both partial match strategies in order to
  34. force the "old" IN=>EXISTS strategy. This is done because most of these
  35. test cases specifically test bugs in this strategy.
  36. ------------------------------------------------------------
  37. revno: 2761.1.5 [merge]
  38. committer: timour@askmonty.org
  39. branch nick: 5.3-mwl68-merge.base-mwl68
  40. timestamp: Tue 2010-03-09 12:36:15 +0200
  41. message:
  42. MWL#68 Subquery optimization: Efficient NOT IN execution with NULLs
  43.  
  44. Automerge with 5.3-subqueries
  45. ------------------------------------------------------------
  46. revno: 2761.1.4
  47. committer: timour@askmonty.org
  48. branch nick: 5.3-mwl68
  49. timestamp: Tue 2010-03-09 12:14:06 +0200
  50. message:
  51. MWL#68 Subquery optimization: Efficient NOT IN execution with NULLs
  52.  
  53. * Implemented a second partial matching strategy via table scan.
  54. This strategy is a fallback when there is no memory for rowid merging.
  55.  
  56. * Refactored the selection and creation of partial matching strategies,
  57. so that the choice of strategy is encapsulated in a separate method
  58. choose_partial_match_strategy().
  59.  
  60. * Refactored the representation of partial match strategies so that:
  61. - each strategy is represented by a polymorphic class, and
  62. - the base class for all partial match strategies contains common
  63. execution code.
  64.  
  65. * Added an estimate of the memory needed for the rowid merge strategy,
  66. and the system variable "rowid_merge_buff_size" to control the maximum
  67. memory to be used by the rowid merge algorithm.
  68.  
  69. * Added two optimizer_switch system variables to control the choice of
  70. partial match strategy:
  71. "partial_match_rowid_merge", "partial_match_table_scan".
  72.  
  73. * Fixed multiple problems with deallocation of resources by the partial
  74. match strategies.
  75. ------------------------------------------------------------
  76. revno: 2761.1.3
  77. committer: timour@askmonty.org
  78. branch nick: 5.3-mwl68-unmerged
  79. timestamp: Mon 2010-02-22 17:16:55 +0200
  80. message:
  81. MWL#68 Subquery optimization: Efficient NOT IN execution with NULLs
  82.  
  83. This patch mainly adds sorting of all indexes for partial matching
  84. according to their NULL selectivity. The patch also fixes a related bug
  85. in subselect_rowid_merge_engine::test_null_row() where the wrong matched
  86. indexes were skipped.
  87.  
  88. In addition the patch:
  89. - adds few ::print() methods,
  90. - renames few variables that had similar names but different purpose.
  91. ------------------------------------------------------------
  92. revno: 2761.1.2 [merge]
  93. committer: timour@askmonty.org
  94. branch nick: 5.3-mwl68-unmerged
  95. timestamp: Mon 2010-02-22 15:57:09 +0200
  96. message:
  97. Automerge with 5.3-subqueries
  98. ------------------------------------------------------------
  99. revno: 2761.1.1
  100. committer: timour@askmonty.org
  101. branch nick: 5.3-mwl68
  102. timestamp: Fri 2010-02-19 23:55:57 +0200
  103. message:
  104. MWL#68 Subquery optimization: Efficient NOT IN execution with NULLs
  105.  
  106. This patch implements correct NULL semantics for materialized subquery execution.
  107. The implementation has the following properties and main limitations:
  108. - It passes all query result tests, but fails a number of EXPLAIN tests because of
  109. changed plans.
  110. - The EXPLAIN output for partial matching is not decided yet.
  111. - It works only when all necessary indexes fit into main memory. Notice that these
  112. are not the general B-tree/Hash indexes, but instead much more compact ones,
  113. therefore this limitation may not be a problem in many practical cases.
  114. - It doesn't contain specialized tests.
  115. - In several places the implementation uses methods that are modified copies of
  116. :
  117. other similar methods. These cases need to be refactored to avoid code duplication.
  118. - Add a test if the predicate is top-level just before deciding on partial matching.
  119. If it is top-level, use a more efficient exec method (index lookup).
  120. - Add sorting of indexes according to their selectivity. The code is almost there.
  121. - Needs more comments, and to sync existing ones with the implementation.
  122. ------------------------------------------------------------
  123. revno: 2778 [merge]
  124. committer: Sergey Petrunya <psergey@askmonty.org>
  125. branch nick: maria-5.3-subqueries-r7-rel
  126. timestamp: Mon 2010-03-15 09:35:35 +0300
  127. message:
  128. Merge
  129. ------------------------------------------------------------
  130. revno: 2776.1.1
  131. committer: Sergey Petrunya <psergey@askmonty.org>
  132. branch nick: maria-5.3-subqueries-r7
  133. timestamp: Mon 2010-03-15 09:06:59 +0300
  134. message:
  135. Update test results for the previous push
  136. ------------------------------------------------------------
  137. revno: 2777
  138. committer: Sergey Petrunya <psergey@askmonty.org>
  139. branch nick: maria-5.3-subqueries-r7-rel
  140. timestamp: Mon 2010-03-15 09:32:54 +0300
  141. message:
  142. Apply fix by Roy Lyseng:
  143. Bug#48623: Multiple subqueries are optimized incorrectly
  144.  
  145. The function setup_semijoin_dups_elimination() has a major loop that
  146. goes through every table in the JOIN object. Usually, there is a normal
  147. "plus one" increment in the for loop that implements this, but each semijoin
  148. nest is treated as one entity and there is another increment that skips past
  149. the semijoin nest to the next table in the JOIN object. However, when
  150. combining these two increments, the next joined table is skipped, and if that
  151. happens to be the start of another semijoin nest, the correct processing
  152. for that nest will not be carried out.
  153. ------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement