1. 08 Nov, 2012 2 commits
  2. 07 Nov, 2012 1 commit
  3. 20 Nov, 2012 2 commits
  4. 11 Nov, 2012 1 commit
    • Igor Babaev's avatar
      Fixed bug mdev-3851. · e08f4f16
      Igor Babaev authored
      Any ref access to a table by a key fully extended by the components
      of the primary key should be actually an eq_ref access.
      e08f4f16
  5. 06 Nov, 2012 1 commit
  6. 07 Nov, 2012 1 commit
  7. 04 Nov, 2012 2 commits
  8. 02 Nov, 2012 2 commits
  9. 31 Oct, 2012 1 commit
    • unknown's avatar
      Fix crashes on 32-bit async client lib when -fomit-frame-pointer · 27bcea09
      unknown authored
       - Ensure asm parameters are in registers, so we do not de-reference from
         bogus stack pointer.
      
       - Make return address undefined in DWARF unwind info in my_context_spawn,
         so DWARF-based unwinders will know this is the end of the call stack
         (same as the amd64 fix for the similar issue).
      27bcea09
  10. 30 Oct, 2012 2 commits
  11. 26 Oct, 2012 1 commit
    • unknown's avatar
      MDEV-3812 · 974abc7a
      unknown authored
      This patch undoes the removal of enum store_key_result by the previous patch for mdev-3812.
      974abc7a
  12. 25 Oct, 2012 1 commit
    • unknown's avatar
      MDEV-3812: Remove unneeded extra call to engine->exec() in... · 97a1c53c
      unknown authored
      MDEV-3812: Remove unneeded extra call to engine->exec() in Item_subselect::exec, remove enum store_key_result
      
      This task fixes an ineffeciency that is a remainder from MySQL 5.0/5.1. There, subqueries
      were optimized in a lazy manner, when executed for the first time. During this lazy optimization
      it may happen that the server finds a more efficient subquery engine, and substitute the current
      engine of the query being executed with the new engine. This required re-execution of the engine.
      
      MariaDB 5.3 pre-optimizes subqueries in almost all cases, and the engine is chosen in most cases,
      except when subquery materialization found that it must use partial matching. In this case, the
      current code was performing one extra re-execution although it was not needed at all. The patch
      performs the re-execution only if the engine was changed while executing.
      
      In addition the patch performs small cleanup by removing "enum store_key_result" because it is
      essentially a boolean, and the code that uses it already maps it to a boolean.
      97a1c53c
  13. 19 Oct, 2012 1 commit
  14. 18 Oct, 2012 3 commits
  15. 17 Oct, 2012 1 commit
    • Sergei Golubchik's avatar
      RPM fixes: · bf106948
      Sergei Golubchik authored
        shared should provide libmysqlclient.so.18(libmysqlclient_16) too
        don't "use DBD::mysql" explicitly in mytop
      bf106948
  16. 16 Oct, 2012 4 commits
  17. 12 Oct, 2012 4 commits
  18. 11 Oct, 2012 1 commit
    • unknown's avatar
      MDEV-3804: · 8215ce46
      unknown authored
      MySQL fix for bug#11765413 removed (we have better and more general fix for the problem).
      
      Test suite added.
      8215ce46
  19. 10 Oct, 2012 2 commits
    • unknown's avatar
      Fix of MDEV-3799. · 362c2bca
      unknown authored
      Find left table in right join (which turned to left join by reordering tables in join list but phisical order of tables of SELECT left as it was).
      362c2bca
    • Sergey Petrunya's avatar
      Backport of: olav.sandstaa@oracle.com-20120516074923-vd0dhp183vqcp2ql · d2d6c8b8
      Sergey Petrunya authored
      .. into MariaDB 5.3
      
      Fix for Bug#12667154 SAME QUERY EXEC AS WHERE SUBQ GIVES DIFFERENT
                           RESULTS ON IN() & NOT IN() COMP #3
      
      This bug causes a wrong result in mysql-trunk when ICP is used
      and bad performance in mysql-5.5 and mysql-trunk.
      
      Using the query from bug report to explain what happens and causes
      the wrong result from the query when ICP is enabled:
      
      1. The t3 table contains four records. The outer query will read
         these and for each of these it will execute the subquery.
      
      2. Before the first execution of the subquery it will be optimized. In
         this case the important is what happens to the first table t1:
         -make_join_select() will call the range optimizer which decides
          that t1 should be accessed using a range scan on the k1 index
          It creates a QUICK_RANGE_SELECT object for this.
         -As the last part of optimization the ICP code pushes the
          condition down to the storage engine for table t1 on the k1 index.
      
         This produces the following information in the explain for this table:
      
           2 DEPENDENT SUBQUERY t1 range k1 k1 5 NULL 3 Using index condition; Using filesort
      
         Note the use of filesort.
      
      3. The first execution of the subquery does (among other things) due
         to the need for sorting:
         a. Call create_sort_index() which again will call find_all_keys():
         b. find_all_keys() will read the required keys for all qualifying
            rows from the storage engine. To do this it checks if it has a
            quick-select for the table. It will use the quick-select for
            reading records. In this case it will read four records from the
            storage engine (based on the range criteria). The storage engine
            will evaluate the pushed index condition for each record.
         c. At the end of create_sort_index() there is code that cleans up a
            lot of stuff on the join tab. One of the things that is cleaned
            is the select object. The result of this is that the
            quick-select object created in make_join_select is deleted.
      
      4. The second execution of the subquery does the same as the first but
         the result is different:
         a. Call create_sort_index() which again will call find_all_keys()
            (same as for the first execution)
         b. find_all_keys() will read the keys from the storage engine. To
            do this it checks if it has a quick-select for the table. Now
            there is NO quick-select object(!) (since it was deleted in
            step 3c). So find_all_keys defaults to read the table using a
            table scan instead. So instead of reading the four relevant records
            in the range it reads the entire table (6 records). It then
            evaluates the table's condition (and here it goes wrong). Since
            the entire condition has been pushed down to the storage engine
            using ICP all 6 records qualify. (Note that the storage engine
            will not evaluate the pushed index condition in this case since
            it was pushed for the k1 index and now we do a table scan
            without any index being used).
            The result is that here we return six qualifying key values
            instead of four due to not evaluating the table's condition.
         c. As above.
      
      5. The two last execution of the subquery will also produce wrong results
         for the same reason.
      
      Summary: The problem occurs due to all but the first executions of the
      subquery is done as a table scan without evaluating the table's
      condition (which is pushed to the storage engine on a different
      index). This is caused by the create_sort_index() function deleting
      the quick-select object that should have been used for executing the
      subquery as a range scan.
      
      Note that this bug in addition to causing wrong results also can
      result in bad performance due to executing the subquery using a table
      scan instead of a range scan. This is an issue in MySQL 5.5.
      
      The fix for this problem is to avoid that the Quick-select-object that
      the optimizer created is deleted when create_sort_index() is doing
      clean-up of the join-tab. This will ensure that the quick-select
      object and the corresponding pushed index condition will be available
      and used by all following executions of the subquery.
      d2d6c8b8
  20. 08 Oct, 2012 1 commit
  21. 05 Oct, 2012 2 commits
    • Sergei Golubchik's avatar
      MDEV-3796 various RPM problems · 3012a5d5
      Sergei Golubchik authored
      cmake/cpack_rpm.cmake:
        * mark all cnf files with %config(noreplace)
        * add the forgotten postun script
      sql/sys_vars.cc:
        0 for a string variable means "no default. But datadir has the default value.
      support-files/rpm/server-postin.sh:
        * use mysqld --help to determine the correct datadir in the presence of my.cnf files
          (better than my_print_defaults, because it considers the correct group set).
        * Only create users, and chown/chmod if it's a fresh install, not an upgrade.
        * only run mysql_install_db if datadir does not exist
      3012a5d5
    • unknown's avatar
      Fix of MDEV-589. · b0d11675
      unknown authored
      The problem was in incorrect detection of merged views in tem_direct_view_ref::used_tables() .
      b0d11675
  22. 02 Oct, 2012 1 commit
  23. 01 Oct, 2012 2 commits
  24. 08 Oct, 2012 1 commit
    • unknown's avatar
      MDEV-519: mariadb-client-5.5 conflicts with package mytop · c288226e
      unknown authored
      Do not include mytop in mariadb-client-5.5 .deb package.
      
      There is already a Debian mytop package, so we get a package conflict.
      And there is no reason for the MariaDB project to guerrilla-take-over
      mytop maintenance.
      c288226e