1. 23 Nov, 2009 7 commits
  2. 22 Nov, 2009 1 commit
    • unknown's avatar
      Bug #48350 truncate temporary table crashes replication · fa4c0203
      unknown authored
      In RBR, All statements operating on temporary tables should not be binlogged.
      Despite this fact, after executing 'TRUNCATE... ' on a temporary table, 
      the command is still logged, even if in row-based mode. Consequently, this raises
      problems in the slave as the table may not exist, resulting in an
      execution failure. Ultimately, this causes the slave to report
      an error and abort.
      
      After this patch, 'TRUNCATE ...' statement on a temporary table will not be
      binlogged in RBR.
      fa4c0203
  3. 21 Nov, 2009 3 commits
    • Alfranio Correia's avatar
      20ea2a0c
    • Davi Arnaut's avatar
      39ef6c55
    • Davi Arnaut's avatar
      Bug#41726: upgrade from 5.0 to 5.1.30 crashes if you didn't run mysql_upgrade · 25782585
      Davi Arnaut authored
      The problem is that the server could crash when attempting
      to access a non-conformant proc system table. One such case
      was a crash when invoking stored procedure related statements
      on a 5.1 server with a proc system table in the 5.0 format.
      
      The solution is to validate the proc system table format
      before attempts to access it are made. If the table is not
      in the format that the server expects, a message is written
      to the error log and the statement that caused the table to
      be accessed fails.
      
      mysql-test/r/sp-destruct.result:
        Add test case result for Bug#41726
      mysql-test/t/sp-destruct.test:
        Add test case for Bug#41726
      sql/event_db_repository.cc:
        Update code to use new structures.
      sql/sp.cc:
        Describe the proc table format and use it to validate when
        opening a instance of the table.
        Add a check to insure that a error message is written to
        the error log only once.
      sql/sql_acl.cc:
        Remove unused variable and use new structure.
      sql/sql_acl.h:
        Export field definition.
      sql/table.cc:
        Accept the field count and definition in a single structure.
      sql/table.h:
        Combine the field count and definition in a single structure.
        Transform function into a class in order to support different
        ways of reporting a error.
        Add a pointer cache to TABLE_SHARE.
      25782585
  4. 20 Nov, 2009 12 commits
  5. 19 Nov, 2009 2 commits
    • Christopher Powers's avatar
      Bug #48739 MySQL crashes on specific INTERVAL in select query · 55852708
      Christopher Powers authored
      Fixed crash caused by x64 int/long incompatibility introduced
      in Bug #29125.
      
      sql/item_timefunc.cc:
        Fixed crash caused by int/long incompatibility on x64 systems.
        
        Changed two "uint" casts and a "long" declartion to "int" in order to
        ensure that the integer sign is preserved.
        
        See Bug #48739 for details.
      55852708
    • Georgi Kodinov's avatar
      Bug #48665: sql-bench's insert test fails due to wrong result · 00f94d9f
      Georgi Kodinov authored
      When merging ranges during calculation of the result of OR
      to two range sets the current range may be obsoleted by the 
      resulting merged range.
      The first overlapping range can be obsoleted as well.
      
      Fixed by moving the pointer to the first overlapping range to the
      pointer of the resulting union range.
      Added few comments at key places in key_or().
      00f94d9f
  6. 18 Nov, 2009 7 commits
    • Georgi Kodinov's avatar
      Bug#48864: MySQL fails to compile on 64 bit Fedora 12 · e499b503
      Georgi Kodinov authored
      Fixed 2 errors in comp_err executable : 
      1. Wrong (off by 1) length passed to my_checksum()
      2. strmov() was used on overlapping strings. This is
       not legal according to the docs in stpcpy(). Used 
      the overlap safe memmove() instead.
      e499b503
    • Sven Sandberg's avatar
      BUG#47995: Mark system functions as unsafe · 146bb95f
      Sven Sandberg authored
      Problem: Some system functions that could return different values on
      master and slave were not marked unsafe. In particular:
       GET_LOCK
       IS_FREE_LOCK
       IS_USED_LOCK
       MASTER_POS_WAIT
       RELEASE_LOCK
       SLEEP
       SYSDATE
       VERSION
      Fix: Mark these functions unsafe.
      
      
      mysql-test/extra/rpl_tests/rpl_stm_000001.test:
        - The test does not work in mixed mode any more, since it tries to
          simulate an error in the sql thread in a query that uses get_lock.
          Since get_lock now causes the query to be logged in row format,
          the error didn't happen. Hence, we now force statement mode.
        - Warnings must be disabled when the unsafe query is issued.
        - Replaced some save_master_pos+connection slave+sync_with_master
          by sync_slave_with_master.
      mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
        updated result file
      mysql-test/suite/binlog/r/binlog_stm_row.result:
        updated result file
      mysql-test/suite/binlog/r/binlog_unsafe.result:
        updated result file
      mysql-test/suite/binlog/t/binlog_killed.test:
        binlog_killed only works in statement format now, since
        it switches to row mode in mixed mode.
      mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam.test:
        suppress warnings for unsafe statements
      mysql-test/suite/binlog/t/binlog_stm_row.test:
        - Suppress warnings in test that causes warnings.
        - The test sets binlog format explicitly, so no need to execute it
          twice.
      mysql-test/suite/binlog/t/binlog_unsafe.test:
        Added test for all unsafe system functions. This test also includes
        system functions that were unsafe prior to BUG#47995.
      mysql-test/suite/rpl/r/rpl_err_ignoredtable.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_get_lock.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_nondeterministic_functions.result:
        new result file
      mysql-test/suite/rpl/r/rpl_stm_000001.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_trigger.result:
        updated result file
      mysql-test/suite/rpl/t/rpl_err_ignoredtable.test:
        - suppress warnings for unsafe statement
        - replaced save_master_pos+connection slave+sync_with_master
          with sync_slave_with_master
      mysql-test/suite/rpl/t/rpl_get_lock.test:
        update test case that causes new warnings
      mysql-test/suite/rpl/t/rpl_nondeterministic_functions.test:
        Added new test case for nondeterministic functions.
      mysql-test/suite/rpl/t/rpl_trigger.test:
        update test case that causes new warnings
      sql/item_create.cc:
        Marked some system functions unsafe.
      sql/item_strfunc.cc:
        Clarified comment related to this bug.
      sql/sql_yacc.yy:
        Marked sysdate unsafe.
      146bb95f
    • Jon Olav Hauglid's avatar
      Postfix for Bug #47682 strange behaviour of INSERT DELAYED · 45a0a900
      Jon Olav Hauglid authored
      Fixed a problem with the test case when executed with ps-protocol.
      There the conflicing lock would be noticed during prepare, not
      during execution of the insert - leading to a different (but 
      equally appropriate) error message.
      45a0a900
    • Mattias Jonsson's avatar
      merge · b5a2f280
      Mattias Jonsson authored
      b5a2f280
    • Magne Mahre's avatar
      merge · 1c8ebdb8
      Magne Mahre authored
      1c8ebdb8
    • Magne Mahre's avatar
      Bug #46425 crash in Diagnostics_area::set_ok_status , empty statement, · a9d63391
      Magne Mahre authored
                 DELETE IGNORE
      
      The ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG error was set in the
      diagnostics area when it happened, but the DELETE cleanup code
      never checked for a non-fatal error condition, thus trying to
      set diag.area to "ok".  This triggered an assert checking that
      the diag.area was empty.
      
      The fix was to test if there existed a non-fatal error condition
      (thd->is_error() before ok'ing the operation.
      a9d63391
    • Jon Olav Hauglid's avatar
      Bug #47682 strange behaviour of INSERT DELAYED · 97e07d7a
      Jon Olav Hauglid authored
      The problem was a "self-deadlock" if the connection issuing INSERT DELAYED
      had both the global read lock (FLUSH TABLES WITH READ LOCK) and LOCK TABLES
      mode active. The table being inserted into had to be different from the 
      table(s) locked by LOCK TABLES.
      
      For INSERT DELAYED, the connection thread waits until the handler thread has
      opened and locked its table before returning. But since the global read lock
      was active, the handler thread would be unable to lock and would wait for the
      global read lock to go away.
      
      So the handler thread would be waiting for the connection thread to release
      the global read lock while the connection thread was waiting for the handler
      thread to lock the table. This gave a "self-deadlock" (same connection,
      different threads).
      
      The deadlock would only happen if we also had LOCK TABLES mode since the
      INSERT otherwise will try to get protection against global read lock before
      starting the handler thread. It will then notice that the global read lock
      is owned by the same connection and report ER_CANT_UPDATE_WITH_READLOCK.
      
      This patch removes the deadlock by reporting ER_CANT_UPDATE_WITH_READLOCK
      also if we are inside LOCK TABLES mode.
      
      Test case added to delayed.test.
      97e07d7a
  7. 17 Nov, 2009 8 commits
    • Mattias Jonsson's avatar
      merge · 352cc8a9
      Mattias Jonsson authored
      352cc8a9
    • Mattias Jonsson's avatar
      merge · 08e37788
      Mattias Jonsson authored
      08e37788
    • Mattias Jonsson's avatar
      backport of bug#45904 from mysql-pe to 5.1 · 2cd5f29f
      Mattias Jonsson authored
      sql/sql_partition.cc:
        Bug#45904 Used list_of_part_fields instead of list_of_subpart_fields to discover if KEY subpartitioning => caused failure when charset=utf8 even for subpartitioning by key, would also allow for subpartitioning by hash with utf8 erroneously
      2cd5f29f
    • unknown's avatar
      Merge from mysql-5.1.41-release · 700b89af
      unknown authored
      700b89af
    • Kent Boortz's avatar
      Merge · 1a3c1eb8
      Kent Boortz authored
      1a3c1eb8
    • Kent Boortz's avatar
    • Mattias Jonsson's avatar
      merge · 66c02ffd
      Mattias Jonsson authored
      66c02ffd
    • Alexey Kopytov's avatar
      Bug #48472: Loose index scan inappropriately chosen for some · 37f45abf
      Alexey Kopytov authored
                  WHERE conditions 
       
      check_group_min_max() checks if the loose index scan 
      optimization is applicable for a given WHERE condition, that is 
      if the MIN/MAX attribute participates only in range predicates 
      comparing the corresponding field with constants. 
       
      The problem was that it considered the whole predicate suitable 
      for the loose index scan optimization as soon as it encountered 
      a constant as a predicate argument. This is obviously wrong for 
      cases when a constant is the first argument of a predicate 
      which does not satisfy the above condition. 
       
      Fixed check_group_min_max() so that all arguments of the input 
      predicate are considered to decide if it passes the test, even 
      though a constant has already been encountered.
      
      mysql-test/r/group_min_max.result:
        Added a test case for bug #48472.
      mysql-test/t/group_min_max.test:
        Added a test case for bug #48472.
      sql/opt_range.cc:
        Fixed check_group_min_max() so that all arguments of the input 
        predicate are considered to decide if it passes the test, even 
        though a constant has already been encountered.
      37f45abf