1. 16 Jul, 2010 1 commit
    • unknown's avatar
      MWL#89: Cost-based choice between Materialization and IN->EXISTS transformation · 5ab66ffd
      unknown authored
      1. Changed the lazy optimization for subqueries that can be
         materialized into bottom-up optimization during the optimization of
         the main query.
      
         The main change is implemented by the method
         Item_in_subselect::setup_engine.
        
         All other changes were required to correct problems resulting from
         changing the order of optimization. Most of these problems followed
         the same pattern - there are some shared structures between a
         subquery and its parent query. Depending on which one is optimized
         first (parent or child query), these shared strucutres may get
         different values, thus resulting in an inconsistent query plan.
      
      2. Changed the code-generation for subquery materialization to be
         performed in runtime memory for each (re)execution, instead of in
         statement memory (once per prepared statement).
         - Item_in_subselect::setup_engine() no longer creates materialization
           related objects in statement memory.
         - Merged subselect_hash_sj_engine::init_permanent and
           subselect_hash_sj_engine::init_runtime into
           subselect_hash_sj_engine::init, which is called for each
           (re)execution.
         - Fixed deletion of the temp table accordingly.
      
      
      mysql-test/r/subselect_mat.result:
        Adjusted changed EXPLAIN because of earlier optimization of subqueries.
      5ab66ffd
  2. 10 Jul, 2010 1 commit
    • unknown's avatar
      Subquery cache (MWL#66) added. · ea1b32a3
      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.
      ea1b32a3
  3. 06 Jul, 2010 1 commit
    • Sergey Petrunya's avatar
      Fix buildbot valgrind failure · e7f5faf6
      Sergey Petrunya authored
      - Item_in_subselect::init_left_expr_cache() should not try to 
        guess whether the left expression is accessed "over the grouping operation"
        (i.e. the subselect is evaluated after the grouping while the left_expr is
         an Item_ref that wraps an expression from before the grouping). Instead, 
        let new_Cached_item not to try accessing item->real_item() when creating 
        left expr cache.
      e7f5faf6
  4. 02 Jul, 2010 1 commit
  5. 27 Jun, 2010 1 commit
  6. 26 Jun, 2010 7 commits
  7. 14 Jun, 2010 1 commit
  8. 07 Jun, 2010 2 commits
  9. 05 Jun, 2010 1 commit
    • Sergei Golubchik's avatar
      few small MySQL bugs/issues that impact the engines, as discussed in the SE summit · 4b977e4c
      Sergei Golubchik authored
      * remove handler::index_read_last()
      * create handler::keyread_read_time() (was get_index_only_read_time() in opt_range.cc)
      * ha_show_status() allows engine's show_status() to fail
      * remove HTON_FLUSH_AFTER_RENAME
      * fix key_cmp_if_same() to work for floats and doubles
      * set table->status in the server, don't force engines to do it
      * increment status vars in the server, don't force engines to do it
      
      mysql-test/r/status_user.result:
        correct test results - innodb was wrongly counting internal
        index searches as handler_read_* calls.
      sql/ha_partition.cc:
        compensate for handler incrementing status counters -
        we want to count only calls to underlying engines
      sql/handler.h:
        inline methods moved to sql_class.h
      sql/key.cc:
        simplify the check
      sql/opt_range.cc:
        move get_index_only_read_time to the handler class
      sql/sp.cc:
        don't use a key that's stored in the record buffer -
        the engine can overwrite the buffer with anything, destroying the key
      sql/sql_class.h:
        inline handler methods that need to see THD and TABLE definitions
      sql/sql_select.cc:
        no ha_index_read_last_map anymore
      sql/sql_table.cc:
        remove HTON_FLUSH_AFTER_RENAME
      sql/table.cc:
        set HA_CAN_MEMCMP as appropriate
      sql/tztime.cc:
        don't use a key that's stored in the record buffer -
        the engine can overwrite the buffer with anything, destroying the key
      storage/myisam/ha_myisam.cc:
        engines don't need to update table->status or use ha_statistic_increment anymore
      storage/myisam/ha_myisam.h:
        index_read_last_map is no more
      4b977e4c
  10. 03 Jun, 2010 2 commits
    • Sergei Golubchik's avatar
      include guards · 5eb46fe8
      Sergei Golubchik authored
      5eb46fe8
    • Sergei Golubchik's avatar
      fixes for test suite · e9548f58
      Sergei Golubchik authored
      mysql-test/suite/pbxt/r/mysqlshow.result:
        update the forgotten test results
      sql/table.cc:
        add defensive asserts.
        fix the code that didn't in MySQL > 5.2.0 with frm's created before 5.1.10
      e9548f58
  11. 02 Jun, 2010 1 commit
  12. 01 Jun, 2010 1 commit
  13. 31 May, 2010 1 commit
  14. 28 May, 2010 1 commit
  15. 27 May, 2010 3 commits
    • Sergei Golubchik's avatar
      ac0bf0f4
    • Sergei Golubchik's avatar
    • Michael Widenius's avatar
      Fixed compiler warnings · b9ef7ca1
      Michael Widenius authored
      Fixed failing test innodb.innodb-autoinc.test
      Enabled innodb test suite
      
      mysql-test/mysql-test-run.pl:
        Enabled innodb test suite
      mysql-test/r/innodb-autoinc.result:
        Removed test as it exists in suite innodb
      mysql-test/suite/innodb/t/disabled.def:
        Removed innodb-autoinc
      mysql-test/suite/innodb/t/innodb-autoinc.test:
        Update to be able to run with plugin
      mysql-test/t/innodb-autoinc.test:
        Removed test as it exists in suite innodb
      sql/filesort.cc:
        Removed not used variable
      sql/slave.cc:
        Remove compiler warnings
      storage/pbxt/src/ha_pbxt.cc:
        Removed not used variable
      storage/xtradb/dict/dict0crea.c:
        Fixed compiler warning about unsigned comparison
      support-files/compiler_warnings.supp:
        Disable some not relevant warnings
      b9ef7ca1
  16. 26 May, 2010 7 commits
  17. 25 May, 2010 1 commit
  18. 21 May, 2010 1 commit
  19. 15 May, 2010 5 commits
  20. 14 May, 2010 1 commit
    • Sergei Golubchik's avatar
      crash on --with-embedded-privilege-control builds: · 2462ee05
      Sergei Golubchik authored
      1. fix broken change user handling (no restart should happen in the normal case)
      2. add assert to guarantee that we never send a request to change to the same plugin
      3. "fix" plugin string as sent by the client to be able to compare native plugins by pointers
      4. more complete MYSQL initialization in the embedded case
      5. change_user.test updated to handle -with-embedded-privilege-control builds
      2462ee05