1. 15 Sep, 2008 3 commits
  2. 11 Sep, 2008 4 commits
  3. 10 Sep, 2008 2 commits
  4. 09 Sep, 2008 1 commit
  5. 06 Sep, 2008 4 commits
  6. 05 Sep, 2008 13 commits
  7. 04 Sep, 2008 1 commit
  8. 29 Aug, 2008 3 commits
  9. 28 Aug, 2008 4 commits
  10. 27 Aug, 2008 5 commits
    • Gleb Shchepa's avatar
      Bug #37799: SELECT with a BIT column in WHERE clause · 54a59681
      Gleb Shchepa authored
                  returns unexpected result
      
      If:
        1. a table has a not nullable BIT column c1 with a length
           shorter than 8 bits and some additional not nullable
           columns c2 etc, and
        2. the WHERE clause is like: (c1 = constant) AND c2 ...,
      the SELECT query returns unexpected result set.
      
      
      The server stores BIT columns in a tricky way to save disk
      space: if column's bit length is not divisible by 8, the
      server places reminder bits among the null bits at the start
      of a record. The rest bytes are stored in the record itself,
      and Field::ptr points to these rest bytes.
      
      However if a bit length of the whole column is less than 8,
      there are no remaining bytes, and there is nothing to store in
      the record at its regular place. In this case Field::ptr points
      to bytes actually occupied by the next column in a record.
      If both columns (BIT and the next column) are NOT NULL,
      the Field::eq function incorrectly deduces that this is the
      same column, so query transformation/equal item elimination
      code (see build_equal_items_for_cond) may mix these columns
      and damage conditions containing references to them.
      
      
      mysql-test/r/type_bit.result:
        Added test case for bug #37799.
      mysql-test/t/type_bit.test:
        Added test case for bug #37799.
      sql/field.h:
        1. The Field::eq function has been modified to take types of
        comparing columns into account to distinguish between BIT and
        not BIT columns referencing the same bytes in a record.
        
        2. Unnecessary type comparison has been removed from the
        Field_bit::eq function (moved to Field::eq).
      54a59681
    • Mats Kindahl's avatar
      Merging 5.1 into 5.1-rpl-merge · 84b81e6c
      Mats Kindahl authored
      84b81e6c
    • Georgi Kodinov's avatar
      merged 5.1-bugteam into B37548 tree · 0b24a954
      Georgi Kodinov authored
      0b24a954
    • Georgi Kodinov's avatar
      Bug#37548: result value erronously reported being NULL in certain subqueries · cab267ec
      Georgi Kodinov authored
            
      When switching to indexed ORDER BY we must be sure to reset the index read
      flag if we are switching from a covering index to non-covering.
      
      mysql-test/r/subselect.result:
        Bug#37548: test case
      mysql-test/t/subselect.test:
        Bug#37548: test case
      sql/sql_select.cc:
        Bug#37548: update the index read flag if the index for indexed ORDER BY is not
            covering.
      cab267ec
    • Mats Kindahl's avatar
      Automerge · fc31480f
      Mats Kindahl authored
      fc31480f