1. 01 Feb, 2011 1 commit
    • Ole John Aske's avatar
      Fix for bug#57030: ('BETWEEN' evaluation is incorrect') · 24cd59d6
      Ole John Aske authored
                  
      Root cause for this bug is that the optimizer try to detect&
      optimize the special case:
            
      '<field>  BETWEEN c1 AND c1' and handle this as the condition '<field>  = c1'
                  
      This was implemented inside add_key_field(.. *field, *value[]...)
      which assumed field to refer key Field, and value[] to refer a [low...high]
      constant pair. value[0] and value[1] was then compared for equality.
                  
      In a 'normal' BETWEEN condition of the form '<field>  BETWEEN val1 and val2' the
      BETWEEN operation is represented with an argementlist containing the
      values [<field>, val1, val2] - add_key_field() is then called with
      parameters field=<field>, *value=val1.
                  
      However, if the BETWEEN predicate specified:
                  
       1)  '<const1>  BETWEEN<const2>  AND<field>
                  
      the 'field' and 'value' arguments to add_key_field() had to be swapped.
      This was implemented by trying to cheat add_key_field() to handle it like:
                  
       2) '<const1>  GE<const2>  AND<const1>  LE<field>'
                  
      As we didn't really replace the BETWEEN operation with 'ge' and 'le',
      add_key_field() still handled it as a 'BETWEEN' and compared the (swapped)
      arguments<const1>  and<const2>  for equality. If they was equal, the
      condition 1) was incorrectly 'optimized' to:
                  
       3) '<field>  EQ <const1>'
                  
      This fix moves this optimization of '<field>  BETWEEN c1 AND c1' into
      add_key_fields() which then calls add_key_equal_fields() to collect 
      key equality / comparison for the key fields in the BETWEEN condition.
      24cd59d6
  2. 31 Jan, 2011 4 commits
  3. 30 Jan, 2011 1 commit
  4. 29 Jan, 2011 1 commit
    • John H. Embretsen's avatar
      Fix for Bug#56817 - mysqlhotcopy tests fail when DBI and DBD-mysql perl modules are not found · 446dd52c
      John H. Embretsen authored
      Third updated patch - this version also includes copyright notice in added Perl script.
      This patch implements a check for such modules at runtime. If modules are not found or unable to load, the test is skipped with 
      the following message:
                  
                  [ skipped ]  Test needs Perl modules DBI and DBD::mysql
                  
      Checks are done via a helper Perl script which looks for the module in a runtime environment that is as similar to that of the 
      mysqlhotcopy script as possible (thus not intended for Windows environments at this time).
      The helper script tells mysql-test about the result by writing information to a temporary file that is later read by mysql-test.
      See comments in added files (have_dbi_dbd-mysql.inc and checkDBI_DBD-mysql.pl) for details.
      The patch also removes the mysqlhotcopy tests from the list of disabled tests.
      446dd52c
  5. 28 Jan, 2011 4 commits
    • Mattias Jonsson's avatar
      minor fix of copyright header · 74efe8c3
      Mattias Jonsson authored
      74efe8c3
    • Alfranio Correia's avatar
      BUG#59338 Inconsistency in binlog for statements that don't change any rows STATEMENT SBR · 6f12ed4a
      Alfranio Correia authored
      In SBR, if a statement does not fail, it is always written to the binary
      log, regardless if rows are changed or not. If there is a failure, a
      statement is only written to the binary log if a non-transactional (.e.g.
      MyIsam) engine is updated.
      
      INSERT ON DUPLICATE KEY UPDATE and INSERT IGNORE were not following the
      rule above and were not written to the binary log, if then engine was
      Innodb.
      
      mysql-test/extra/rpl_tests/rpl_insert_duplicate.test:
        Added test case.
      mysql-test/extra/rpl_tests/rpl_insert_ignore.test:
        Updated test case.
      mysql-test/include/commit.inc:
        Updated test case as the calls to the binary log have changed
        for INSERT ON DUPLICATE and INSERT IGNORE.
      mysql-test/r/commit_1innodb.result:
        Updated result file.
      mysql-test/suite/rpl/r/rpl_insert_duplicate.result:
        Added test case.
      mysql-test/suite/rpl/r/rpl_insert_ignore.result:
        Updated result file.
      mysql-test/suite/rpl/t/rpl_insert_duplicate.test:
        Added test case.
      mysql-test/suite/rpl/t/rpl_insert_ignore.test:
        Improved test case.
      6f12ed4a
    • Jimmy Yang's avatar
      Fix Bug #59465 btr_estimate_number_of_different_key_vals use incorrect offset · 2c53b74b
      Jimmy Yang authored
      for external_size
            
      rb://581 approved by Marko
      2c53b74b
    • Alfranio Correia's avatar
      BUG#55675 rpl.rpl_log_pos fails sporadically with error binlog truncated in the middle · ce326166
      Alfranio Correia authored
      There are two calls to read_log_event() on master in mysql_binlog_send().
      Each call reads 19 bytes in this test case and the error of the second
      read_log_event() is reported to the slave.
      
      The second read_log_event() starts from position 94 (75 + 19) to 113
      (75 + 19 + 19). Usually, there are two events in the binary log:
      
          . 0   - 3   - Header
          . 4   - 105 - Format Descriptor Event
          . 106 - 304 - Query Event
      
      and both reads fail because operations are reading from invalid positions
      as expected.
      
      However, mysql_binlog_send() does not use the same IO_CACHE that is used to
      write into binary log (i.e. mysql_bin_log.log_file) for the hot binary log.
      It opens the binary log file directly by calling open_binlog() and creates a
      separated IO_CACHE. So there is a possibly that after a master has flushed
      the binary log file, the content has been cached by the filesystem, and has
      not updated the disk file. If this happens, then a slave will only see part
      of the file, and thus the second read_log_event() will report event truncated
      error.
      
      To fix the problem, if the first read_log_event() has failed, we ensure that
      the second one will try to read from the same position.
      ce326166
  6. 27 Jan, 2011 7 commits
  7. 26 Jan, 2011 8 commits
  8. 25 Jan, 2011 7 commits
  9. 24 Jan, 2011 2 commits
  10. 21 Jan, 2011 1 commit
    • Bjorn Munch's avatar
      Bug #59063 rpl_migration_crash_safe fails on Windows · a32b2699
      Bjorn Munch authored
      Race condition may occur: mtr sees the .expect file but it's empty
      Fix: wait and try again if file is empty
      Addendum: try again if line isn't 'wait' or 'restart'
      Also added verbose printout of extra restart options
      a32b2699
  11. 20 Jan, 2011 1 commit
  12. 19 Jan, 2011 3 commits
    • Martin Hansson's avatar
      Bug#59173: Failure to handle DATE(TIME) values where Year, Month or Day is · 6a22002e
      Martin Hansson authored
      ZERO
            
      When dates are represented internally as strings, i.e. when a string constant
      is compared to a date value, both values are converted to long integers,
      ostensibly for fast comparisons. DATE typed integer values are converted to
      DATETIME by multiplying by 1,000,000 (each digit pair representing hour,
      minute and second, respectively). But the mechanism did not distuinguish
      cached INTEGER values, already in correct format, from newly converted
      strings.
      
      Fixed by marking the INTEGER cache as being of DATETIME format.
      6a22002e
    • Alexander Barkov's avatar
      Updating Copyright information · 7f8ebade
      Alexander Barkov authored
      7f8ebade
    • Bjorn Munch's avatar
      merge from 5.1-mtr · f1e6312e
      Bjorn Munch authored
      f1e6312e