1. 25 Mar, 2012 1 commit
    • Sergey Petrunya's avatar
      BUG#962667: Assertion `0' failed in QUICK_INDEX_SORT_SELECT::need_sorted_output() · d0547098
      Sergey Petrunya authored
      - The problem was that
        = we've picked a LooseScan that used full index scan (tab->type==JT_ALL) on certain index.
        = there was also a quick select (tab->quick!=NULL), that used other indexes.
        = some old code assumes that (tab->type==JT_ALL && tab->quick) -> means that the
          quick select should be used, which is not true.
      Fixed by discarding the quick select as soon as we know we're using LooseScan
      without using the quick select.
      d0547098
  2. 24 Mar, 2012 1 commit
  3. 23 Mar, 2012 4 commits
    • Michael Widenius's avatar
      Speedup: · c36bdf1c
      Michael Widenius authored
      - Don't call update_virtual_fields() if table->vfield is not set
      - Don't prealloc memory for in open_tables() as this is very seldom used.
      
      
      sql/records.cc:
        Don't call update_virtual_fields() if table->vfield is not set
      sql/sql_base.cc:
        Don't prealloc memory for in open_tables() as this is very seldom used.
        Don't call update_virtual_fields() if table->vfield is not set
      sql/sql_delete.cc:
        Don't call update_virtual_fields() if table->vfield is not set
      sql/sql_handler.cc:
        Don't call update_virtual_fields() if table->vfield is not set
      sql/sql_join_cache.cc:
        Don't call update_virtual_fields() if table->vfield is not set
        Move some frequent values to local variables
      sql/sql_table.cc:
        Don't call update_virtual_fields() if table->vfield is not set
      sql/sql_update.cc:
        Don't call update_virtual_fields() if table->vfield is not set
      sql/table.cc:
        Assert if update_virtual_fields is called with wrong parameters
      c36bdf1c
    • 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
  4. 22 Mar, 2012 2 commits
  5. 21 Mar, 2012 6 commits
  6. 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
  7. 15 Mar, 2012 1 commit
  8. 14 Mar, 2012 3 commits
  9. 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
  10. 12 Mar, 2012 7 commits
  11. 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
  12. 06 Mar, 2012 4 commits
  13. 05 Mar, 2012 2 commits