1. 02 Dec, 2010 5 commits
  2. 30 Nov, 2010 1 commit
  3. 29 Nov, 2010 4 commits
  4. 28 Nov, 2010 1 commit
  5. 26 Nov, 2010 1 commit
  6. 25 Nov, 2010 2 commits
  7. 23 Nov, 2010 1 commit
  8. 22 Nov, 2010 2 commits
  9. 19 Nov, 2010 3 commits
    • Igor Babaev's avatar
      Got the declarations related to the class JOIN_CACHE, its derivatives and · cf46424f
      Igor Babaev authored
      companions out of sql_select.h into a separate file sql_join_cache.h.
      cf46424f
    • Igor Babaev's avatar
      Fixed LP bug #675922. · 17225075
      Igor Babaev authored
      The bug happened when BKA join algorithm used an incremental buffer
      and some of the fields over which access keys were constructed
      - were allocated in the previous join buffers
      - were non-nullable
      - belonged to inner tables of outer joins.
      For such fields an offset to the field value in the record is saved
      in the postfix of the record, and a zero offset indicates that the value 
      is null. Before the key using the field value is constructed the
      value is read into the corresponding field of the record buffer and
      the null bit is set for the field if the offset is 0. However if
      the field is non-nullable the table->null_row must be set to 1
      for null values and to 0 for non-null values  to ensure proper reading
      of the value from the record buffer.
      
      17225075
    • Igor Babaev's avatar
      Fixed LP #bug 660963. · 375cf7d8
      Igor Babaev authored
      The condition that was supposed to check whether a join table
      is an inner table of a nested outer join or semi-join was not
      quite correct in the code of the function check_join_cache_usage.
      That's why some queries with nested outer joins triggered 
      an assertion failure.
      Encapsulated this condition in the new method called
      JOIN_TAB::is_nested_inner and provided a proper code for it.
      
      Also corrected a bug in the code of check_join_cache_usage()
      that caused a downgrade of not first join buffers of the
      level 5 and 7 to level 4 and 6 correspondingly.
      375cf7d8
  10. 16 Nov, 2010 1 commit
    • Igor Babaev's avatar
      Fixed LP bug #675516. · 8228cca1
      Igor Babaev authored
      When pushing the condition for a table in the function
      JOIN_TAB::make_scan_filter the optimizer must not push
      conditions from WHERE if the table is some inner table
      of an outer join..
      8228cca1
  11. 15 Nov, 2010 3 commits
  12. 13 Nov, 2010 4 commits
    • Igor Babaev's avatar
      Fixed LP bug #674423. · 7068cfa0
      Igor Babaev authored
      The patch that introduced the new enumeration type Match_flag
      for the values of match flags in the records put into join buffers
      missed the necessary modifications in JOIN_CACHE::set_match_flag_if_none.
      This could cause wrong results for outer joins with on expressions
      only over outer tables.
      
      
      7068cfa0
    • Igor Babaev's avatar
      Merge · acf1981d
      Igor Babaev authored
      acf1981d
    • Igor Babaev's avatar
      Fixed LP bug #674431. · 0053ef0a
      Igor Babaev authored
      A non-incremental join buffer cannot be used for inner tables of nested
      outer joins. That's why when join_cache_level is set to 7 it must
      be downgraded to level 6 for the inner tables of nested outer joins.
      For the same reason with join_cache_level set to 3 no join buffer is
      used for the inner tables of outer joins (we could downgrade it to
      level 2, but this level does not support ref access).
      0053ef0a
    • Igor Babaev's avatar
      Corrected the fix for LP bug 672551. · f9d1f3c7
      Igor Babaev authored
      f9d1f3c7
  13. 12 Nov, 2010 3 commits
    • Igor Babaev's avatar
      Merge · 6b4dc02e
      Igor Babaev authored
      6b4dc02e
    • Igor Babaev's avatar
      Fixed LP bug #672551. · 637885c1
      Igor Babaev authored
      Made sure that the function that copy a long varchar field from the record
      buffer into a key buffer does not copy bytes after the field value.
      637885c1
    • Igor Babaev's avatar
      Merge · 349bcf09
      Igor Babaev authored
      349bcf09
  14. 11 Nov, 2010 1 commit
    • Igor Babaev's avatar
      Fixed LP bug#672497. · 12bd888c
      Igor Babaev authored
      Miscalculation of the minimum possible buffer size could trigger
      an assert in JOIN_CACHE_HASHED::put_record when if join_buffer_size
      was set to the values that is less than the length of one record to
      stored in the join buffer.
      It happened due to the following mistakes:
      - underestimation of space needed for a key in the hash table
        (we have to take into account that hash table can have more
        buckets than the expected number of records).
      - the value of maximum total length of all records stored in
        the join buffer was not saved in the field max_used_fieldlength
        by the function calc_used_field_length.
      12bd888c
  15. 10 Nov, 2010 2 commits
  16. 09 Nov, 2010 6 commits