1. 29 May, 2009 1 commit
    • Kristofer Pettersson's avatar
      Bug#44658 Create procedure makes server crash when user does not have ALL privilege · 66e0ee66
      Kristofer Pettersson authored
      MySQL crashes if a user without proper privileges attempts to create a procedure.
      
      The crash happens because more than one error state is pushed onto the Diagnostic
      area. In this particular case the user is denied to implicitly create a new user
      account with the implicitly granted privileges ALTER- and EXECUTE ROUTINE.
      
      The new account is needed if the original user account contained a host mask.
      A user account with a host mask is a distinct user account in this context.
      An alternative would be to first get the most permissive user account which
      include the current user connection and then assign privileges to that
      account. This behavior change is considered out of scope for this bug patch.
      
      The implicit assignment of privileges when a user creates a stored routine is a
      considered to be a feature for user convenience and as such it is not
      a critical operation. Any failure to complete this operation is thus considered
      non-fatal (an error becomes a warning).
      
      The patch back ports a stack implementation of the internal error handler interface.
      This enables the use of multiple error handlers so that it is possible to intercept
      and cancel errors thrown by lower layers. This is needed as a error handler already
      is used in the call stack emitting the errors which needs to be converted.
      
      
      mysql-test/r/grant.result:
        * Added test case for bug44658
      mysql-test/t/grant.test:
        * Added test case for bug44658
      sql/sp.cc:
        * Removed non functional parameter no_error and my_error calls as all errors
          from this function will be converted to a warning anyway.
        * Change function return type from int to bool.
      sql/sp.h:
        * Removed non functional parameter no_error and my_error calls as all errors
          from this function will be converted to a warning anyway.
        * Changed function return value from int to bool
      sql/sql_acl.cc:
        * Removed the non functional no_error parameter from the function prototype.
          The function is called from two places and in one of the places we now 
          ignore errors through error handlers.
        * Introduced the parameter write_to_binlog
        * Introduced an error handler to cancel any error state from mysql_routine_grant.
        * Moved my_ok() signal from mysql_routine_grant to make it easier to avoid
          setting the wrong state in the Diagnostic area.
        * Changed the broken error state in sp_grant_privileges() to a warning
          so that if "CREATE PROCEDURE" fails because "Password hash isn't a hexidecimal
          number" it is still clear what happened.
      sql/sql_acl.h:
        * Removed the non functional no_error parameter from the function prototype.
          The function is called from two places and in one of the places we now 
          ignore errors through error handlers.
        * Introduced the parameter write_to_binlog
        * Changed return type for sp_grant_privileges() from int to bool
      sql/sql_class.cc:
        * Back ported implementation of internal error handler from 6.0 branch
      sql/sql_class.h:
        * Back ported implementation of internal error handler from 6.0 branch
      sql/sql_parse.cc:
        * Moved my_ok() signal from mysql_routine_grant() to make it easier to avoid
          setting the wrong state in the Diagnostic area.
      66e0ee66
  2. 11 May, 2009 2 commits
    • Mats Kindahl's avatar
      Merging with 5.1-bugteam tree. · 206bdd67
      Mats Kindahl authored
      206bdd67
    • Mats Kindahl's avatar
      Bug #44442: Incident events are silent in mysqlbinlog output · 8f95c5e1
      Mats Kindahl authored
            
      In the output from mysqlbinlog, incident log events were
      represented as just a comment. Since the incident log event
      represents an incident that could cause the contents of the
      database to change without being logged to the binary log,
      it means that if the SQL is applied to a server, it could
      potentially lead to that the databases are out of sync.
      
      In order to handle that, this patch adds the statement "RELOAD
      DATABASE" to the SQL output for the incident log event. This will
      require a DBA to edit the file and handle the case as apropriate
      before applying the output to a server.
      
      mysql-test/suite/binlog/t/binlog_incident-master.opt:
        Options file to cause server to generate an incident log
        event when executing a REPLACE.
      mysql-test/suite/binlog/t/binlog_incident.test:
        Test to check that the incident log event is represented
        correctly in the output from mysqlbinlog.
      sql/log_event.cc:
        The incident log event now ouput a "RELOAD DATABASE" instead
        of just a comment. RELOAD DATABASE is not an existing command
        and will generate a syntax error.
      8f95c5e1
  3. 10 May, 2009 2 commits
    • Ramil Kalimullin's avatar
      Manual merge. · 3c08b9b1
      Ramil Kalimullin authored
      3c08b9b1
    • Ramil Kalimullin's avatar
      Fix for bug#42009: SELECT into variable gives different results to direct SELECT · d615a11b
      Ramil Kalimullin authored
      Problem: storing "SELECT ... INTO @var ..." results in variables we used val_xxx()
      methods which returned results of the current row. 
      So, in some cases (e.g. SELECT DISTINCT, GROUP BY or HAVING) we got data
      from the first row of a new group (where we evaluate a clause) instead of
      data from the last row of the previous group.
      
      Fix: use val_xxx_result() counterparts to get proper results.
      
      
      mysql-test/r/distinct.result:
        Fix for bug#42009: SELECT into variable gives different results to direct SELECT
          - results adjusted.
      mysql-test/r/user_var.result:
        Fix for bug#42009: SELECT into variable gives different results to direct SELECT
          - test result.
      mysql-test/t/user_var.test:
        Fix for bug#42009: SELECT into variable gives different results to direct SELECT
          - test case.
      sql/item_func.cc:
        Fix for bug#42009: SELECT into variable gives different results to direct SELECT
          - Item_func_set_user_var::save_item_result() added to evaluate and store 
            an item's result into a user variable.
      sql/item_func.h:
        Fix for bug#42009: SELECT into variable gives different results to direct SELECT
          - Item_func_set_user_var::save_item_result() added to evaluate and store 
            an item's result into a user variable.
      sql/sql_class.cc:
        Fix for bug#42009: SELECT into variable gives different results to direct SELECT
          - use Item_func_set_user_var::save_item_result() to store results into user 
            variables.
      d615a11b
  4. 08 May, 2009 7 commits
  5. 07 May, 2009 2 commits
    • Alexey Kopytov's avatar
      Bug #41943: mysqlbinlog.exe crashes if --hexdump option is used · c0cd2742
      Alexey Kopytov authored
        
      The --hexdump option crashed mysqlbinlog when used together  
      with the --read-from-remote-server option due to use of  
      uninitialized memory.  
        
      Since Log_event::print_header() relies on temp_buf to be  
      initialized when the --hexdump option is present,  
      dump_remote_log_entries() was fixed to setup temp_buf to point  
      to the start of a binlog event as done in  
      dump_local_log_entries().  
       
      The root cause of this bug is identical to the one for 
      bug #17654. The latter was fixed in 5.1 and up, so this 
      patch is backport of the patches for bug #17654 to 5.0. 
       
      Only 5.0 needs a changelog entry. 
      
      client/mysqlbinlog.cc:
        Fixed dump_remote_log_entries() so that temp_buf is initialized 
        as it may be used later by Log_event::print_header() if the 
        --hexdump option is present.
      mysql-test/r/mysqlbinlog.result:
        Added a test case for bug #41943.
      mysql-test/t/mysqlbinlog.test:
        Added a test case for bug #41943.
      c0cd2742
    • Bernt M. Johnsen's avatar
      a9f57db0
  6. 06 May, 2009 4 commits
  7. 05 May, 2009 7 commits
    • Davi Arnaut's avatar
      Remove unused variable. · 29de48d8
      Davi Arnaut authored
      29de48d8
    • Jim Winstead's avatar
      Merge with 5.1-bugteam. · 3636eab7
      Jim Winstead authored
      3636eab7
    • Bernt M. Johnsen's avatar
      f27d9c26
    • Narayanan V's avatar
      merging with mysql-5.1-bugteam · 32be2414
      Narayanan V authored
      32be2414
    • Narayanan V's avatar
      Bug#44232 Error msg should be improved when collation not supported. · fdce1019
      Narayanan V authored
      When a user selected an unsupported character set for an
      IBMDB2I table, error 2501 or 2511 may have been returned,
      giving the appearance of an internal programming error.
      
      This patch consolidates these errors into a single descriptive
      error message for the common case of an unsupported character
      set.
      
      The new error number is 2504 and indicates a user error.
      The errors 2501 and 2511 remain to indicate cases of internal
      programming errors.
      
      storage/ibmdb2i/db2i_charsetSupport.cc:
        Bug#44232 Error msg should be improved when collation not supported.
                
        consolidate errors 2501 and 2511 into a single
        descriptive error message for the common case
        of an unsupported character set.
      storage/ibmdb2i/db2i_conversion.cc:
        Bug#44232 Error msg should be improved when collation not supported.
                
        consolidate errors 2501 and 2511 into a single
        descriptive error message for the common case
        of an unsupported character set.
      storage/ibmdb2i/db2i_errors.cc:
        Bug#44232 Error msg should be improved when collation not supported.
                
        consolidate errors 2501 and 2511 into a single
        descriptive error message for the common case
        of an unsupported character set.
      storage/ibmdb2i/db2i_errors.h:
        Bug#44232 Error msg should be improved when collation not supported.
                
        consolidate errors 2501 and 2511 into a single
        descriptive error message for the common case
        of an unsupported character set.
      fdce1019
    • Bernt M. Johnsen's avatar
      ef65e32d
    • Alexander Barkov's avatar
      Bug#44352 UPPER/LOWER function doesn't work correctly · 0df00705
      Alexander Barkov authored
      on cp932 and sjis environment.
      Problem: case conversion erroneously changes the second bytes
      of multi-byte sequences because single-byte functions were
      called in a mistake.
      Fix: call multi-byte aware functions instead.
      0df00705
  8. 04 May, 2009 6 commits
    • Sergei Golubchik's avatar
      bug#44166 · ad751841
      Sergei Golubchik authored
      removed few sprintf's
      ad751841
    • Martin Hansson's avatar
      Bug#44306: Assertion fail on duplicate key error in · 7e66dbea
      Martin Hansson authored
      'INSERT ... SELECT' statements
      
      Merge
      7e66dbea
    • Martin Hansson's avatar
      Bug#44306: Assertion fail on duplicate key error in · fdd5a63f
      Martin Hansson authored
      'INSERT ... SELECT' statements
                  
      The code that produces result rows expected that a duplicate row
      error could not occur in INSERT ... SELECT statements with 
      unfulfilled WHERE conditions. This may happen, however, if the 
      SELECT list contains only aggregate functions.
      Fixed by checking if an error occured before trying to send EOF
      to the client.
      
      
      mysql-test/r/insert_select.result:
        Bug#44306: Test result
      mysql-test/t/insert_select.test:
        Bug#44306: Test case
      sql/sql_select.cc:
        Bug#44306: Fix
      fdd5a63f
    • Narayanan V's avatar
      BUG#39802 On Windows, 32-bit time_t should be enforced · 3023bca1
      Narayanan V authored
      A backport of fix for "BUG40092 - Storage engine API uses
      time_t datatype".
      
      Starting from MSVC C++ 2005 (v8), the default size of time_t
      is changed from 32-bit to 64-bit. As the result, the binaries
      built with pre-v8 MSVC C++ do not work with the binaries
      (storage engine plugins) built with v8 or after (server
      crashes).
      
      Fixed storage engine API to use datatype with known size
      (ulong) instead of time_t.
      
      sql/handler.h:
        Bug#39802 On Windows, 32-bit time_t should be enforced
        
        Change create_time, check_time, update_time
        in the ha_statistics and PARTITION_INFO
        structures to ulong.
      3023bca1
    • Andrei Elkin's avatar
      a83b1bdb
    • Satya B's avatar
      Additional Fix for BUG#40827 - Killing insert-select to MyISAM can cause · a3593930
      Satya B authored
                                     table corruption
      
      Disabling the mysiam_debug.test in embedded mode because of BUG#43733
      
      mysql-test/t/myisam_debug.test:
        Disable the test in embedded mode
      a3593930
  9. 02 May, 2009 1 commit
    • Serge Kozlov's avatar
      Bug#38077. · c5548ad7
      Serge Kozlov authored
      1. Replace waiting of SQL thread stop by waiting of SQL error on slave and stopped
      SQL thread.
      2. Remove debug code because it already implemented in MTR2.
      c5548ad7
  10. 30 Apr, 2009 8 commits