An error occurred fetching the project authors.
  1. 20 Nov, 2009 1 commit
    • Konstantin Osipov's avatar
      Backport of: · fcf6c154
      Konstantin Osipov authored
      revno: 2476.784.2
      committer: davi@moksha.local
      timestamp: Thu 2007-09-27 16:56:27 -0300 
      message:
      Bug#28870 check that table locks are released/reset
          
      The problem is that some mysql_lock_tables error paths are not
      resetting the tables lock type back to TL_UNLOCK. If the lock
      types are not reset properly, a table might be returned to the
      table cache with wrong lock_type.
            
      The proposed fix is to ensure that the tables lock type is always
      properly reset when mysql_lock_tables fails. This is a
      incompatible change with respect to the process state information.
      
      
      sql/lock.cc:
        Merge mysql_lock_tables cleanup sequence and the reset_lock_data
        function into a single function and take steps to ensure it is
        always called for each error exit path. Also remove references
        to the redundant THD::locked variable which was almost exclusively
        used by this function and the same information is already on proc_info.
      sql/sql_class.cc:
        Remove references to the THD::locked variable.
      sql/sql_class.h:
        Remove the THD::locked variable.
      sql/sql_show.cc:
        Remove references to THD:locked, state_info will now default to proc_info.
      fcf6c154
  2. 10 Nov, 2009 3 commits
    • Davi Arnaut's avatar
      Backport of Bug#15192 to mysql-next-mr · e879919a
      Davi Arnaut authored
      ------------------------------------------------------------
      revno: 2597.4.17
      revision-id: sp1r-davi@mysql.com/endora.local-20080328174753-24337
      parent: sp1r-anozdrin/alik@quad.opbmk-20080328140038-16479
      committer: davi@mysql.com/endora.local
      timestamp: Fri 2008-03-28 14:47:53 -0300
      message:
        Bug#15192 "fatal errors" are caught by handlers in stored procedures
      
        The problem is that fatal errors (e.g.: out of memory) were being
        caught by stored procedure exception handlers which could cause
        the execution to not be stopped due to a continue handler.
      
        The solution is to not call any exception handler if the error is
        fatal and send the fatal error to the client.
      
      mysql-test/r/sp-error.result:
        Add test case result for Bug#15192
      mysql-test/t/sp-error.test:
        Add test case for Bug#15192
      mysys/my_alloc.c:
        Pass flag to signal fatal error in memory root allocations.
      sql/event_data_objects.cc:
        Use init_sql_alloc to initialize memory roots, which uses
        the sql error handler to push errors.
      sql/ha_partition.cc:
        Pass flag to signal fatal error instead of calling fatal_error.
      sql/item_func.cc:
        Pass flag to signal fatal error instead of calling fatal_error.
      sql/item_subselect.cc:
        Remove redundant fatal error, memory root already pushes error.
      sql/opt_sum.cc:
        Pass flag to signal fatal error instead of calling fatal_error.
      sql/sp_head.cc:
        Allocator already sets fatal error.
      sql/sql_class.h:
        A error must exist for it to be fatal. Pass flag to signal fatal
        error instead of calling fatal_error.
      sql/sql_insert.cc:
        Pass flag to signal fatal error instead of calling fatal_error.
      sql/sql_list.h:
        Pass flag to signal fatal error instead of calling fatal_error.
      sql/sql_parse.cc:
        Pass flag to signal fatal error instead of calling fatal_error.
      sql/sql_partition.cc:
        Pass flag to signal fatal error instead of calling fatal_error.
      sql/sql_select.cc:
        Pass flag to signal fatal error instead of calling fatal_error.
      sql/sql_servers.cc:
        Use init_sql_alloc to initialize memory roots, which uses
        the sql error handler to push errors.
      sql/sql_show.cc:
        Pass flag to signal fatal error instead of calling fatal_error.
      sql/sql_trigger.cc:
        Use init_sql_alloc to initialize memory roots, which uses
        the sql error handler to push errors.
      sql/sql_update.cc:
        Pass flag to signal fatal error instead of calling fatal_error.
      sql/tztime.cc:
        Use init_sql_alloc to initialize memory roots, which uses
        the sql error handler to push errors.
      e879919a
    • Davi Arnaut's avatar
      Backport of Bug#41860 to mysql-next-mr · 17871ade
      Davi Arnaut authored
      ------------------------------------------------------------
      revno: 3317
      revision-id: davi.arnaut@sun.com-20090522170916-fzc5ca3tjs9roy1t
      parent: patrick.crews@sun.com-20090522152933-ole8s3suy4zqyvku
      committer: Davi Arnaut <Davi.Arnaut@Sun.COM>
      branch nick: 41860-6.0
      timestamp: Fri 2009-05-22 14:09:16 -0300
      message:
        Bug#41860: Without Windows named pipe
      
        The problem was that the patch for Bug#10374 broke named pipe
        and shared memory transports on Windows due to a failure to
        implement a dummy poll method for transports other than BSD
        sockets. Another problem was that mysqltest lacked support
        for named pipe and shared memory connections, which lead to
        misleading test cases that were supposed run common queries
        over both transports.
      
        The solution is to properly implement, at the VIO layer, the
        poll and is_connected methods. The is_connected method is
        implemented for every suppported transport and the poll one
        only where it makes sense. Furthermore, support for named pipe
        and shared memory connections is added to mysqltest as to
        enable testing of both transports using the test suite.
      
      client/mysqltest.cc:
        Add support for named pipe and shared memory connections.
      include/violite.h:
        Move private functions to vio/vio_priv.h
        Add poll_read and is_connected methods.
      mysql-test/t/named_pipe.test:
        Run tests over a named pipe connection.
      mysql-test/t/shm.test:
        Run tests over a shared memory connection.
      sql/item_func.cc:
        Rename method.
      sql/sql_class.cc:
        Remove higher-level vio_is_connected implementation.
      sql/sql_class.h:
        Rename vio_is_connected to not conflict with the vio one.
        Verify that there is a valid vio.
      vio/vio.c:
        Add poll_read and is_connected methods.
      vio/vio_priv.h:
        Add private functions.
      vio/viosocket.c:
        Implement the is_connected method for the various transports.
      17871ade
    • Davi Arnaut's avatar
      Backport of Bug#10374 to mysql-next-mr · 80582b00
      Davi Arnaut authored
      ------------------------------------------------------------
      revno: 2597.37.3
      revision-id: sp1r-davi@mysql.com/endora.local-20080328123626-16430
      parent: sp1r-anozdrin/alik@quad.opbmk-20080327125300-11290
      committer: davi@mysql.com/endora.local
      timestamp: Fri 2008-03-28 09:36:26 -0300
      message:
        Bug#10374 GET_LOCK does not let connection to close on the server side if it's aborted
      
        The problem is that the server doesn't detect aborted connections which
        are waiting on a lock or sleeping (user sleep), wasting system resources
        for a connection that is already dead.
      
        The solution is to peek at the connection every five seconds to verify if
        the connection is not aborted. A aborted connection is detect by polling
        the connection socket for available data to be read or end of file and in
        case of eof, the wait is aborted and the connection killed.
      
      include/violite.h:
        Export vio_peek_read function.
      mysql-test/r/dirty_close.result:
        Add test case result for Bug#10374
      mysql-test/t/dirty_close.test:
        Add test case for Bug#10374
      sql/item_func.cc:
        While waiting for a condition to be signaled, check if the connection
        is not broken every INTERRUPT_INTERVAL seconds.
      sql/sql_class.cc:
        Add function which checks if the client connection was aborted.
      sql/sql_class.h:
        Add function prototype.
      vio/viosocket.c:
        Add poll and peek functions for Windows and Unix.
      80582b00
  3. 02 Nov, 2009 1 commit
  4. 21 Oct, 2009 1 commit
    • Konstantin Osipov's avatar
      Backport of revno 2630.28.10, 2630.28.31, 2630.28.26, 2630.33.1, · 8ec23470
      Konstantin Osipov authored
      2630.39.1, 2630.28.29, 2630.34.3, 2630.34.2, 2630.34.1, 2630.29.29,
      2630.29.28, 2630.31.1, 2630.28.13, 2630.28.10, 2617.23.14 and
      some other minor revisions.
      
      This patch implements: 
      
      WL#4264 "Backup: Stabilize Service Interface" -- all the
      server prerequisites except si_objects.{h,cc} themselves (they can
      be just copied over, when needed).
      
      WL#4435: Support OUT-parameters in prepared statements.
      
      (and all issues in the initial patches for these two
      tasks, that were discovered in pushbuild and during testing).
      
      Bug#39519: mysql_stmt_close() should flush all data
      associated with the statement.
      
      After execution of a prepared statement, send OUT parameters of the invoked
      stored procedure, if any, to the client.
      
      When using the binary protocol, send the parameters in an additional result
      set over the wire.  When using the text protocol, assign out parameters to
      the user variables from the CALL(@var1, @var2, ...) specification.
      
      The following refactoring has been made:
        - Protocol::send_fields() was renamed to Protocol::send_result_set_metadata();
        - A new Protocol::send_result_set_row() was introduced to incapsulate
          common functionality for sending row data.
        - Signature of Protocol::prepare_for_send() was changed: this operation
          does not need a list of items, the number of items is fully sufficient.
      
      The following backward incompatible changes have been made:
        - CLIENT_MULTI_RESULTS is now enabled by default in the client;
        - CLIENT_PS_MULTI_RESUTLS is now enabled by default in the client.
      
      include/mysql.h:
        Add a new flag to MYSQL_METHODS::flush_use_result
        function pointer. This flag determines if all results
        should be flushed or only the first one:
            
        - if flush_all_results is TRUE, then cli_flush_use_result()
          will read/flush all pending results. I.e. it will read
          all packets while server status attribute indicates that
          there are more results. This is a new semantic, required
          to fix the bug.
                    
        - if flush_all_results is FALSE, the old sematic
          is preserved -- i.e. cli_flush_use_result() reads data
          until first EOF-packet.
      include/mysql.h.pp:
        Update the ABI with new calls (compatible changes).
      include/mysql_com.h:
        Add CLIENT_PS_OUT_PARAMS -- a client capability indicating that the client supportsю
      libmysql/libmysql.c:
        Add mysql_stmt_next_result() -- analogue of mysql_next_result() for binary protocol.
        Fix a minor bug in alloc_fields() -- not all members were copied over,
        and some only shallow-copied (catalog).
        Flush all results in mysql_stmt_close() (Bug#39519).
      libmysqld/lib_sql.cc:
        Rename send_fields() -> send_result_set_metadata().
        Refactoring: change prepare_for_send() so that it accepts only 
        what it really needs -- a number of elements in the list.
      mysql-test/r/ps.result:
        Update results: WL#4435.
      mysql-test/t/ps.test:
        WL#4435: A test case for an SQL-part of the problem.
      sql-common/client.c:
        Bug#39519.
        Implement new functionality in cli_flush_use_result():
        if flush_all_delete is TRUE, then it should read/flush
        all pending results.
      sql/Makefile.am:
        Add a new header sql_prepare.h to the list
        of build headers.
      sql/events.cc:
        Rename: Protocol::send_fields() -> 
        Protocol::send_result_set_metadata().
      sql/handler.cc:
        Rename: Protocol::send_fields() -> 
        Protocol::send_result_set_metadata().
      sql/mysql_priv.h:
        Move sql_prepare.cc-specific declarations to a new
        header - sql_prepare.h.
      sql/procedure.h:
        Rename: Protocol::send_fields() -> 
        Protocol::send_result_set_metadata().
      sql/protocol.cc:
        Move the logic responsible for sending of one result
        set row to the Protocol class. Define a template
        for end-of-statement action. 
        Refactoring: change prepare_for_send() so that it accepts 
        only what it really needs -- a number of elements in the list.
        Rename send_fields() to send_result_set_metadata().
      sql/protocol.h:
        Update with new declarations (WL#4435).
        Rename send_fields() -> send_result_set_metadata().
        prepare_for_send() only needs the number of columns to send,
        and doesn't use the item list - update signature to require
        only what's needed.
        Add a new protocol type -- Protocol_local.
      sql/repl_failsafe.cc:
        Rename: Protocol::send_fields() -> 
        Protocol::send_result_set_metadata().
      sql/slave.cc:
        Rename: Protocol::send_fields() -> 
        Protocol::send_result_set_metadata().
      sql/sql_acl.cc:
        Rename: Protocol::send_fields() -> 
        Protocol::send_result_set_metadata().
      sql/sql_base.cc:
        Include sql_prepare.h (for Reprepare_observer).
      sql/sql_cache.cc:
        Extend the query cache flags block to be able
        to store a numeric id for the result format,
        not just a flag binary/non-binary.
      sql/sql_class.cc:
        Update to use the rename of Protocol::send_fields()
        to Protocol::send_result_set_metadata().
        Use Protocol::send_one_result_set_row().
      sql/sql_class.h:
        Move the declaration of Reprepare_observer to the 
        new header - sql_prepare.h.
        Update to the new signature of class Protocol::send_fields().
      sql/sql_connect.cc:
        Use a protocol template method instead of
        raw NET layer API at the end of a statement.
      sql/sql_cursor.cc:
        Rename: Protocol::send_fields() -> 
        Protocol::send_result_set_metadata().
      sql/sql_error.cc:
        Rename: Protocol::send_fields() -> 
        Protocol::send_result_set_metadata().
      sql/sql_handler.cc:
        Rename: Protocol::send_fields() -> 
        Protocol::send_result_set_metadata().
        Use new method Protocol::send_one_result_set_row().
      sql/sql_help.cc:
        Rename: Protocol::send_fields() -> 
        Protocol::send_result_set_metadata().
      sql/sql_lex.cc:
        Initialize multi_statements variable.
        Add a handy constant for empty lex
        string.
      sql/sql_lex.h:
        Add a separate member for a standalone
        parsing option - multi-statements support.
      sql/sql_list.cc:
        sql_list.h is a standalone header now, 
        no need to include mysql_priv.h.
      sql/sql_list.h:
        Make sql_list.h a stand-alone header.
      sql/sql_parse.cc:
        Include sql_prepare.h for prepared
        statements- related declarations.
        Use a new Protocol template method to end
        each statement (send OK, EOF or ERROR to
        the client).
      sql/sql_prepare.cc:
        Implement Execute Direct API (WL#4264), 
        currently unused. It will be used by the service
        interface (Backup).
        Use a new header - sql_prepare.h.
        Add support for OUT parameters in the 
        binary and text protocol (prepared statements 
        only).
      sql/sql_prepare.h:
        Add a new header to contain (for now)
        all prepared statement- external
        related declarations.
      sql/sql_profile.cc:
        Rename: Protocol::send_fields() -> 
        Protocol::send_result_set_metadata().
      sql/sql_repl.cc:
        Rename: Protocol::send_fields() -> 
        Protocol::send_result_set_metadata().
      sql/sql_select.cc:
        Rename: Protocol::send_fields() -> 
        Protocol::send_result_set_metadata().
      sql/sql_show.cc:
        Rename: Protocol::send_fields() -> 
        Protocol::send_result_set_metadata().
      sql/sql_string.h:
        Add a way to convert a String to LEX_STRING.
      sql/sql_table.cc:
        Rename: Protocol::send_fields() -> 
        Protocol::send_result_set_metadata().
      sql/sql_update.cc:
        Remove an extraneous my_error(). The error
        is already reported in update_non_unique_table_error().
      sql/sql_yacc.yy:
        Support for multi-statements is an independent
        property of parsing, not derived from 
        the protocol type.
      tests/mysql_client_test.c:
        Add tests for WL#4435 (binary protocol).
      8ec23470
  5. 20 Oct, 2009 1 commit
    • Tatiana A. Nurnberg's avatar
      Bug#28141: Control C on query waiting on lock causes ERROR 1053 (server shutdown) · 5ef63a4f
      Tatiana A. Nurnberg authored
      If a thread is killed in the server, we throw "shutdown" only if one is actually in
      progress; otherwise, we throw "query interrupted".
      
      Control-C in the mysql command-line client is "incremental" now.
      First Control-C sends KILL QUERY (when connected to 5.0+ server, otherwise, see next)
      Next  Control-C sends KILL CONNECTION
      Next  Control-C aborts client.
      
      As the first two steps only pertain to an existing query,
      Control-C will abort the client right away if no query is running.
      
      client will give more detailed/consistent feedback on Control-C now.
      
      
      client/mysql.cc:
        Extends Control-C handling; enhances up feedback to user.
        
        On 5.0+ servers, we try to be nice and send KILL QUERY first
        if Control-C is pressed in the command-line client, but if
        that doesn't work, we now give the user the opportunity to
        send KILL CONNECTION with another Control-C (and to kill the
        client with another Control-C if that somehow doesn't work
        either).
      mysql-test/t/flush_read_lock_kill.test:
        we're getting correct "thread killed" rather than
        "in shutdown" error now
      mysql-test/t/kill.test:
        we're getting correct "thread killed" rather than
        "in shutdown" error now
      mysql-test/t/rpl000001.test:
        we're getting correct "thread killed" rather than
        "in shutdown" error now
      mysql-test/t/rpl_error_ignored_table.test:
        we're getting correct "thread killed" rather than
        "in shutdown" error now
      sql/records.cc:
        make error messages on KILL uniform for rr_*()
        by folding that handling into rr_handle_error()
      sql/sql_class.h:
        Only throw "shutdown" when we have one flagged as being in progress;
        otherwise, throw "query interrupted" as it's likely to be "KILL CONNECTION"
        or related.
      5ef63a4f
  6. 16 Oct, 2009 2 commits
    • Konstantin Osipov's avatar
      Fix a windows build failure (next-mr-runtime). · 38b403ba
      Konstantin Osipov authored
      sql/sql_cache.cc:
        Use my_hash_init() on Windows as well.
      sql/sql_class.h:
        Use struct Query_cache_block (not class) for forward declaration,
        realing the code to match 6.0 alignment.
      38b403ba
    • Georgi Kodinov's avatar
      Bug #40877: multi statement execution fails in 5.1.30 · 7b4ef910
      Georgi Kodinov authored
            
      Implemented the server infrastructure for the fix:
      
      1. Added a function LEX_STRING *thd_query_string(THD) to return
      a LEX_STRING structure instead of char *.
      This is the function that must be called in innodb instead of 
      thd_query()
      
      2. Did some encapsulation in THD : aggregated thd_query and 
      thd_query_length into a LEX_STRING and made accessor and mutator 
      methods for easy code updating. 
      
      3. Updated the server code to use the new methods where applicable.
      7b4ef910
  7. 15 Oct, 2009 1 commit
  8. 14 Oct, 2009 2 commits
    • Konstantin Osipov's avatar
      Backport of: · 9b41c753
      Konstantin Osipov authored
      ----------------------------------------------------------
      revno: 2617.22.5
      committer: Konstantin Osipov <kostja@sun.com>
      branch nick: mysql-6.0-runtime
      timestamp: Tue 2009-01-27 05:08:48 +0300
      message:
        Remove non-prefixed use of HASH.
        Always use my_hash_init(), my_hash_inited(), my_hash_search(),
        my_hash_element(), my_hash_delete(), my_hash_free() rather
        than non-prefixed counterparts (hash_init(), etc).
        Remove the backward-compatible defines.
      9b41c753
    • Jorgen Loland's avatar
      Bug#47280 - strange results from count(*) with order by multiple · 6da93b22
      Jorgen Loland authored
                  columns without where/group
                           
      Simple SELECT with implicit grouping used to return many rows if
      the query was ordered by the aggregated column in the SELECT
      list. This was incorrect because queries with implicit grouping
      should only return a single record.
                                    
      The problem was that when JOIN:exec() decided if execution needed
      to handle grouping, it was assumed that sum_func_count==0 meant
      that there were no aggregate functions in the query. This
      assumption was not correct in JOIN::exec() because the aggregate
      functions might have been optimized away during JOIN::optimize().
                        
      The reason why queries without ordering behaved correctly was
      that sum_func_count is only recalculated if the optimizer chooses
      to use temporary tables (which it does in the ordered case).
      Hence, non-ordered queries were correctly treated as grouped.
                        
      The fix for this bug was to remove the assumption that
      sum_func_count==0 means that there is no need for grouping. This
      was done by introducing variable "bool implicit_grouping" in the
      JOIN object.
      
      mysql-test/r/func_group.result:
        Add test for BUG#47280
      mysql-test/t/func_group.test:
        Add test for BUG#47280
      sql/opt_sum.cc:
        Improve comment for opt_sum_query()
      sql/sql_class.h:
        Add comment for variables in TMP_TABLE_PARAM
      sql/sql_select.cc:
        Introduce and use variable implicit_grouping instead of (!group_list && sum_func_count) in places that need to test if grouping is required. Also added comments for: optimization of aggregate fields for implicitly grouped queries  (JOIN::optimize) and choice of end_select method (JOIN::execute)
      sql/sql_select.h:
        Add variable implicit_grouping, which will be TRUE for queries that contain aggregate functions but no GROUP BY clause. Also added comment to sort_and_group variable.
      6da93b22
  9. 13 Oct, 2009 1 commit
    • Konstantin Osipov's avatar
      Introduce thd->query_cache_tls (thread · 99420dd9
      Konstantin Osipov authored
      local storage for query cache). 
      We need more than one pointer in a thread to
      represent the query cache and net->query_cache_query can not be used
      any more (due to ABI compatibility issues and to different life
      time of NET and THD).
      This is a backport of the following patch from 6.0:
      ----------------------------------------------------------
      revno: 2476.1157.2
      committer: kostja@bodhi.(none)
      timestamp: Sat 2007-06-16 13:29:24 +0400
      
      
      include/mysql.h.pp:
        Update the ABI (NET::query_cache_query is now unused).
      include/mysql_com.h:
        NET::query_cache_query is now unused.
      sql/mysql_priv.h:
        Update signatures of ex-functios now member functions.
      sql/sql_cache.cc:
        Introduce THD::query_cache_tls.
      sql/sql_cache.h:
        Introduce THD::query_cache_tls.
      sql/sql_class.cc:
        Introduce THD::query_cache_tls.
      sql/sql_class.h:
        Introduce THD::query_cache_tls.
      sql/sql_parse.cc:
        Use THD::query_cache_tls.
      sql/sql_select.cc:
        Use THD::query_cache_tls.
      99420dd9
  10. 12 Oct, 2009 1 commit
  11. 09 Oct, 2009 2 commits
    • Dmitry Lenev's avatar
      This patch is prerequisite for the 2nd milestone of WL#148 "Foreign keys" · c0221b0e
      Dmitry Lenev authored
      storing and restoring information about foreign keys in the .FRM files and
      properly displaying it in SHOW CREATE TABLE output and I_S tables.
      
      The idea of this patch is to change type of Key_part_spec::field_name and
      Key::name to LEX_STRING in order to avoid extra strlen() calls during
      semantic analysis and statement execution, particularly, in code to be
      implemented on the 2nd milestone of WL#148.
      
      Note that since we are not using LEX_STRING everywhere yet (e.g. in
      Create_field and KEY) and we want to limit scope of our changes we
      have to do strlen() in places where we create Key and Key_part_spec
      instances from objects using plain (char*) for strings. These calls
      will go away during the process of further (char*) -> LEX_STRING
      refactoring.
      
      We have introduced these changes in 6.0 and backported them to 5.5
      tree to make people aware of these changes as early as possible and
      to simplify merges with mysql-fk and mysql-6.1-fk trees.
      
      No test case is needed since this patch does not introduce any
      user visible changes.
      
      sql/sql_class.cc:
        Key_part_spec::field_name is now LEX_STRING. Adjusted code accordingly.
      sql/sql_class.h:
        Changed type of Key_part_spec::field_name and Key::name to LEX_STRING in
        order to avoid extra strlen() calls in code responsible for semantic
        analysis and statement execution (e.g. in future code responsible for
        saving/restoring info about foreign keys).
      sql/sql_lex.cc:
        Moved null_lex_str from sql_yacc.yy to sql_lex.cc and added its
        declaration to sql_lex.h to make it accessible in other SQL-layer
        modules (e.g. sql_parse.cc).
      sql/sql_lex.h:
        Made null_lex_str accessible from outside of sql_lex.cc.
      sql/sql_parse.cc:
        Key_part_spec::field_name and Key::name are now LEX_STRING. Adjusted
        code accordingly.
      sql/sql_table.cc:
        Adjusted code to accomodate change of type to LEX_STRING for
        Key_part_spec::field_name and Key::name.
      sql/sql_yacc.yy:
        Now Key::name and Key_part_spec::field_name are LEX_STRINGs. Adjusted
        grammar to be able properly initialize them. This should allow us to
        save on some strlen() calls during later stages of statement execution.
      c0221b0e
    • Jon Olav Hauglid's avatar
      Bug #44651 "have_community_features" variable should be renamed · 0da35764
      Jon Olav Hauglid authored
                 "have_profiling"
      
      1) Renamed have_community_features server system variable to
      have_profiling.
      2) Removed eable-community-features configure option and
      ENABLE_COMMUNITY_FEATURES macro.
      3) Removed COMMUNITY_SERVER macro and replaced its usage by 
      ENABLED_PROFILING.
      
      Only --enable-profiling is now needed to enable profiling.
      It was the only existing "community feature", so there was
      no need for both configure options.
      
      Using --enable-community-features will give a warning message
      since it no longer exists.
      0da35764
  12. 29 Sep, 2009 2 commits
    • Ingo Struewing's avatar
      WL#4259 - Debug Sync Facility · 4d57b851
      Ingo Struewing authored
      Backport from 6.0 to 5.1.
      Only those sync points are included, which are used in debug_sync.test.
      
        The Debug Sync Facility allows to place synchronization points
        in the code:
        
        open_tables(...)
        
        DEBUG_SYNC(thd, "after_open_tables");
        
        lock_tables(...)
        
        When activated, a sync point can
        
        - Send a signal and/or
        - Wait for a signal
        
        Nomenclature:
        
        - signal:            A value of a global variable that persists
                             until overwritten by a new signal. The global
                             variable can also be seen as a "signal post"
                             or "flag mast". Then the signal is what is
                             attached to the "signal post" or "flag mast".
        
        - send a signal:     Assign the value (the signal) to the global
                             variable ("set a flag") and broadcast a
                             global condition to wake those waiting for
                             a signal.
        
        - wait for a signal: Loop over waiting for the global condition until
                             the global value matches the wait-for signal.
        
        Please find more information in the top comment in debug_sync.cc
        or in the worklog entry.
      
      
      .bzrignore:
        WL#4259 - Debug Sync Facility
        Added the symbolic link libmysqld/debug_sync.cc.
      CMakeLists.txt:
        WL#4259 - Debug Sync Facility
        Added definition for ENABLED_DEBUG_SYNC.
      configure.in:
        WL#4259 - Debug Sync Facility
        Added definition for ENABLED_DEBUG_SYNC.
      include/my_sys.h:
        WL#4259 - Debug Sync Facility
        Added definition for the DEBUG_SYNC_C macro.
      libmysqld/CMakeLists.txt:
        WL#4259 - Debug Sync Facility
        Added sql/debug_sync.cc.
      libmysqld/Makefile.am:
        WL#4259 - Debug Sync Facility
        Added sql/debug_sync.cc.
      mysql-test/include/have_debug_sync.inc:
        WL#4259 - Debug Sync Facility
        New include file.
      mysql-test/mysql-test-run.pl:
        WL#4259 - Debug Sync Facility
        Added option --debug_sync_timeout.
      mysql-test/r/debug_sync.result:
        WL#4259 - Debug Sync Facility
        New test result.
      mysql-test/r/have_debug_sync.require:
        WL#4259 - Debug Sync Facility
        New require file.
      mysql-test/t/debug_sync.test:
        WL#4259 - Debug Sync Facility
        New test file.
      mysys/my_static.c:
        WL#4259 - Debug Sync Facility
        Added definition for debug_sync_C_callback_ptr.
      mysys/thr_lock.c:
        WL#4259 - Debug Sync Facility
        Added sync point "wait_for_lock".
      sql/CMakeLists.txt:
        WL#4259 - Debug Sync Facility
        Added debug_sync.cc and debug_sync.h.
      sql/Makefile.am:
        WL#4259 - Debug Sync Facility
        Added debug_sync.cc and debug_sync.h.
      sql/debug_sync.cc:
        WL#4259 - Debug Sync Facility
        New source file.
      sql/debug_sync.h:
        WL#4259 - Debug Sync Facility
        New header file.
      sql/mysqld.cc:
        WL#4259 - Debug Sync Facility
        Added opt_debug_sync_timeout.
        Added calls to debug_sync_init() and debug_sync_end().
        Fixed a purecov comment (unrelated).
      sql/set_var.cc:
        WL#4259 - Debug Sync Facility
        Added server variable "debug_sync".
      sql/set_var.h:
        WL#4259 - Debug Sync Facility
        Added declaration for server variable "debug_sync".
      sql/share/errmsg.txt:
        WL#4259 - Debug Sync Facility
        Added error messages ER_DEBUG_SYNC_TIMEOUT and ER_DEBUG_SYNC_HIT_LIMIT.
      sql/sql_base.cc:
        WL#4259 - Debug Sync Facility
        Added sync points "after_flush_unlock" and "before_lock_tables_takes_lock".
      sql/sql_class.cc:
        WL#4259 - Debug Sync Facility
        Added initialization for debug_sync_control to THD::THD.
        Added calls to debug_sync_init_thread() and debug_sync_end_thread().
      sql/sql_class.h:
        WL#4259 - Debug Sync Facility
        Added element debug_sync_control to THD.
      storage/myisam/myisamchk.c:
        Fixed a typo in an error message string (unrelated).
      4d57b851
    • Alfranio Correia's avatar
      WL#4828 and BUG#45747 · b7f88765
      Alfranio Correia authored
      NOTE: Backporting the patch to next-mr.
      
      WL#4828 Augment DBUG_ENTER/DBUG_EXIT to crash MySQL in different functions
      -------
      
      The assessment of the replication code in the presence of faults is extremely
      import to increase reliability. In particular, one needs to know if servers
      will either correctly recovery or print out appropriate error messages thus
      avoiding unexpected problems in a production environment.
      
      In order to accomplish this, the current patch refactories the debug macros
      already provided in the source code and introduces three new macros that
      allows to inject faults, specifically crashes, while entering or exiting a
      function or method. For instance, to crash a server while returning from
      the init_slave function (see module sql/slave.cc), one needs to do what
      follows:
      
      1 - Modify the source replacing DBUG_RETURN by DBUG_CRASH_RETURN;
      
        DBUG_CRASH_RETURN(0);
      
      2 - Use the debug variable to activate dbug instructions:
      
        SET SESSION debug="+d,init_slave_crash_return";
      
      The new macros are briefly described below:
      
      DBUG_CRASH_ENTER (function) is equivalent to DBUG_ENTER which registers the
      beginning of a function but in addition to it allows for crashing the server
      while entering the function if the appropriate dbug instruction is activate.
      In this case, the dbug instruction should be "+d,function_crash_enter".
      
      DBUG_CRASH_RETURN (value) is equivalent to DBUG_RETURN which notifies the
      end of a function but in addition to it allows for crashing the server
      while returning from the function if the appropriate dbug instruction is
      activate. In this case, the dbug instruction should be
      "+d,function_crash_return". Note that "function" should be the same string
      used by either the DBUG_ENTER or DBUG_CRASH_ENTER.
      
      DBUG_CRASH_VOID_RETURN (value) is equivalent to DBUG_VOID_RETURN which
      notifies the end of a function but in addition to it allows for crashing
      the server while returning from the function if the appropriate dbug
      instruction is activate. In this case, the dbug instruction should be
      "+d,function_crash_return". Note that "function" should be the same string
      used by either the DBUG_ENTER or DBUG_CRASH_ENTER.
      
      To inject other faults, for instance, wrong return values, one should rely
      on the macros already available. The current patch also removes a set of
      macros that were either not being used or were redundant as other macros
      could be used to provide the same feature. In the future, we also consider
      dynamic instrumentation of the code.
      
      
      BUG#45747 DBUG_CRASH_* is not setting the strict option
      ---------
            
      When combining DBUG_CRASH_* with "--debug=d:t:i:A,file" the server crashes
      due to a call to the abort function in the DBUG_CRASH_* macro althought the
      appropriate keyword has not been set.
      b7f88765
  13. 28 Sep, 2009 2 commits
    • Martin Hansson's avatar
      · 2dbe095c
      Martin Hansson authored
      Bug#46958: Assertion in Diagnostics_area::set_ok_status, 
      trigger, merge table
                  
      The problem with break statements is that they have very
      local effects. Hence a break statement within the inner loop
      of a nested-loops join caused execution to proceed to the
      next table even though a serious error occurred. The problem
      was fixed by breaking out the inner loop into its own
      method. The change empowers all errors to terminate the
      execution.
                  
      The errors that will now halt multi-DELETE execution
      altogether are 
        - triggers returning errors
        - handler errors
        - server being killed
      
      
      mysql-test/r/delete.result:
        Bug#46958: Test result.
      mysql-test/t/delete.test:
        Bug#46958: Test case.
      sql/sql_class.h:
        Bug#46958: New method declaration.
      sql/sql_delete.cc:
        Bug#46958: New method implementation.
      2dbe095c
    • Georgi Kodinov's avatar
      Ported WL#3220 to mysql-next-mr. · 2118bd10
      Georgi Kodinov authored
      2118bd10
  14. 26 Sep, 2009 1 commit
  15. 23 Sep, 2009 1 commit
  16. 10 Sep, 2009 2 commits
  17. 31 Jul, 2009 1 commit
    • Gleb Shchepa's avatar
      Bug# 30946: mysqldump silently ignores --default-character-set · 4e95179a
      Gleb Shchepa authored
                  when used with --tab
      
      1) New syntax: added CHARACTER SET clause to the
        SELECT ... INTO OUTFILE (to complement the same clause in
        LOAD DATA INFILE).
        mysqldump is updated to use this in --tab mode.
      
      2) ESCAPED BY/ENCLOSED BY field parameters are documented as
         accepting CHAR argument, however SELECT .. INTO OUTFILE
         silently ignored rests of multisymbol arguments.
         For the symmetrical behavior with LOAD DATA INFILE the
         server has been modified to fail with the same error:
      
           ERROR 42000: Field separator argument is not what is
                        expected; check the manual
      
      3) Current LOAD DATA INFILE recognizes field/line separators
         "as is" without converting from client charset to data
         file charset. So, it is supposed, that input file of
         LOAD DATA INFILE consists of data in one charset and
         separators in other charset. For the compatibility with
         that [buggy] behaviour SELECT INTO OUTFILE implementation
         has been saved "as is" too, but the new warning message
         has been added:
      
           Non-ASCII separator arguments are not fully supported
      
         This message warns on field/line separators that contain
         non-ASCII symbols.
      
      
      client/mysqldump.c:
        mysqldump has been updated to call SELECT ... INTO OUTFILE
        statement with a charset from the --default-charset command
        line parameter.
      mysql-test/r/mysqldump.result:
        Added test case for bug #30946.
      mysql-test/r/outfile_loaddata.result:
        Added test case for bug #30946.
      mysql-test/t/mysqldump.test:
        Added test case for bug #30946.
      mysql-test/t/outfile_loaddata.test:
        Added test case for bug #30946.
      sql/field.cc:
        String conversion code has been moved from check_string_copy_error()
        to convert_to_printable() for reuse.
      sql/share/errmsg.txt:
        New WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED message has been added.
      sql/sql_class.cc:
        The select_export::prepare() method has been modified to:
        
          1) raise the ER_WRONG_FIELD_TERMINATORS error on multisymbol
             ENCLOSED BY/ESCAPED BY field arguments like LOAD DATA INFILE;
        
          2) warn with a new WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED
             message on non-ASCII field or line separators.
        
        The select_export::send_data() merhod has been modified to
        convert item data to output charset (see new SELECT INTO OUTFILE
        syntax). By default the BINARY charset is used for backward
        compatibility.
      sql/sql_class.h:
        The select_export::write_cs field added to keep output
        charset.
      sql/sql_load.cc:
        mysql_load has been modified to warn on non-ASCII field or
        line separators with a new WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED
        message.
      sql/sql_string.cc:
        New global function has been added: convert_to_printable()
        (common code has been moved from check_string_copy_error()).
      sql/sql_string.h:
        New String::is_ascii() method and new global convert_to_printable()
        function have been added.
      sql/sql_yacc.yy:
        New syntax: added CHARACTER SET clause to the
        SELECT ... INTO OUTFILE (to complement the same clause in
        LOAD DATA INFILE). By default the BINARY charset is used for
        backward compatibility.
      4e95179a
  18. 24 Jul, 2009 1 commit
    • Gleb Shchepa's avatar
      Bug #38816: kill + flush tables with read lock + stored · dc0a87fd
      Gleb Shchepa authored
                  procedures causes crashes!
      
      The problem of that bugreport was mostly fixed by the
      patch for bug 38691.
      However, attached test case focused on another crash or
      valgrind warning problem: SHOW PROCESSLIST query accesses
      freed memory of SP instruction that run in a parallel
      connection.
      
      Changes of thd->query/thd->query_length in dangerous
      places have been guarded with the per-thread
      LOCK_thd_data mutex (the THD::LOCK_delete mutex has been
      renamed to THD::LOCK_thd_data).
      
      
      sql/ha_myisam.cc:
        Bug #38816: kill + flush tables with read lock + stored
                    procedures causes crashes!
        
        Modification of THD::query/query_length has been guarded
        with the a THD::set_query() method call/LOCK_thd_data
        mutex.
        Unnecessary locking with the global LOCK_thread_count
        mutex has been removed.
      sql/log_event.cc:
        Bug #38816: kill + flush tables with read lock + stored
                    procedures causes crashes!
        
        Modification of THD::query/query_length has been guarded
        with the THD::set_query()) method call/LOCK_thd_data
        mutex.
      sql/slave.cc:
        Bug #38816: kill + flush tables with read lock + stored
                    procedures causes crashes!
        
        Modification of THD::query/query_length has been guarded
        with the THD::set_query() method call/LOCK_thd_data mutex.
        
        The THD::LOCK_delete mutex has been renamed to
        THD::LOCK_thd_data.
      sql/sp_head.cc:
        Bug #38816: kill + flush tables with read lock + stored
                    procedures causes crashes!
        
        Modification of THD::query/query_length has been guarded
        with the a THD::set_query() method call/LOCK_thd_data
        mutex.
      sql/sql_class.cc:
        Bug #38816: kill + flush tables with read lock + stored
                    procedures causes crashes!
        
        The new THD::LOCK_thd_data mutex and THD::set_query()
        method has been added to guard modifications of THD::query/
        THD::query_length fields, also the Statement::set_statement()
        method has been overloaded in the THD class.
        
        The THD::LOCK_delete mutex has been renamed to
        THD::LOCK_thd_data.
      sql/sql_class.h:
        Bug #38816: kill + flush tables with read lock + stored
                    procedures causes crashes!
        
        The new THD::LOCK_thd_data mutex and THD::set_query()
        method has been added to guard modifications of THD::query/
        THD::query_length fields, also the Statement::set_statement()
        method has been overloaded in the THD class.
        
        The THD::LOCK_delete mutex has been renamed to
        THD::LOCK_thd_data.
      sql/sql_insert.cc:
        Bug #38816: kill + flush tables with read lock + stored
                    procedures causes crashes!
        
        Modification of THD::query/query_length has been guarded
        with the a THD::set_query() method call/LOCK_thd_data
        mutex.
      sql/sql_parse.cc:
        Bug #38816: kill + flush tables with read lock + stored
                    procedures causes crashes!
        
        Modification of THD::query/query_length has been guarded
        with the a THD::set_query() method call/LOCK_thd_data mutex.
      sql/sql_repl.cc:
        Bug #38816: kill + flush tables with read lock + stored
                    procedures causes crashes!
        
        The THD::LOCK_delete mutex has been renamed to
        THD::LOCK_thd_data.
      sql/sql_show.cc:
        Bug #38816: kill + flush tables with read lock + stored
                    procedures causes crashes!
        
        Inter-thread read of THD::query/query_length field has
        been protected with a new per-thread LOCK_thd_data
        mutex in the mysqld_list_processes function.
      dc0a87fd
  19. 22 Jul, 2009 1 commit
  20. 10 Jun, 2009 1 commit
    • Vladislav Vaintroub's avatar
      Backport WL#3653 to 5.1 to enable bundled innodb plugin. · 768bbae9
      Vladislav Vaintroub authored
      Remove custom DLL loader code from innodb plugin code, use 
      symbols exported from mysqld.
      
      
      storage/innodb_plugin/handler/ha_innodb.cc:
        Remove a Win32 workaround for current_thd.
        The original  problem that innodb plugin used
        value of TLS variable across DLL boundaries is 
        solved in MySQL server (current_thd is a function
        not TLS variable now)
      storage/innodb_plugin/handler/handler0alter.cc:
        Remove custom delay loader
      storage/innodb_plugin/handler/handler0vars.h:
        Remove custom delay loader
      storage/innodb_plugin/handler/i_s.cc:
        Remove custom delay loader
      storage/innodb_plugin/handler/win_delay_loader.cc:
        Remove custom delay loader
      storage/innodb_plugin/plug.in:
        Remove commented out MYSQL_PLUGIN_STATIC, 
        CMake would not parse that correctly
      768bbae9
  21. 08 Jun, 2009 1 commit
    • Davi Arnaut's avatar
      Fix for a valgrind warning due to use of a uninitialized · 01912b20
      Davi Arnaut authored
      variable. The problem was that THD::connect_utime could be
      used without being initialized when the main thread is used
      to handle connections (--thread-handling=no-threads).
      
      sql/mysqld.cc:
        Set THD::start_utime even in no-threads handling mode.
      sql/sql_class.cc:
        Initialize variable.
      sql/sql_class.h:
        Rename connect_utime to prior_thr_create_utime as to
        better reflect it's use intention.
      sql/sql_connect.cc:
        Check only if a thread was actually created.
      01912b20
  22. 05 Jun, 2009 1 commit
    • Davi Arnaut's avatar
      Bug#44672: Assertion failed: thd->transaction.xid_state.xid.is_null() · 12f91b1d
      Davi Arnaut authored
      The problem is that when a optimization of read-only transactions
      (bypass 2-phase commit) was implemented, it removed the code that
      reseted the XID once a transaction wasn't active anymore:
      
      sql/sql_parse.cc:
      
      -  bzero(&thd->transaction.stmt, sizeof(thd->transaction.stmt));
      -  if (!thd->active_transaction())
      -    thd->transaction.xid_state.xid.null();
      +  thd->transaction.stmt.reset();
      
      This mostly worked fine as the transaction commit and rollback
      functions (in handler.cc) reset the XID once the transaction is
      ended. But those functions wouldn't reset the XID in case of
      a empty transaction, leading to a assertion when a new starting
      a new XA transaction.
      
      The solution is to ensure that the XID state is reset when empty
      transactions are ended (by either commit or rollback). This is
      achieved by reorganizing the code so that the transaction cleanup
      routine is invoked whenever a transaction is ended.
      
      mysql-test/r/xa.result:
        Add test case result for Bug#44672
      mysql-test/t/xa.test:
        Add test case for Bug#44672
      sql/handler.cc:
        Invoke transaction cleanup function whenever a transaction is
        ended. Move XID state reset logic to the transaction cleanup
        function.
      sql/sql_class.h:
        Add XID state reset logic.
      12f91b1d
  23. 30 May, 2009 1 commit
    • He Zhenxing's avatar
      BUG#41948 Query_log_event constructor needlessly contorted · abf5f8da
      He Zhenxing authored
      Make the caller of Query_log_event, Execute_load_log_event
      constructors and THD::binlog_query to provide the error code
      instead of having the constructors to figure out the error code.
      
      sql/log_event.cc:
        Changed constructors of Query_log_event and Execute_load_log_event to accept the error code argument instead of figuring it out by itself
      sql/log_event.h:
        Changed constructors of Query_log_event and Execute_load_log_event to accept the error code argument
      abf5f8da
  24. 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
  25. 05 May, 2009 1 commit
  26. 30 Apr, 2009 1 commit
  27. 25 Mar, 2009 2 commits
    • Ramil Kalimullin's avatar
      Fix for bug#35383: binlog playback and replication breaks · bce4c76a
      Ramil Kalimullin authored
      due to name_const substitution
      
      Problem:
      "In general, statements executed within a stored procedure
      are written to the binary log using the same rules that
      would apply were the statements to be executed in standalone
      fashion. Some special care is taken when logging procedure
      statements because statement execution within procedures
      is not quite the same as in non-procedure context".
      
      For example, each reference to a local variable in SP's
      statements is replaced by NAME_CONST(var_name, var_value).
      Queries like
      "CREATE TABLE ... SELECT FUNC(local_var ..."
      are logged as
      "CREATE TABLE ... SELECT FUNC(NAME_CONST("local_var", var_value) ..."
      that leads to differrent field names and
      might result in "Incorrect column name" if var_value is long enough.
      
      Fix: in 5.x we'll issue a warning in such a case.
      In 6.0 we should get rid of NAME_CONST().
      
      Note: this issue and change should be described in the documentation
      ("Binary Logging of Stored Programs").
      
      
      mysql-test/r/binlog.result:
        Fix for bug#35383: binlog playback and replication breaks
        due to name_const substitution
          - test result.
      mysql-test/t/binlog.test:
        Fix for bug#35383: binlog playback and replication breaks
        due to name_const substitution
          - test case.
      sql/sp_head.cc:
        Fix for bug#35383: binlog playback and replication breaks 
        due to name_const substitution
          - set thd->query_name_consts if there's NAME_CONST()
        substitution(s).
      sql/sql_parse.cc:
        Fix for bug#35383: binlog playback and replication breaks 
        due to name_const substitution
          - issue a warning if there's NAME_CONST() substitution and
        binary logging is on for "CREATE TABLE ... SELECT ...".
      bce4c76a
    • Tatiana A. Nurnberg's avatar
      Bug#43748: crash when non-super user tries to kill the replication threads · e46c139d
      Tatiana A. Nurnberg authored
      Fine-tuning. Broke out comparison into method by
      suggestion of Davi. Clarified comments. Reverting
      test-case which I find too brittle; proper test
      case in 5.1+.
      e46c139d
  28. 05 Mar, 2009 2 commits
    • Guangbao Ni's avatar
      BUG#41980 SBL, INSERT .. SELECT .. LIMIT = ERROR, even when @@SQL_LOG_BIN is 0 ! · 4f0f021c
      Guangbao Ni authored
            
      When binlog_format is STATEMENT and the statement is unsafe before,
      the unsafe warning/error message was issued without checking
      whether the SQL_LOG_BIN was turned on or not.
            
      Fixed with adding a sql_log_bin_toplevel flag in THD to check
      whether SQL_LOG_BIN is ON in current session whatever the current is in sp or not.
      
      
      mysql-test/suite/binlog/r/binlog_unsafe.result:
        Test case result for unsafe warning/error message
      mysql-test/suite/binlog/t/binlog_unsafe.test:
        Test case for unsafe message warning/error
      sql/set_var.cc:
        Adding a function set_option_log_bin_bit() which specailly handles to
        the change of SQL_LOG_BIN bit in order to set sql_log_bin_toplevel
        according to SQL_LOG_BIN current value at the same time.
      sql/sql_class.cc:
        Initialize the flag sql_log_bin_toplevel in THD::init(),
        and add the condition to check whether unsafe ror message was issued.
      sql/sql_class.h:
        Add a sql_log_bin_toplevel flag in THD to indicate whether the toplevel SQL_LOG_BIN is
      4f0f021c
    • He Zhenxing's avatar
      BUG#37051 Replication rules not evaluated correctly · b4fdb8ae
      He Zhenxing authored
      Backporting patch to 5.0.
      b4fdb8ae
  29. 23 Feb, 2009 1 commit
    • Sergey Petrunia's avatar
      - Backport @@optimizer_switch support from 6.0 · cb6581d8
      Sergey Petrunia authored
      - Add support for setting it as a server commandline argument
      - Add support for those switches:
        = no_index_merge
        = no_index_merge_union
        = no_index_merge_sort_union
        = no_index_merge_intersection
      
      mysql-test/r/index_merge_myisam.result:
        Testcases for index_merge related @@optimizer_switch flags.
      mysql-test/t/index_merge_myisam.test:
        Testcases for index_merge related @@optimizer_switch flags.
      sql/set_var.cc:
        - Backport @@optimizer_switch support from 6.0
        - Add support for setting it as a server commandline argument
      sql/sql_class.h:
        - Backport @@optimizer_switch support from 6.0
      sql/sql_select.h:
        - Backport @@optimizer_switch support from 6.0
      cb6581d8
  30. 20 Dec, 2008 1 commit