1. 02 Nov, 2010 1 commit
    • Igor Babaev's avatar
      Fixed LP bug #669420. · 432c9b20
      Igor Babaev authored
      This bug in the MRR code for Maria engine caused wrong results when
      MRR was used to scan ranges for each record.
      
      Added test cases for bugs 669420 and 669423 (as a duplicate of 669420).
      432c9b20
  2. 30 Oct, 2010 1 commit
    • Igor Babaev's avatar
      Fixed bug #665049. · d48a8b60
      Igor Babaev authored
      The bug could cause wrong results for queries over Maria tables when
      index condition pushdown was used.
      d48a8b60
  3. 28 Oct, 2010 1 commit
  4. 27 Oct, 2010 3 commits
    • unknown's avatar
      Fixed LP bug #613009 · 3bdede3c
      unknown authored
      The set of Ordered keys of a rowid merge engine is dense. Thus when
      we decide not to create a key for a column that has only NULLs, this
      column shouldn't be counted.
      
      Notice that the caller has already precomputed the correct total
      number of keys that should be created.
      3bdede3c
    • unknown's avatar
      Fixed LP bug #609121 · 3b11e4f8
      unknown authored
      Post-review fix - avoid re-evaluation of the having clause
      when it evaluates to true.
      3b11e4f8
    • unknown's avatar
      Type of the variables fixed. · a09e5f50
      unknown authored
      sql/sql_expression_cache.cc:
        Type of the variable fixed.
      sql/sql_expression_cache.h:
        Type of the variable fixed.
      a09e5f50
  5. 26 Oct, 2010 2 commits
    • unknown's avatar
      Fixed LP bug #601156 · b4d5f30a
      unknown authored
      The cause for this bug is that MariaDB 5.3 still processes derived tables
      (subqueries in the FROM clause) by fully executing them during the parse
      phase. This will be remedied by MWL#106 once merged into the main 5.3.
      
      The assert statement is triggered when MATERIALIZATION is ON for EXPLAIN
      EXTENDED for derived tables with an IN subquery as follows:
      - mysql_parse calls JOIN::exec for the derived table as if it is regular
        execution (not explain).
      - When materialization is ON, this call goes all the way to
        subselect_hash_sj_engine::exec, which creates a partial match engine
        because of NULL presence.
      - In order to proceed with normal execution, the hash_sj engine substitutes
        itself with the created partial match engine.
      - After the parse phase it turns out that this execution was part of
        EXPLAIN EXTENDED, which in turn calls
        Item_cond::print -> ... -> Item_subselect::print,
        which calls engine->print().
        Since subselect_hash_sj_engine::exec substituted the current
        Item_subselect engine with a  partial match engine, eventually we call
        its ::print() method. However the partial match engines are designed only
        for execution, hence there is no implementation of this print() method.
      
      The fix temporarily removes the assert, until this code is merged with
      MWL#106.
      b4d5f30a
    • Sergei Golubchik's avatar
      fixes for windows · 7c24e8d5
      Sergei Golubchik authored
      7c24e8d5
  6. 25 Oct, 2010 3 commits
    • unknown's avatar
      Fixed LP bug #609121 · db4738a1
      unknown authored
      The bug was a result of missing logic to handle the case
      when there are 'expensive' predicates that are not evaluated
      during constant table optimization. Such is the case for
      the IN predicate, which is considered expensive if it is
      computed via materialization. In general this bug can be
      triggered with any expensive predicate instead of IN.
      
      When FALSE constant predicates are not evaluated during constant
      optimization, the execution path changes so that instead of
      setting JOIN::zero_result_cause after make_join_select, and
      exiting JOIN::exec via the call to return_zero_rows(), execution
      ends in JOIN::exec in the branch:
      if (join->tables == join->const_tables)
      {
        ...
        else if (join->send_row_on_empty_set())
           ...
           rc= join->result->send_data(*columns_list);
      }
      Unlike return_zero_rows(), this branch didn't evaluate the
      having clause of the query.
      
      The patch adds a call to evaluate the HAVING clause of a query even
      when all tables are constant, because even for an empty result set
      some aggregate functions may produce a NULL value.
      db4738a1
    • Sergei Golubchik's avatar
      merge with 5.1 · 04a4b433
      Sergei Golubchik authored
      04a4b433
    • Sergei Golubchik's avatar
      forgotten option handled · 37a78d68
      Sergei Golubchik authored
      37a78d68
  7. 24 Oct, 2010 1 commit
  8. 20 Oct, 2010 3 commits
    • Sergei Golubchik's avatar
      better fix for MySQL bugs · 60c15066
      Sergei Golubchik authored
      BUG#26447 prefer a clustered key for an index scan, as secondary index is always slower
        ... which was fixed to cause
      BUG#35850 queries take 50% longer
        ... and was reverted
      
      and
      
      BUG#39653 prefer a secondary index for an index scan, as clustered key is always slower
        ... which was fixed to cause
      BUG#55656 mysqldump takes six days instead of half an hour
        ... and was amended with a special case workaround
      
      
      sql/opt_range.cc:
        move get_index_only_read_time() into the handler class
      sql/sql_select.cc:
        use cost not an index length when choosing a cheaper index
      60c15066
    • Sergei Golubchik's avatar
      b56086cb
    • Sergei Golubchik's avatar
      updated test results · 36fe0441
      Sergei Golubchik authored
      36fe0441
  9. 19 Oct, 2010 5 commits
  10. 18 Oct, 2010 2 commits
  11. 17 Oct, 2010 1 commit
    • Sergey Petrunya's avatar
      MariaDB 5.2 -> 5.2 post-merge fixes: · f75fd03e
      Sergey Petrunya authored
      - When building multiple-equalities for HAVING, don't set JOIN::cond_equal, set
        join_having_equal instead. Setting JOIN::cond_equal based on HAVING makes 
        equality propagation data self-inconsistent
      f75fd03e
  12. 14 Oct, 2010 4 commits
  13. 13 Oct, 2010 5 commits
    • Sergey Petrunya's avatar
      Merge-in Sanja's post-merge fix · aad8a298
      Sergey Petrunya authored
      aad8a298
    • Sergey Petrunya's avatar
      Merge MariaDB 5.2 -> MariaDB 5.3 · 508e75c2
      Sergey Petrunya authored
      - post-merge fixes
      508e75c2
    • Michael Widenius's avatar
      Fixes for bugs found by running test case for LP#608369 "Page: 1 Found wrong... · 01672cc0
      Michael Widenius authored
      Fixes for bugs found by running test case for LP#608369 "Page: 1 Found wrong page type 0' on CHECK TABLE EXTENDED"
      Fixed overflow when using long --debug=xxxxxx line.
      Fixed that "mysqld --disable-debug --debug" works.
      Ensure that MariaDB doesn't start if the Aria engine didn't start and we are using Aria for temporary tables.
      More DBUG_ASSERT() and more info in debug log.
      
      
      dbug/dbug.c:
        Fixed crash in mysqld caused by an overflow when using long --debug=xxxxxx line
      sql/mysqld.cc:
        Fixed that "mysqld --disable-debug --debug" works.
        Documented myisam-recover=OFF option
      storage/maria/ha_maria.cc:
        Ensure that MariaDB doesn't start if the Aria engine didn't start and we are using Aria for temporary tables.
      storage/maria/ma_delete.c:
        Added missing write of changed key on node page.
        This could fix LP#608369 "Page: 1 Found wrong page type 0' on CHECK TABLE EXTENDED"
        Changed so that we log page numbers (not positions)
        Added KEY_OP_DEBUG_2 log entry to get more debug information into the log
      storage/maria/ma_key_recover.c:
        Changed so that we log page numbers (not positions)
        In case of wrong page information after index_redo, dump pages to debug log
      storage/maria/ma_loghandler.h:
        Added KEY_OP_DEBUG_2
      storage/maria/ma_search.c:
        Changed so that we log page numbers (not positions)
      storage/maria/ma_write.c:
        Changed so that we log page numbers (not positions)
      01672cc0
    • Sergey Petrunya's avatar
      More post-merge test result updates (2). · 49ae85af
      Sergey Petrunya authored
      49ae85af
    • unknown's avatar
      version of mysqld changed. · 23de53f5
      unknown authored
      23de53f5
  14. 12 Oct, 2010 3 commits
  15. 10 Oct, 2010 3 commits
  16. 07 Oct, 2010 1 commit
    • Michael Widenius's avatar
      Fixes some bug in Aria recovery: · 2f85f78d
      Michael Widenius authored
      - _ma_apply_redo_index: Assertion `page_offset != 0 && page_offset + length <= page_length' failed
      Fixes one bug and one log assert when inserting rows:
      - _ma_log_split: Assertion `org_length <= info->s->max_index_block_size' failed
      - write_block_record:  Assertion '(data_length < MAX_TAIL_SIZE(block_size)' failed
      Mark in recovery log where _ma_log_add() calls was done (for better debugging).
      
      storage/maria/ma_bitmap.c:
        Don't write a head part on a tail page. (Caused an assert in write_block_record())
      storage/maria/ma_delete.c:
        Mark in recovery log where _ma_log_add() calls was done
      storage/maria/ma_key_recover.c:
        Mark in recovery log where _ma_log_add() calls was done
        Fixed not handled logging case for overfull index pages.
      storage/maria/ma_key_recover.h:
        Mark in recovery log where _ma_log_add() calls was done
      storage/maria/ma_loghandler.h:
        Mark in recovery log where _ma_log_add() calls was done
      storage/maria/ma_rt_key.c:
        Mark in recovery log where _ma_log_add() calls was done
      storage/maria/ma_write.c:
        Mark in recovery log where _ma_log_add() calls was done.
        Fixed wrong call to _ma_split_page() for overfull pages
      2f85f78d
  17. 06 Oct, 2010 1 commit