1. 10 Dec, 2010 1 commit
  2. 08 Dec, 2010 1 commit
  3. 02 Dec, 2010 6 commits
  4. 30 Nov, 2010 1 commit
  5. 29 Nov, 2010 4 commits
  6. 28 Nov, 2010 1 commit
  7. 26 Nov, 2010 1 commit
  8. 25 Nov, 2010 2 commits
  9. 23 Nov, 2010 1 commit
  10. 22 Nov, 2010 2 commits
  11. 19 Nov, 2010 3 commits
    • Igor Babaev's avatar
      Got the declarations related to the class JOIN_CACHE, its derivatives and · 4e05898f
      Igor Babaev authored
      companions out of sql_select.h into a separate file sql_join_cache.h.
      4e05898f
    • Igor Babaev's avatar
      Fixed LP bug #675922. · ae4b5a32
      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.
      
      ae4b5a32
    • Igor Babaev's avatar
      Fixed LP #bug 660963. · 0a3922fc
      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.
      0a3922fc
  12. 16 Nov, 2010 1 commit
    • Igor Babaev's avatar
      Fixed LP bug #675516. · e25ac681
      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..
      e25ac681
  13. 15 Nov, 2010 3 commits
  14. 13 Nov, 2010 4 commits
    • Igor Babaev's avatar
      Fixed LP bug #674423. · 9441a9cc
      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.
      
      
      9441a9cc
    • Igor Babaev's avatar
      Merge · 9259ef4c
      Igor Babaev authored
      9259ef4c
    • Igor Babaev's avatar
      Fixed LP bug #674431. · 4e591173
      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).
      4e591173
    • Igor Babaev's avatar
      Corrected the fix for LP bug 672551. · 6cd2a668
      Igor Babaev authored
      6cd2a668
  15. 12 Nov, 2010 3 commits
    • Igor Babaev's avatar
      Merge · 46fe4318
      Igor Babaev authored
      46fe4318
    • Igor Babaev's avatar
      Fixed LP bug #672551. · d9bbc640
      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.
      d9bbc640
    • Igor Babaev's avatar
      Merge · 47b0f369
      Igor Babaev authored
      47b0f369
  16. 11 Nov, 2010 1 commit
    • Igor Babaev's avatar
      Fixed LP bug#672497. · 92772d6d
      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.
      92772d6d
  17. 10 Nov, 2010 2 commits
  18. 09 Nov, 2010 3 commits