1. 23 Mar, 2012 3 commits
    • Michael Widenius's avatar
      Fixes lp:941889 "JOIN constructors takes a long time in 5.3" · 8e825a22
      Michael Widenius authored
      - Remove all references of MAX_TABLES from JOIN struct and make these dynamic
      - Updated Join_plan_state to allocate just as many elements as it's needed
      
      
      sql/opt_subselect.cc:
        Optimized version of Join_plan_state
      sql/sql_select.cc:
        Set join->positions and join->best_positions dynamicly
        Don't call update_virtual_fields() if table->vfield is not set.
      sql/sql_select.h:
        Remove all references of MAX_TABLES from JOIN struct and Join_plan_state and make these dynamic
      8e825a22
    • Michael Widenius's avatar
      Speedups: · de1765fb
      Michael Widenius authored
      - Optimize away calls to hp_rec_hashnr() by cashing hash
      - Try to get more rows / block (to minimize overhead of HP_PTRS) in HEAP tables.
      
      
      storage/heap/_check.c:
        Optimize away calls to hp_rec_hashnr() by cashing hash.
        Print cleanups
      storage/heap/heapdef.h:
        Added place to hold calculated hash value for row
      storage/heap/hp_create.c:
        Try to get more rows / block (to minimize overhead of HP_PTRS)
      storage/heap/hp_delete.c:
        Optimize away calls to hp_rec_hashnr() by cashing hash.
      storage/heap/hp_hash.c:
        Optimize away calls to hp_rec_hashnr() by cashing hash.
        Remove some not needed DBUG_PRINT
      storage/heap/hp_test2.c:
        Increased max table size as now heap tables takes a bit more space (a few %)
      storage/heap/hp_write.c:
        Optimize away calls to hp_rec_hashnr() by cashing hash.
        Remove duplicated code
        More DBUG_PRINT
      storage/maria/ma_create.c:
        More DBUG_PRINT
      de1765fb
    • Igor Babaev's avatar
      Fixed LP bug #954900. · da9aabbb
      Igor Babaev authored
      If the first component of a ref key happened to be a constant appeared
      after constant row substitution then no store_key element should be
      created for such a component. Yet create_ref_for_key() erroneously could
      create such an element that caused construction of invalid ref keys and
      wrong results for some joins.
      da9aabbb
  2. 22 Mar, 2012 2 commits
  3. 21 Mar, 2012 6 commits
  4. 18 Mar, 2012 2 commits
    • Sergey Petrunya's avatar
      BUG#952583: Server crashes in Item_field::fix_after_pullout on INSERT .. SELECT · 91d17a9c
      Sergey Petrunya authored
      - Take into account that there may exist Item_field objects with context==NULL.
      91d17a9c
    • Sergey Petrunya's avatar
      BUG#952372: Server crashes on 2nd execution of PS in find_field_in_tables with... · 5805908b
      Sergey Petrunya authored
      BUG#952372: Server crashes on 2nd execution of PS in find_field_in_tables with semijoin+materialization
      - The problem was that convert_subq_to_jtbm() attached the semi-join
        TABLE_LIST object into the wrong list: they used to attach it to the 
        end of parent_lex->leaf_tables.head()->next_local->...->next_local.
        This was apparently inccorect, as one can construct an example where 
        JTBM nest is attached to a table that is inside some mergeable VIEW, which
        breaks (causes crash) for name resolution on the subsequent statement
        re-execution.
      - Solution: Attach to the "right" list. The "wording" was copied from
        st_select_lex::handle_derived.
      
      5805908b
  5. 15 Mar, 2012 1 commit
  6. 14 Mar, 2012 3 commits
  7. 13 Mar, 2012 3 commits
    • Igor Babaev's avatar
      Merge. · 0f3b8ef2
      Igor Babaev authored
      0f3b8ef2
    • Igor Babaev's avatar
      Fixed LP bug #953649. · c1f5e25c
      Igor Babaev authored
      Do not call, directly or indirectly, SQL_SELECT::test_quick_select()
      for derived materialized tables / views when optimizing joins referring
      to these tables / views to get cost estimates of materialization.
      The current code does not create B-tree indexes for materialized 
      derived tables / views. So now it's not possible to get any estimates
      for ranges conditions over the results of the materialization.
      
      The function mysql_derived_create() must take into account the fact
      that array of the KEY structures specifying the keys over a derived
      table / view may be moved after the optimization phase if the
      derived table / view  is materialized.
      
      c1f5e25c
    • Michael Widenius's avatar
      Fixed bug lp:917689 "Archive table corruption crashing MariaDB signal 11" · 6f06cef0
      Michael Widenius authored
      Added 'from_end' as extra parameter to Field::unpack() to detect wrong from data.
      Change ha_archive::unpack_row() to detect wrong field lengths.
      Replication code changed to detect wrong field information in events.
      
      
      mysql-test/r/archive.result:
        dded test case for lp:917689
      sql/field.cc:
        Added 'from_end' as extra parameter to Field::unpack() to detect wrong from data.
        Removed not used 'unpack_key' functions.
      sql/field.h:
        Added 'from_end' as extra parameter to Field::unpack() to detect wrong from data.
        Removed not used 'unpack_key' functions.
        Removed some not needed unpack() functions.
      sql/filesort.cc:
        Added buffer end parameter to unpack_addon_fields()
      sql/log_event.h:
        Added end of buffer argument to unpack_row()
      sql/log_event_old.cc:
        Added end of buffer argument to unpack_row()
      sql/log_event_old.h:
        Added end of buffer argument to unpack_row()
      sql/records.cc:
        Added buffer end parameter to unpack_addon_fields()
      sql/rpl_record.cc:
        Added end of buffer argument to unpack_row()
        Added detection of wrong field information in events
      sql/rpl_record.h:
        Added end of buffer argument to unpack_row()
      sql/rpl_record_old.cc:
        Added end of buffer argument to unpack_row()
        Added detection of wrong field information in events
      sql/rpl_record_old.h:
        Added end of buffer argument to unpack_row()
      sql/table.h:
        Added buffer end parameter to unpack()
      storage/archive/ha_archive.cc:
        Change ha_archive::unpack_row() to detect wrong field lengths.
        This fixes lp:917689
      6f06cef0
  8. 12 Mar, 2012 7 commits
  9. 09 Mar, 2012 4 commits
    • Igor Babaev's avatar
      Fixed LP bug #930814. · 8c083498
      Igor Babaev authored
      This bug was introduced into mariadb 5.2 in the December 2010 with
      the patch that added a new engine property: the ability to support
      virtual columns.    
      As a result of this bug the information from frm files for tables 
      that contained virtual columns did not appear in the information schema
      tables.
      8c083498
    • Michael Widenius's avatar
      Added test case for lp:905782 "Assertion `pageno < ((1ULL) << 40)' failed at... · 028523e9
      Michael Widenius authored
      Added test case for lp:905782 "Assertion `pageno < ((1ULL) << 40)' failed at ma_pagecache.c:3438: pagecache_read or table corruption on INSERT into a ucs2 table"
      The orignal bug has been fixed earlier
      028523e9
    • unknown's avatar
      ea736c93
    • Igor Babaev's avatar
      Fixed LP bug #884175. · af7213d5
      Igor Babaev authored
      If in the where clause of the a query some comparison conditions on the
      field under a MIN/MAX aggregate function contained constants whose sizes
      exceeded the size of the field then the query could return a wrong result
      when the optimizer had chosen to apply the MIN/MAX optimization.
      With such conditions the MIN/MAX optimization still could be applied, yet
      it would require a more thorough analysis of the keys built to find
      the value of MIN/MAX aggregate functions with index look-ups.   
      The current patch just prohibits using the MIN/MAX optimization in this
      situation.
      af7213d5
  10. 06 Mar, 2012 4 commits
  11. 05 Mar, 2012 4 commits
    • Michael Widenius's avatar
      Automatic merge · 4ab7a33e
      Michael Widenius authored
      4ab7a33e
    • Michael Widenius's avatar
      Ensure that we mark all processed tables as 'properly closed'. · c4375068
      Michael Widenius authored
      This is needed as last log entry may be a DDL that is not processed and then a table may be left in 'not properly closed state' even if information is correct in it.
      c4375068
    • unknown's avatar
      Fix for LP BUG#944504 · 8a5940c4
      unknown authored
      Problem is that subquery execution can't be called during prepare/optimize phase.
      
      Also small fix for subquery test suite.
      8a5940c4
    • Igor Babaev's avatar
      Fixed LP bug #944782. · 6f3c39a0
      Igor Babaev authored
      This bug in the function JOIN::drop_unused_derived_keys() could
      leave the internal structures for a materialized derived table
      in an inconsistent state. This led to a not quite correct EXPLAIN
      output when no additional key had been created to access the table.
      It also may lead to more serious consequences: so, the test case
      added with this fix caused a crash in mariadb-5.5.20.  
      6f3c39a0
  12. 01 Mar, 2012 1 commit
    • Igor Babaev's avatar
      Fixed LP bug #943543. · 000deedf
      Igor Babaev authored
      This bug appeared after the patch for bug 939009 that in the
      function merge_key_fields forgot to reset a proper value for
      the val field in the result of the merge operation of the key
      field created for a regular key access and  the key field
      created to look for a NULL key.
      
      Adjusted the results of the test case for bug 939009 that
      actually were incorrect. 
      000deedf