An error occurred fetching the project authors.
  1. 26 May, 2011 1 commit
  2. 19 May, 2011 1 commit
    • Sergey Petrunya's avatar
      BUG#784723: Wrong result with semijoin + nested subqueries in maria-5.3 · d1138283
      Sergey Petrunya authored
      - in advance_sj_state(), remember join->cur_dups_producing_tables in 
        pos->prefix_dups_producing_tables *before* we modify it, so that 
        restore_prev_sj_state() restores cur_dups_producing_tables in all cases.
      - Updated test results in subselect_sj2[_jcl6].result (the original EXPLAIN
        was invalid there)
      d1138283
  3. 02 Apr, 2011 1 commit
    • Sergey Petrunya's avatar
      Make EXPLAIN better at displaying MRR/BKA: · 997445bc
      Sergey Petrunya authored
      - "Using MRR" is no longer shown with range access.
      - Instead, both range and BKA accesses will show one of the following:
        = "Rowid-ordered scan"
        = "Key-ordered scan"
        = "Key-ordered Rowid-ordered scan"
      depending on whether DS-MRR implementation will do scan keys in order, rowids in order,
      or both.
      - The patch also introduces a way for other storage engines/MRR implementations to
        pass information to EXPLAIN output about the properties of employed MRR scans.
      997445bc
  4. 03 Feb, 2011 1 commit
    • unknown's avatar
      MWL#89 · 648e6046
      unknown authored
      Adjusted test cases in accordance with the implementation.
      648e6046
  5. 15 Jan, 2011 1 commit
    • Igor Babaev's avatar
      Fixed LP bug #698882. · 84a0c9b2
      Igor Babaev authored
      Made sure that the optimal fields are used by TABLE_REF objects
      when building index access keys to joined tables.
      Fixed a bug in the template function that sorts the elements of
      a list using the bubble sort algorithm. The bug caused poor
      performance of the function. Also added an optimization that
      skips comparison with the most heavy elements that has been 
      already properly placed in the list.
      Made the comparison of the fields belonging to the same Item_equal
      more granular: fields belonging to the same table are also ordered
      according to some rules.
      84a0c9b2
  6. 14 Jan, 2011 1 commit
  7. 03 Nov, 2010 1 commit
    • Igor Babaev's avatar
      Fixed LP bug #664594 and other bugs leading to invalid execution · 73898792
      Igor Babaev authored
      plans or wrong results due to the fact that JOIN_CACHE functions
      ignored the possibility of interleaving materialized semijoin 
      tables with tables whose records were stored in join buffers.
      This fixes would become mostly unnecessary if the new code of
      mwl 90 was merged into 5.3 right now.
      Yet the fix the code of optimize_wo_join_buffering was needed
      in any case.
      
      73898792
  8. 02 Nov, 2010 1 commit
  9. 18 Oct, 2010 1 commit
  10. 12 Oct, 2010 1 commit
  11. 28 Sep, 2010 1 commit
    • Igor Babaev's avatar
      Fixed bug #52636. · 21b1b5f0
      Igor Babaev authored
      Applied the fix for bug #47217 from the mysql-6.0 codebase.
      The patch adds not null predicates generated for the left parts
      of the equality predicates used for ref accesses. This is done
      for such predicates both in where conditions and on conditions.
      For the where conditions the not null predicates were generated
      but in 5.0/5.1 they actually never were used due to some lame
      merge from 4.1 to 5.0. The fix for bug #47217 made these 
      predicates to be used in the condition pushed to the tables.
      Yet only this patch generates not null predicates for equality
      predicated from on conditions of outer joins.
      This patch introduces a performance regression that can be
      observed on a test case from null_key.test. The regression
      will disappear after the fix for bug #57024 from mariadb-5.1
      is pulled into mariadb-5.3.
      The patch contains many changes in the outputs of the EXPLAIN 
      commands since generated not null predicates are considered as
      parts of the conditions pushed to join tables and may add
      'Usingwhere' in some rows of EXPLAINs where there used
      to be no such comments.
      21b1b5f0
  12. 06 Sep, 2010 1 commit
    • unknown's avatar
      Fixed LP BUG#615760: Check on double cache assignment added into the transformation methods. · d6a9b522
      unknown authored
      Cache parameters print added in EXPLAIN EXTENDED output.
      
      mysql-test/r/compare.result:
        Cache parameters print added in EXPLAIN EXTENDED output.
      mysql-test/r/group_by.result:
        Cache parameters print added in EXPLAIN EXTENDED output.
      mysql-test/r/subselect.result:
        Cache parameters print added in EXPLAIN EXTENDED output.
      mysql-test/r/subselect3.result:
        Cache parameters print added in EXPLAIN EXTENDED output.
      mysql-test/r/subselect3_jcl6.result:
        Cache parameters print added in EXPLAIN EXTENDED output.
      mysql-test/r/subselect4.result:
        Cache parameters print added in EXPLAIN EXTENDED output.
      mysql-test/r/subselect_cache.result:
        Added test suite for LP BUG#615760
      mysql-test/r/subselect_mat.result:
        Cache parameters print added in EXPLAIN EXTENDED output.
      mysql-test/r/subselect_no_mat.result:
        Cache parameters print added in EXPLAIN EXTENDED output.
      mysql-test/r/subselect_no_opts.result:
        Cache parameters print added in EXPLAIN EXTENDED output.
      mysql-test/r/subselect_no_semijoin.result:
        Cache parameters print added in EXPLAIN EXTENDED output.
      mysql-test/r/subselect_sj.result:
        Cache parameters print added in EXPLAIN EXTENDED output.
      mysql-test/r/subselect_sj_jcl6.result:
        Cache parameters print added in EXPLAIN EXTENDED output.
      mysql-test/suite/pbxt/r/subselect.result:
        Cache parameters print added in EXPLAIN EXTENDED output.
      mysql-test/t/subselect_cache.test:
        Cache parameters print added in EXPLAIN EXTENDED output.
      sql/item.cc:
        Item::set_expr_cache result fixed according to its description.
        
        Cache parameters print added in EXPLAIN EXTENDED output.
      sql/item.h:
        Cache parameters print added in EXPLAIN EXTENDED output.
      sql/item_cmpfunc.cc:
        Check on double cache assignment added into the transformation methods.
      sql/item_cmpfunc.h:
        Check on double cache assignment added into the transformation methods.
      sql/item_subselect.cc:
        Check on double cache assignment added into the transformation methods.
      sql/item_subselect.h:
        Check on double cache assignment added into the transformation methods.
      sql/sql_expression_cache.cc:
        Cache parameters print added.
      sql/sql_expression_cache.h:
        Cache parameters print added.
      sql/sql_select.cc:
        Removed unused method (now it is impossible to make double transformation with the cache).
      sql/sql_select.h:
        Removed unused method.
      d6a9b522
  13. 31 Aug, 2010 2 commits
    • Igor Babaev's avatar
    • unknown's avatar
      LP BUG#615752 fix. Expression cache added to EXPLAIN EXTENDED output. · 97199ad5
      unknown authored
      mysql-test/r/compare.result:
        Expression cache added to EXPLAIN EXTENDED output.
      mysql-test/r/explain.result:
        Expression cache added to EXPLAIN EXTENDED output.
      mysql-test/r/group_by.result:
        Expression cache added to EXPLAIN EXTENDED output.
      mysql-test/r/subselect.result:
        Expression cache added to EXPLAIN EXTENDED output.
      mysql-test/r/subselect3.result:
        Expression cache added to EXPLAIN EXTENDED output.
      mysql-test/r/subselect3_jcl6.result:
        Expression cache added to EXPLAIN EXTENDED output.
      mysql-test/r/subselect4.result:
        Expression cache added to EXPLAIN EXTENDED output.
      mysql-test/r/subselect_mat.result:
        Expression cache added to EXPLAIN EXTENDED output.
      mysql-test/r/subselect_no_mat.result:
        Expression cache added to EXPLAIN EXTENDED output.
      mysql-test/r/subselect_no_opts.result:
        Expression cache added to EXPLAIN EXTENDED output.
      mysql-test/r/subselect_no_semijoin.result:
        Expression cache added to EXPLAIN EXTENDED output.
      mysql-test/r/subselect_sj.result:
        Expression cache added to EXPLAIN EXTENDED output.
      mysql-test/r/subselect_sj_jcl6.result:
        Expression cache added to EXPLAIN EXTENDED output.
      sql/item.h:
        Expression cache added to EXPLAIN EXTENDED output.
      97199ad5
  14. 16 Jul, 2010 1 commit
    • Sergey Petrunya's avatar
      Fix @@optimizer_switch support · 13058d80
      Sergey Petrunya authored
      - Let "mysqld  --help --verbose" list all optimizer options
      - Make it possible to add new @@optimizer_switch flags w/o causing .result 
        changes all over the testsuite:
        = Remove "select @@optimizer_switch" from tests that do not need all switches
        = Move @@optimizer_switch-specific tests to t/optimizer_switch.test
      13058d80
  15. 10 Jul, 2010 1 commit
    • unknown's avatar
      Subquery cache (MWL#66) added. · ceb5468f
      unknown authored
      libmysqld/Makefile.am:
        The new file added.
      mysql-test/r/index_merge_myisam.result:
        subquery_cache optimization option added.
      mysql-test/r/myisam_mrr.result:
        subquery_cache optimization option added.
      mysql-test/r/subquery_cache.result:
        The subquery cache tests added.
      mysql-test/r/subselect3.result:
        Subquery cache switched off to avoid changing read statistics.
      mysql-test/r/subselect3_jcl6.result:
        Subquery cache switched off to avoid changing read statistics.
      mysql-test/r/subselect_no_mat.result:
        subquery_cache optimization option added.
      mysql-test/r/subselect_no_opts.result:
        subquery_cache optimization option added.
      mysql-test/r/subselect_no_semijoin.result:
        subquery_cache optimization option added.
      mysql-test/r/subselect_sj.result:
        subquery_cache optimization option added.
      mysql-test/r/subselect_sj_jcl6.result:
        subquery_cache optimization option added.
      mysql-test/t/subquery_cache.test:
        The subquery cache tests added.
      mysql-test/t/subselect3.test:
        Subquery cache switched off to avoid changing read statistics.
      sql/CMakeLists.txt:
        The new file added.
      sql/Makefile.am:
        The new files added.
      sql/item.cc:
        Expression cache item (Item_cache_wrapper) added.
        Item_ref and Item_field fixed for correct usage of result field and fast resolwing in SP.
      sql/item.h:
        Expression cache item (Item_cache_wrapper) added.
        Item_ref and Item_field fixed for correct usage of result field and fast resolwing in SP.
      sql/item_cmpfunc.cc:
        Subquery cache added.
      sql/item_cmpfunc.h:
        Subquery cache added.
      sql/item_subselect.cc:
        Subquery cache added.
      sql/item_subselect.h:
        Subquery cache added.
      sql/item_sum.cc:
        Registration of subquery parameters added.
      sql/mysql_priv.h:
        subquery_cache optimization option added.
      sql/mysqld.cc:
        subquery_cache optimization option added.
      sql/opt_range.cc:
        Fix due to subquery cache.
      sql/opt_subselect.cc:
        Parameters of the function cahnged.
      sql/procedure.h:
        .h file guard added.
      sql/sql_base.cc:
        Registration of subquery parameters added.
      sql/sql_class.cc:
        Option to allow add indeces to temporary table.
      sql/sql_class.h:
        Item iterators added.
        Option to allow add indeces to temporary table.
      sql/sql_expression_cache.cc:
        Expression cache for caching subqueries added.
      sql/sql_expression_cache.h:
        Expression cache for caching subqueries added.
      sql/sql_lex.cc:
        Registration of subquery parameters added.
      sql/sql_lex.h:
        Registration of subqueries and subquery parameters added.
      sql/sql_select.cc:
        Subquery cache added.
      sql/sql_select.h:
        Subquery cache added.
      sql/sql_union.cc:
        A new parameter to the function added.
      sql/sql_update.cc:
        A new parameter to the function added.
      sql/table.cc:
        Procedures to manage temporarty tables index added.
      sql/table.h:
        Procedures to manage temporarty tables index added.
      storage/maria/ha_maria.cc:
        Fix of handler to allow destoy a table in case of error during the table creation.
      storage/maria/ha_maria.h:
        .h file guard added.
      storage/myisam/ha_myisam.cc:
        Fix of handler to allow destoy a table in case of error during the table creation.
      ceb5468f
  16. 09 Jun, 2010 1 commit
    • Sergey Petrunya's avatar
      MWL#90, code cleanup · b33826e5
      Sergey Petrunya authored
      - Unify EXPLAIN printout for <subqueryN> tables with regular tables
      - Update test results for <subqueryN> tables:
        s/unique_key/distinct_key/g
        s/1.0/100.0/ for "filtered" column
      b33826e5
  17. 27 May, 2010 1 commit
    • Sergey Petrunya's avatar
      MWL#90: Subqueries: Inside-out execution for non-semijoin materialized... · 0cc37246
      Sergey Petrunya authored
      MWL#90: Subqueries: Inside-out execution for non-semijoin materialized subqueries that are AND-parts of the WHERE
      - Change "SUBQUERY#n" to "<subquery{n}>" in EXPLAIN output. We need to it to be
        lowercase so that EXPLAIN results do not differ in case between systems with
        case-sensitive and case-insensitive filesystems.
      - Remove garbage comments, add better comments.
      0cc37246
  18. 06 Apr, 2010 1 commit
  19. 29 Mar, 2010 1 commit
  20. 15 Mar, 2010 1 commit
    • Sergey Petrunya's avatar
      Apply fix by Roy Lyseng: · 47d0cf29
      Sergey Petrunya authored
      Bug#48623: Multiple subqueries are optimized incorrectly
            
      The function setup_semijoin_dups_elimination() has a major loop that
      goes through every table in the JOIN object. Usually, there is a normal
      "plus one" increment in the for loop that implements this, but each semijoin
      nest is treated as one entity and there is another increment that skips past
      the semijoin nest to the next table in the JOIN object. However, when
      combining these two increments, the next joined table is skipped, and if that
      happens to be the start of another semijoin nest, the correct processing
      for that nest will not be carried out.
      
      mysql-test/r/subselect_sj.result:
        Added test results for bug#48623
      mysql-test/r/subselect_sj_jcl6.result:
        Added test results for bug#48623
      mysql-test/t/subselect_sj.test:
        Added test case for bug#48623
      sql/opt_subselect.cc:
        Omitted the "plus one" increment in the for loop, added "plus one"
        in the remaining switch case, fixed coding style issue in remaining
        increment operations.
      47d0cf29
  21. 14 Mar, 2010 1 commit
    • Sergey Petrunya's avatar
      BUG#43768: Prepared query with nested subqueries core dumps on second execution · 77e66c69
      Sergey Petrunya authored
      Fix two problems:
      1. Let optimize_semijoin_nests() reset sj_nest->sjmat_info irrespectively  
         of value of optimizer_flag. We need this in case somebody has turned optimization
         off between reexecutions of the same statement.
      
      2. Do not pull out constant tables out of semi-join nests. The problem is that pullout 
         operation is not undoable, and if a table is constant because it is 1/0-row table it 
         may cease to be constant on the next execution. Note that tables that are constant
         because of possible eq_ref(const) access will still be pulled out as they are
         considered functionally-dependent.
      77e66c69
  22. 13 Mar, 2010 2 commits
    • Sergey Petrunya's avatar
      Apply fix by oystein.grovlen@sun.com 2010-03-12: · ea982e33
      Sergey Petrunya authored
      Bug#48213 Materialized subselect crashes if using GEOMETRY type
      
      The problem occurred because during semi-join a materialized table
      was created which contained a GEOMETRY column, which is a specialized
      BLOB column.  This caused an segmentation fault because such tables will
      have extra columns, and the semi-join code was not prepared for that.
      
      The solution is to disable materialization when Blob/Geometry columns would 
      need to be materialized.  Blob columns cannot be used for index look-up 
      anyway, so it does not makes sense to use materialization.
      
      This fix implies that it is detected earlier that subquery materialization
      can not be used.  The result of that is that in->exist optimization may
      be performed for such queries.  Hence, extended query plans for such
      queries had to be updated.
      
      mysql-test/r/subselect_mat.result:
        Update extended query plan for subqueries that cannot use materialization
        due to Blobs.
      mysql-test/r/subselect_sj.result:
        Updated result file.
      mysql-test/r/subselect_sj_jcl6.result:
        Update result file.
      mysql-test/t/subselect_sj.test:
        Add test case for Bug#48213 that verifies that semi-join works when subquery select list contain Blob columns.  Also verify that materialization is not
        used.
      sql/opt_subselect.cc:
        Disable materialization for semi-join/subqueries when the subquery select list
        contain Blob columns.
      ea982e33
    • Sergey Petrunya's avatar
      BUG#45174: XOR in subqueries produces differing results in 5.1 and 5.4 · 02e9fa62
      Sergey Petrunya authored
      BUG#50019: Wrong result for IN-subquery with materialization
      - Fix equality substitution in presense of semi-join materialization, lookup and scan variants
        (started off from fix by Evgen Potemkin, then modified it to work in all cases)
      02e9fa62
  23. 11 Mar, 2010 1 commit
    • unknown's avatar
      MWL#68 Subquery optimization: Efficient NOT IN execution with NULLs · 3d2a7460
      unknown authored
      This patch does three things:
      - It adds the possibility to force the execution of top-level [NOT] IN
        subquery predicates via the IN=>EXISTS transformation. This is done by
        setting both optimizer switches partial_match_rowid_merge and
        partial_match_table_scan to "off".
      - It adjusts all test cases where the complete optimizer_switch is
        selected because now we have two more switches.
      - For those test cases where the plan changes because of the new available
        strategies, we switch off both partial match strategies in order to
        force the "old" IN=>EXISTS strategy. This is done because most of these
        test cases specifically test bugs in this strategy.
      
      sql/opt_subselect.cc:
        Adds the possibility to force the execution of top-level [NOT] IN
        subquery predicates via the IN=>EXISTS transformation. This is done by
        setting both optimizer switches partial_match_rowid_merge and
        partial_match_table_scan to "off".
      3d2a7460
  24. 24 Feb, 2010 1 commit
    • Sergey Petrunya's avatar
      Bug#49198 Wrong result for second call of of procedure with view in subselect. · 0e7c8415
      Sergey Petrunya authored
      Re-worked fix of Tor Didriksen:
       The problem was that fix_after_pullout() after semijoin conversion 
       wasn't propagated from the view to the underlying table. 
       On subesequent executions of the prepared statement, 
       we would mark the underlying table as 'dependent' and the predicate 
       anlysis would lead to a different (and illegal) execution plan.
      0e7c8415
  25. 21 Feb, 2010 2 commits
  26. 17 Feb, 2010 1 commit
  27. 11 Feb, 2010 1 commit
  28. 17 Jan, 2010 1 commit