An error occurred fetching the project authors.
  1. 06 Oct, 2008 1 commit
    • Marc Alff's avatar
      Bug#36768 (partition_info::check_partition_info() reports mal formed · ff4fde18
      Marc Alff authored
      warnings)
      
      Before this fix, several places in the code would raise a warning with an
      error code 0, making it impossible for a stored procedure, a connector,
      or a client application to trigger logic to handle the warning.
      Also, the warning text was hard coded, and therefore not translated.
      
      With this fix, new errors numbers have been created to represent these
      warnings, and the warning text is coded in the errmsg.txt file.
      ff4fde18
  2. 29 Jul, 2008 1 commit
  3. 17 Jul, 2008 1 commit
  4. 16 Jul, 2008 1 commit
  5. 19 Jun, 2008 1 commit
    • Kristofer Pettersson's avatar
      Bug#30087 Set query_cache_size, if the value is too small, get a unclear warning · 681236e1
      Kristofer Pettersson authored
        
      This bugs clarifies a warning message issued when the query cache data
      size becomes smaller than the minium allowed size.
      
      
      
      mysql-test/r/query_cache.result:
        New warning message when a too small value has been set for query cache
        size.
      sql/set_var.cc:
        To avoid poluting the QC API the warning messages are moved into the 
        QC module.
      sql/share/errmsg.txt:
        Changed error message so that minimal cache size always is hinted.
      sql/sql_cache.cc:
        Modified the warning message so that the minimal cache size always is
        hinted.
            
        Added interface method Query_cache::get_minimal_size_limit().
      sql/sql_cache.h:
        Modified the warning message so that the minimal cache size always is
        hinted.
            
        Added interface method Query_cache::get_minimal_size_limit().
      681236e1
  6. 03 Jun, 2008 1 commit
    • Mattias Jonsson's avatar
      Bug#31210: INSERT DELAYED crashes server when used on partitioned tables · a8af693b
      Mattias Jonsson authored
        
      Problem was an unclear error message since it could suggest that
      MyISAM did not support INSERT DELAYED.
      Changed the error message to say that DELAYED is not supported by the
      table, instead of the table's storage engine.
      The confusion is that a partitioned table is in somewhat sense using
      the partitioning storage engine, which in turn uses the ordinary
      storage engine. By saying that the table does not support DELAYED we
      do not give any extra informantion about the storage engine or if it
      is partitioned.
      
      mysql-test/r/innodb-replace.result:
        Bug#31210: INSERT DELAYED crashes server when used on partitioned tables
        
        changed error message
      mysql-test/t/innodb-replace.test:
        Bug#31210: INSERT DELAYED crashes server when used on partitioned tables
        
        changed error message
      mysql-test/t/merge.test:
        Bug#31210: INSERT DELAYED crashes server when used on partitioned tables
        
        changed error message
      mysql-test/t/partition_hash.test:
        Bug#31210: INSERT DELAYED crashes server when used on partitioned tables
        
        changed error message
      sql/share/errmsg.txt:
        Bug#31210: INSERT DELAYED crashes server when used on partitioned tables
        
        added error message for tables not supporting DELAYED
      sql/sql_insert.cc:
        Bug#31210: INSERT DELAYED crashes server when used on partitioned tables
        
        changed error message
      a8af693b
  7. 20 May, 2008 1 commit
    • unknown's avatar
      Bug#27430 "Crash in subquery code when in PS and table DDL changed after · 02c901ee
      unknown authored
       PREPARE", review fixes:
      - make the patch follow the specification of WL#4166 and remove  
      the new error that was originally introduced.
      Now the client never gets an error from reprepare, unless it failed.
      I.e. even if the statement at hand returns a completely different
      result set, this is not considered a server error.
      The C API library, that can not handle this situation, was modified to
      return a client error.
      Added additional test coverage.
      
      
      include/errmsg.h:
        Add a new client side error: now when we automatically
        reprepare a statement, the new result set may contain a different
        number of columns.
      include/mysql_com.h:
        Add a new server status to be sent to the client if the 
        number of columns in the result set is different.
      libmysql/errmsg.c:
        Add a new error message.
      libmysql/libmysql.c:
        Make the client library robust against a result set that
        contains a different number of columns from prepare time.
        Previously that could never happen, and we simply had an assert.
        That means in particular that all clients are advised to upgrade
        with transition to 5.1, if they are using prepared statements C API.
        Make mysql_stmt_store_result() and mysql_stmt_execute() robust against 
        "broken" statement handles (those that have an error).
      sql/sql_parse.cc:
        Clear transient server status flags at start of statement more 
        systematically.
      sql/share/errmsg.txt:
        Remove an error that is unused and is not part of any public release.
      sql/sql_prepare.cc:
        Instead of returning an error in case the number of result set columns
        has changed, simply update the client in server status.
        That will allow modern clients automatically recover from an error.
      tests/mysql_client_test.c:
        Add additional coverage to the cases when the number of result
        set columns changed as a result of reprepare.
        Cover conversion and truncation of result set columns.
      02c901ee
  8. 08 Apr, 2008 1 commit
    • unknown's avatar
      Tentative implementation of · a63dde5a
      unknown authored
      WL#4165 Prepared statements: validation 
      WL#4166 Prepared statements: automatic re-prepare
      Fixes
      Bug#27430 Crash in subquery code when in PS and table DDL changed after PREPARE
      Bug#27690 Re-execution of prepared statement after table was replaced with a view crashes
      Bug#27420 A combination of PS and view operations cause error + assertion on shutdown
      
      The basic idea of the patch is to keep track of table metadata between
      prepared statement prepare and execute. If some table used in the statement
      has changed, the prepared statement is re-prepared before execution.
      
      See WL#4165 and WL#4166 contents and comments in the code for details
      of the implementation.
      
      
      include/my_global.h:
        Remove 'register' keyword to avoid warnings when swapping large structures
        that don't fit into a register. Any modern compiler is capable of placing
        a variable in a register when that would benefit performance.
      mysql-test/r/ps_1general.result:
        Update test results: since now we re-prepare automatically,
        more correct results are produced in prepare-ddl-execute scenario.
      mysql-test/r/query_cache_merge.result:
        Ensure that the table definition cache is large enough for
        the test to pass in --ps-protocol
      mysql-test/r/trigger.result:
        Update test results to reflect automatic statement reprepare.
      mysql-test/t/disabled.def:
        Enable ps_ddl.test, which now passes.
      mysql-test/t/ps_1general.test:
        Since now we re-execute prepared statements after DDL successfully,
        change the test to produce repeatable results. Remove expectancy of
        an error in one place where now we automatically reprepare the prepared
        statement.
      mysql-test/t/query_cache_merge.test:
        Ensure the table definition cache is large enough for the test to pass
        in --ps-protocol
      mysql-test/t/trigger.test:
        Sinc
      sql/item.cc:
        Implement Item_param "copy" functionality, used at re-prepare of
        a prepared statement.
        We copy the type of the original parameter, and move the assigned value,
        if any. Sic, the value is "moved", since it can be quite big --
        e.g. in case we deal with a LONG DATA parameter.
        It's essential to move the value from the old parameter since
        at the time of re-prepare the client packet with the necessary information
        may be not available.
      sql/item.h:
        Declare a new method used for reprepare.
      sql/my_decimal.h:
        Implement "swap()" functionality of class my_decimal to be
        able to easily swap two decimal values.
      sql/mysql_priv.h:
        Declare enum_metadata_type.
      sql/mysqld.cc:
        Implement a status variable for the number of reprepared statements.
      sql/sql_base.cc:
        Implement metadata version validation.
      sql/share/errmsg.txt:
        Add two new error messages: ER_NEED_REPREPARE and ER_PS_REBIND.
        The first error (theoretically) never reaches the user.
        It is issued by the metadata validation framework when a metadata version
        has changed between prepare and execute. Later on it's intercepted
        and the statement is automatically re-prepared. Only if the error
        has occurred repeatedly MAX_REPREPARE_ATTEMTS (3) times do we
        return it to the user.
        
        The second error is issued when after re-prepare we discover
        that the metadata we sent over to the client using the binary
        protocol differs drammatically from the new result set metadata 
        that the reprepared statement produces (e.g. number of result
        set columns is different).
      sql/sql_class.cc:
        Implement metadata version validation framework.
      sql/sql_class.h:
        Declarations for metadata version validation framework.
      sql/sql_parse.cc:
        Mark commands for which we must invalidate and reprepare a prepared
        statement when metadata has changed.
      sql/sql_prepare.cc:
        Implement WL#4165 and WL#4166 (limited support of metadata validation
        and re-prepare).
      sql/table.h:
        Implement metadata validation.
      tests/mysql_client_test.c:
        Add a test case for WL#4166
      a63dde5a
  9. 02 Apr, 2008 1 commit
  10. 01 Apr, 2008 2 commits
    • unknown's avatar
      Post-merge fixes. · c481f6b3
      unknown authored
      sql/share/errmsg.txt:
        Reverting error message to before merge.
      c481f6b3
    • unknown's avatar
      Bug#15776: 32-bit signed int used for length of blob · 9efddcf6
      unknown authored
      Based on contributed patch from Martin Friebe, CLA from 2007-02-24.
      
      The parser lacked support for field sizes after signed long,
      when it should extend to 2**32-1.
      
      Now, we correct that limitation, and also make the error handling
      consistent for casts.
      ---
      Fix minor complaints of Marc Alff, for patch against B-g#15776.
      ---
      Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776/my50-bug15776
      into  zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776/my51-bug15776
      ---
      Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776/my51-bug15776
      into  zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.1-build
      ---
      testing
      
      
      mysql-test/r/type_blob.result:
        Verify that blobs may be created with the size that is already
        documented.
        
        Additionally, test the limits of several other types.
      mysql-test/t/type_blob.test:
        Verify that blobs may be created with the size that is already
        documented.
        
        Additionally, test the limits of several other types.
        ---
        Drop table in case we start from a bad state.
      sql/field.cc:
        atoi() insufficient to gauge the length of some fields.  Change
        it to strtoul().
      sql/item_create.cc:
        atoi() insufficient to gauge the length of some fields.  Change
        it to strtoul().
        
        If a casted length is too long, raise an error.
      sql/share/errmsg.txt:
        Change ER_TOO_BIG_FIELDLENGTH so that it can accept sizes larger
        than 2**15 -- instead, 2**32.
        ---
        Manual merge.
      sql/sql_yacc.yy:
        Make lengths take, in addition to NUM, LONG_NUM, ULONGLONG_NUM,
        and DECIMAL_NUM.
        ---
        yacc/bison is left-recursive, so FIXME statement is wrong.
        ---
        Manual merge and reformatting.
      sql/unireg.h:
        Define new constant.
      9efddcf6
  11. 28 Mar, 2008 1 commit
    • unknown's avatar
      Fix for Bug#35469: server crash with LOAD DATA INFILE to a VIEW. · 4ec65151
      unknown authored
      The problem was that LOAD DATA code (sql_load.cc) didn't take into
      account that there may be items, representing references to other
      columns. This is a usual case in views. The crash happened because
      Item_direct_view_ref was casted to Item_user_var_as_out_param,
      which is not a base class.
      
      The fix is to
        1) Handle references properly;
        2) Ensure that an item is treated as a user variable only when
           it is a user variable indeed;
        3) Report an error if LOAD DATA is used to load data into
           non-updatable column.
      
      
      mysql-test/r/loaddata.result:
        Update result file.
      mysql-test/t/loaddata.test:
        Add a test case form Bug#35469: server crash with
        LOAD DATA INFILE to a VIEW.
      sql/share/errmsg.txt:
        Introduce a new error.
      sql/sql_load.cc:
        Handle reference-items properly.
      mysql-test/std_data/bug35649.data:
        Add a data file for the test case.
      4ec65151
  12. 21 Mar, 2008 1 commit
    • unknown's avatar
      A patch for Bug#21854: Problems with CREATE TRIGGER without · d05f6b9f
      unknown authored
      DEFINER clause in --skip-grant-tables mode.
      
      Update error message.
      
      
      mysql-test/r/information_schema_db.result:
        Update result file.
      mysql-test/r/sp-security.result:
        Update result file.
      mysql-test/r/trigger_notembedded.result:
        Update result file.
      mysql-test/r/view_grant.result:
        Update result file.
      sql/share/errmsg.txt:
        Update error message.
      d05f6b9f
  13. 17 Mar, 2008 1 commit
    • unknown's avatar
      Bug #18199 PURGE BINARY LOGS fails silently with missing logs; · 6cf64b26
      unknown authored
      Bug #18453  Warning/error message if there is a mismatch between ...
       
      There were three problems:
       
       1. the reported lack of warnings for the BEFORE syntax of PURGE;
       2. the similar lack of warnings for the TO syntax;
       3. incompatible behaviour between the two in that the latter blanked out
          regardlessly of presence or lack the actual file corresponding to
          an index record; the former version gave up at the first mismatch.
      
      fixed with deploying the warning's generation and synronizing logics of 
      purge_logs() and purge_logs_before_date().
      my_stat() is called in either of two branches of purge_logs() (responsible
      for the TO syntax of PURGE) similarly to how it has behaved in the BEFORE syntax.
      If there is no actual binlog file, my_stat returns NULL and my_delete is
      not invoked.
      A critical error is reported to the user if a file from the index
      could not be retrieved info about or deleted with a system error code
      different than ENOENT.
      
      
      sql/log.cc:
        generating warning in two functions.
        refining logics to call my_stat() by purge_logs() as it happens
        in purge_logs_before_date().
        my_delete() is called only if my_stat() ensured existance of the file.
        A critical error is reported to the user if a file from the index
        could not be my_stat():ed or my_delete():d with an error different
        than ENOENT.
      sql/share/errmsg.txt:
        new error message
      mysql-test/include/show_binary_logs.inc:
        a new macro - shortcut of show binary logs
      mysql-test/r/binlog_index.result:
        new results
      mysql-test/t/binlog_index.test:
        a regression test for the bugs
      6cf64b26
  14. 31 Jan, 2008 2 commits
    • unknown's avatar
      Bug #32971 No user level error message from slave sql thread when ER_NO_DEFAULT_FOR_FIELD · b6ec38ce
      unknown authored
      The error message due to lack of the default value for an extra field
      was not as informative as it should be.
      
      Fixed with improving the scheme of gathering, propagating and reporting
      errors in applying rows events. 
      The scheme is in the following.
      Any kind of error of processing of a row event incidents are to be 
      registered with my_error().
      In the end Rows_log_event::do_apply_event() invokes rli->report() with the 
      message to display consisting of all the errors.
      This mimics `show warnings' displaying.
      A simple test checks three errors in processing an event.
      Two hunks - a user level error and pushing it into the list - 
      have been devoted to already fixed Bug@31702.
      
      Some open issues relating to this artifact listed on BUG@21842 page and
      on WL@3679.
      Todo: to synchronize the statement in the tests comments on Update and Delete
      events may not stop when an extra field does not have a default with wl@3228 spec.
      
      
      include/my_base.h:
        A new handler level error code that is supposed to be mapped to a set of more
        specific ER_ user level errors.
      mysql-test/extra/rpl_tests/rpl_row_tabledefs.test:
        Adding yet another extra fields to see more than one error in show
        slave status' report.
      mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result:
        results changed (the error message etc)
      mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result:
        results changed
      sql/log_event.cc:
        Refining slave_rows_error_report to iterate on the list of gathered errors;
        Simplifying signature of prepare_record as the function does not call
        rli->report to leave that duty to the event's top level code.
      sql/log_event.h:
        adding a corrupt event error pushing. The error will be seen with
        show slave status.
      sql/log_event_old.cc:
        similar to log_event.cc changes
      sql/rpl_record.cc:
        prepare_record only pushes an error to the list
      sql/rpl_record.h:
        signature changed
      sql/share/errmsg.txt:
        The user level error code that corresponds to HA_ERR_CORRUPT_EVENT.
        The error will be reported in show slave status if such a failure happens.
      b6ec38ce
    • unknown's avatar
      Bug #25426 Prefix index on DECIMAL column causes warning. · 53086d89
      unknown authored
      Error message modified to be consistent with the manual.
      
      
      mysql-test/r/alter_table.result:
        Bug #25426 Prefix index on DECIMAL column causes warning.
        
        test result fixed
      sql/share/errmsg.txt:
        Bug #25426 Prefix index on DECIMAL column causes warning.
        
        error messages modified
      53086d89
  15. 14 Dec, 2007 1 commit
    • unknown's avatar
      BUG#32407: Impossible to do point-in-time recovery from older binlog · 8d37a30e
      unknown authored
      Problem: it is unsafe to read base64-printed events without first
      reading the Format_description_log_event (FD).  Currently, mysqlbinlog
      cannot print the FD.
      
      As a side effect, another bug has also been fixed: When mysqlbinlog
      --start-position=X was specified, no ROLLBACK was printed. I changed
      this, so that ROLLBACK is always printed.
      
      This patch does several things:
      
       - Format_description_log_event (FD) now print themselves in base64
         format.
      
       - mysqlbinlog is now able to print FD events.  It has three modes:
          --base64-output=auto    Print row events in base64 output, and print
                                  FD event.  The FD event is printed even if
                                  it is outside the range specified with
                                  --start-position, because it would not be
                                  safe to read row events otherwise. This is
                                  the default.
      
          --base64-output=always  Like --base64-output=auto, but also print
                                  base64 output for query events.  This is
                                  like the old --base64-output flag, which
                                  is also a shorthand for
                                  --base64-output=always
      
          --base64-output=never   Never print base64 output, generate error if
                                  row events occur in binlog.  This is
                                  useful to suppress the FD event in binlogs
                                  known not to contain row events (e.g.,
                                  because BINLOG statement is unsafe,
                                  requires root privileges, is not SQL, etc)
      
       - the BINLOG statement now handles FD events correctly, by setting
         the thread's rli's relay log's description_event_for_exec to the
         loaded event.
      
         In fact, executing a BINLOG statement is almost the same as reading
         an event from a relay log.  Before my patch, the code for this was
         separated (exec_relay_log_event in slave.cc executes events from
         the relay log, mysql_client_binlog_statement in sql_binlog.cc
         executes BINLOG statements).  I needed to augment
         mysql_client_binlog_statement to do parts of what
         exec_relay_log_event does.  Hence, I did a small refactoring and
         moved parts of exec_relay_log_event to a new function, which I
         named apply_event_and_update_pos.  apply_event_and_update_pos is
         called both from exec_relay_log_event and from
         mysql_client_binlog_statement.
      
       - When a non-FD event is executed in a BINLOG statement, without
         previously executing a FD event in a BINLOG statement, it generates
         an error, because that's unsafe.  I took a new error code for that:
         ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENTS.
      
         In order to get a decent error message containing the name of the
         event, I added the class method char*
         Log_event::get_type_str(Log_event_type type), which returns a
         string name for the given Log_event_type.  This is just like the
         existing char* Log_event::get_type_str(), except it is a class
         method that takes the log event type as parameter.
      
         I also added PRE_GA_*_ROWS_LOG_EVENT to Log_event::get_type_str(),
         so that names of old rows event are properly printed.
      
       - When reading an event, I added a check that the event type is known
         by the current Format_description_log_event. Without this, it may
         crash on bad input (and I was struck by this several times).
      
       - I patched the following test cases, which all contain BINLOG
         statements for row events which must be preceded by BINLOG
         statements for FD events:
          - rpl_bug31076
      
      While I was here, I fixed some small things in log_event.cc:
      
       - replaced hard-coded 4 by EVENT_TYPE_OFFSET in 3 places
      
       - replaced return by DBUG_VOID_RETURN in one place
      
       - The name of the logfile can be '-' to indicate stdin.  Before my
         patch, the code just checked if the first character is '-'; now it
         does a full strcmp().  Probably, all arguments that begin with a -
         are already handled somewhere else as flags, but I still think it
         is better that the code reflects what it is supposed to do, with as
         little dependencies as possible on other parts of the code.  If we
         one day implement that all command line arguments after -- are
         files (as most unix tools do), then we need this.
      
      I also fixed the following in slave.cc:
      
       - next_event() was declared twice, and queue_event was not static but
         should be static (not used outside the file).
      
      
      client/client_priv.h:
        Declared the new option for base64 output.
      client/mysqlbinlog.cc:
         - Change from using the two-state command line option
          "default/--base64-output" to the three-state
          "--base64-output=[never|auto|always]"
         - Print the FD event even if it is outside the --start-position range.
         - Stop if a row event is about to be printed without a preceding FD
           event.
         - Minor fixes:
            * changed 4 to EVENT_TYPE_OFFSET in some places
            * Added comments
            * before, "mysqlbinlog -xyz" read from stdin; now it does not
              (only "mysqlbinlog -" reads stdin).
      mysql-test/r/mysqlbinlog2.result:
        Updated result file: mysqlbinlog now prints ROLLBACK always.
      mysql-test/suite/binlog/t/disabled.def:
        The test must be disabled since it reveals another bug: see BUG#33247.
      mysql-test/suite/rpl/r/rpl_bug31076.result:
        Updated result file
      mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result:
        Updated result file
      mysql-test/suite/rpl/t/rpl_bug31076.test:
        Had to add explicit Format_description_log_event before other BINLOG
        statements
      mysql-test/t/mysqlbinlog2.test:
        we must suppress base64 output in result file because it contains a
        timestamp
      sql/log_event.cc:
         - Made FD events able to print themselves
         - Added check that the current FD event knows about the event type, when
           an event is about to be read. (Hint to reviewers: I had to re-indent
           a big block because of this; use diff -b)
            * To get a decent error message, I also added a class method
              const char* Log_event::get_type_str(Log_event_type)
              which converts number to event type string without having a
              Log_event object.
            * Made Log_event::get_type_str aware of PRE_GA_*_ROWS_LOG_EVENT.
         - Minor fixes:
            * Changed return to DBUG_VOID_RETURN
      sql/log_event.h:
         - Declared enum to describe the three base64_output modes
         - Use the enum instead of a flag
         - Declare the new class method get_type_str (see log_event.cc)
      sql/share/errmsg.txt:
        Added error msg.
      sql/slave.cc:
         - Factored out part of exec_relay_log_event to the new function
           apply_event_and_update_pos, because that code is needed when executing
           BINLOG statements. (this is be functionally equivalent to the
           previous code, except: (1) skipping events is now optional, controlled
           by a parameter to the new function (2) the return value of
           exec_relay_log_event has changed; see next item).
         - Changed returned error value to always be 1. Before, it would return
           the error value from apply_log_event, which was unnecessary. This
           change is safe because the exact return value of exec_relay_log_event
           is never examined; it is only tested to be ==0 or !=0.
         - Added comments describing exec_relay_log_event and
           apply_event_and_update_pos.
         - Minor fixes:
            * Removed duplicate declaration of next_event, made queue_event
              static.
            * Added doxygen code to include this file.
      sql/slave.h:
        Declared the new apply_event_and_update_pos
      sql/sql_binlog.cc:
         - Made mysql_binlog_statement set the current FD event when the given
           event is an FD event. This entails using the new function
           apply_event_and_update_pos from slave.cc instead of just calling the
           ev->apply method.
         - Made mysql_binlog_statement fail if the first BINLOG statement is not
           an FD event.
      mysql-test/suite/binlog/r/binlog_base64_flag.result:
        New test file needs new result file
      mysql-test/suite/binlog/t/binlog_base64_flag.test:
        Added test case to verify that:
         - my patch fixes the bug
         - the new --base64-output flag works as expected
         - base64 events not preceded by an FD event give an error
         - an event of a type not known by the current FD event fails cleanly.
      mysql-test/suite/binlog/std_data/binlog-bug32407.000001:
        BitKeeper file /home/sven/bk/b32407-5.1-new-rpl-mysqlbinlog_base64/mysql-test/suite/binlog/std_data/binlog-bug32407.000001
      8d37a30e
  16. 12 Dec, 2007 1 commit
    • unknown's avatar
      Bug#31552 Replication breaks when deleting rows from out-of-sync table · 96a51b7f
      unknown authored
          without PK
      Bug#31609 Not all RBR slave errors reported as errors
      bug#32468 delete rows event on a table with foreign key constraint fails
      
      The first two bugs comprise idempotency issues.
      First, there was no error code reported under conditions of the bug
      description although the slave sql thread halted.
      Second, executions were different with and without presence of prim key in
      the table.
      Third, there was no way to instruct the slave whether to ignore an error
      and skip to the following event or to halt.
      Fourth, there are handler errors which might happen due to idempotent
      applying of binlog but those were not listed among the "idempotent" error
      list.
      
      All the named issues are addressed.
      Wrt to the 3rd, there is the new global system variable, changeble at run
      time, which controls the slave sql thread behaviour.
      The new variable allows further extensions to mimic the sql_mode
      session/global variable.
      To address the 4th, the new bug#32468 had to be fixed as it was staying
      in the way.
      
      
      include/my_bitmap.h:
        basic operations with bits of an integer type are added.
      mysql-test/extra/rpl_tests/rpl_foreign_key.test:
        regression test for bug#32468
      mysql-test/extra/rpl_tests/rpl_row_basic.test:
        changes due to bug#31552/31609 idempotency is not default any longer
      mysql-test/extra/rpl_tests/rpl_row_tabledefs.test:
        changes due to bug#31552/31609 idempotency is not default any longer
      mysql-test/suite/rpl/r/rpl_foreign_key_innodb.result:
        results changed
      mysql-test/suite/rpl/r/rpl_idempotency.result:
        results changed
      mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result:
        results changed
      mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result:
        results changed
      mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result:
        results changed
      mysql-test/suite/rpl/r/rpl_row_mystery22.result:
        results changed
      mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result:
        results changed
      mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result:
        results changed
      mysql-test/suite/rpl/r/rpl_temporary_errors.result:
        results changed
      mysql-test/suite/rpl/t/rpl_idempotency.test:
        extenstions to the test providing testing of complements to the
        idempotent error set and checking how slave halts when it faces an error
        from the list when the mode is STRICT.
      mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test:
        changes due to bug#31552/31609 idempotency is not default any longer.
      mysql-test/suite/rpl/t/rpl_row_mystery22.test:
        changes due to bug#31552/31609 idempotency is not default any longer
      mysql-test/suite/rpl/t/rpl_temporary_errors.test:
        changes due to bug#31552/31609 idempotency is not default any longer
      mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_advance.result:
        results changed
      mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result:
        results changed
      sql/log_event.cc:
        the fix for bug#32468 delete rows event on a table with foreign key constraint fails
        ensures the flags are set at proper time so that their values will be caught
        by innodb.
        reseting the flags is done along the common error and errorless execution
        path.
        The list of idempotent error is extended with foreign keys related items.
        NDB engine write events are designed with the replace sematics in mind.
        Therefore the corrsponding ndb handler's flag are (re)set regardless of
        the slave's execution mode.
        Rows_log_event::write_row() starts using the bool replace argument as its
        caller sets it depending on the event's execution mode.
      sql/log_event.h:
        adding a new member to hold the slave's mode during execution of the event.
      sql/mysql_priv.h:
        changes to link the command line option with the new global sys var.
      sql/mysqld.cc:
        introduction of the new command line option.
        providing its initialization to a default.
        changes to link the command line option with the new global sys var.
      sql/rpl_rli.cc:
        rli post-event-execution cleanup restores the default bits.
      sql/set_var.cc:
        The new "standard" sys_var_set class' and the new global system var related
        declarations and definitions.
        fix_slave_exec_mode() is used as with the update method of a new class so
        as at time of the command line arguments parsing.
      sql/set_var.h:
        new declarations. The class for the new global sys var is based on
        yet another new "standard" one.
      sql/share/errmsg.txt:
        slave_exec_mode setting error;
        slave inconsistency error which may be not an error when the intention
        is "idempotent". I.e consisting of row-based events binlog is being
        applied for the 2nd (more) time.
      sql/sql_class.h:
        The names for the bits of the new sever slave_exec_mode_options.
      mysql-test/suite/rpl/t/rpl_idempotency-master.opt:
        innodb is necessary
      mysql-test/suite/rpl/t/rpl_idempotency-slave.opt:
        innodb is necessary, as well as the tests start with non-default
        IDEMPOTENT slave execution mode.
      96a51b7f
  17. 10 Nov, 2007 1 commit
    • unknown's avatar
      Bug#29368: Modified error messages · 8aa1c8b9
      unknown authored
      Problem: there was no standard syntax error when
               creating partitions with syntax error in
               the partitioning clause.
      
      Solution: added "Syntax error: " to the error message
      
      
      mysql-test/r/partition.result:
        Bug#29368: Incorrect error for syntax error when createing
                   partition
        
        test result update
      mysql-test/r/partition_error.result:
        Bug#29368: Incorrect error for syntax error when createing
                   partition
        
        test result
      mysql-test/t/partition_error.test:
        Bug#29368: Incorrect error for syntax error when createing
                   partition
        
        test case
      sql/share/errmsg.txt:
        Bug#29368: Incorrect error for syntax error when createing
                   partition
        
        Modified error messages
      8aa1c8b9
  18. 23 Oct, 2007 1 commit
    • unknown's avatar
      Fixed bug #31663: if the FIELDS TERMINATED BY string · bcc62784
      unknown authored
      in the SELECT INTO OUTFILE clause starts with a special
      character (one of n, t, r, b, 0, Z or N) and ENCLOSED BY
      is empty, every occurrence of this character within a
      field value is duplicated.
      
      Duplication has been avoided.
      New warning message has been added: "First character of
      the FIELDS TERMINATED string is ambiguous; please use
      non-optional and non-empty FIELDS ENCLOSED BY".
      
      
      mysql-test/r/outfile_loaddata.result:
        BitKeeper file /home/uchum/work/bk/5.0-opt-31663/mysql-test/r/outfile_loaddata.result
        Added test case for bug #31663.
      mysql-test/t/outfile_loaddata.test:
        BitKeeper file /home/uchum/work/bk/5.0-opt-31663/mysql-test/t/outfile_loaddata.test
        Added test case for bug #31663.
      sql/sql_class.h:
        Fixed bug #31663.
        The select_export::is_ambiguous_field_term field has been added.
        This field is true if select_export::field_sep_char contains
        the first char of the FIELDS TERMINATED BY (ENCLOSED BY is empty),
        and items can contain this character.
        The select_export::field_term_char field has been added (first
        char of the FIELDS TERMINATED BY string or INT_MAX).
      sql/sql_class.cc:
        Fixed bug #31663.
        The select_export::prepare method has been modified to calculate
        a value of the select_export::is_ambiguous_field_term field and
        to warn if this value is true.
        The select_export::send_data method has been modified to
        avoid escaping or duplication of the field_set_char if
        is_ambiguous_field_term is true.
      sql/share/errmsg.txt:
        Fixed bug #31663.
        The ER_AMBIGUOUS_FIELD_TERM warning has been added.
      bcc62784
  19. 17 Oct, 2007 1 commit
    • unknown's avatar
      Fix for BUG#24923: Functions with ENUM issues. · 9e1604a4
      unknown authored
      The problem was that the RETURNS column in the mysql.proc was of
      CHAR(64). That was not enough for storing long-named datatypes.
      
      The fix is to change CHAR(64) to LONGBLOB, and to throw warnings
      at the time a stored routine is created if some data is truncated
      during writing into mysql.proc.
      
      
      mysql-test/r/sp.result:
        Update test result.
      mysql-test/t/sp.test:
        Add a test case for BUG#24923.
      scripts/mysql_system_tables.sql:
        Change the data type of column 'returns' from char(64) to longblob.
      scripts/mysql_system_tables_fix.sql:
        Change the data type of column 'returns' from char(64) to longblob.
      sql/sp.cc:
        Produce warnings if any data was truncated during writing
        into mysql.proc.
      sql/sp.h:
        Add new error code.
      sql/share/errmsg.txt:
        Add new error message.
      sql/sql_parse.cc:
        Hande
      9e1604a4
  20. 13 Sep, 2007 1 commit
    • unknown's avatar
      Fixed bug #27695. · 037a0f76
      unknown authored
      Declaring an all space column name in the SELECT FROM DUAL or in a view
      leads to misleading warning message:
      "Leading spaces are removed from name ' '".
      
      The Item::set_name method has been modified to raise warnings like
      "Name ' ' has become ''" in case of the truncation of an all
      space identifier to an empty string identifier instead of the
      "Leading spaces are removed from name ' '" warning message.
      
      
      sql/item.cc:
        Fixed bug #27695.
        The Item::set_name method has been modified to raise warnings like
        "Name ' ' has become ''" in case of the truncation of an all
        space identifier to an empty string identifier instead of the
        "Leading spaces are removed from name ' '" warning message.
      sql/share/errmsg.txt:
        Fixed bug #27695.
      mysql-test/t/select.test:
        Added test case for bug #27695.
      mysql-test/r/select.result:
        Added test case for bug #27695.
      037a0f76
  21. 31 Aug, 2007 1 commit
    • unknown's avatar
      Bug#15776: 32-bit signed int used for length of blob · 13fea36d
      unknown authored
      Based on contributed patch from Martin Friebe, CLA from 2007-02-24.
      
      The parser lacked support for field sizes after signed long,
      when it should extend to 2**32-1.
      
      Now, we correct that limitation, and also make the error handling
      consistent for casts.
      
      
      mysql-test/r/type_blob.result:
        Verify that blobs may be created with the size that is already
        documented.
        
        Additionally, test the limits of several other types.
      mysql-test/t/type_blob.test:
        Verify that blobs may be created with the size that is already
        documented.
        
        Additionally, test the limits of several other types.
      sql/field.cc:
        atoi() insufficient to gauge the length of some fields.  Change
        it to strtoul().
      sql/item_create.cc:
        atoi() insufficient to gauge the length of some fields.  Change
        it to strtoul().
        
        If a casted length is too long, raise an error.
      sql/share/errmsg.txt:
        Change ER_TOO_BIG_FIELDLENGTH so that it can accept sizes larger
        than 2**15 -- instead, 2**32.
      sql/sql_yacc.yy:
        Make lengths take, in addition to NUM, LONG_NUM, ULONGLONG_NUM,
        and DECIMAL_NUM.
      sql/unireg.h:
        Define new constant.
      13fea36d
  22. 02 Aug, 2007 1 commit
    • unknown's avatar
      Fixed bug #27352. · a53510f0
      unknown authored
      The SELECT query with more than 31 nested dependent SELECT queries returned
      wrong result.
      
      New error message has been added: ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT.
      It will be reported as: "Too high level of nesting for select".
      
      
      sql/sql_parse.cc:
        Fixed bug #27352.
        The Item_sum::register_sum_func method has been modified to return
        TRUE on exceeding of allowed level of SELECT nesting and to report
        corresponding error message.
      sql/unireg.h:
        Fixed bug #27352.
        Constant definition has been added: maximal allowed level of SELECT nesting.
      mysql-test/t/select.test:
        Updated test case for bug #27352.
      mysql-test/r/select.result:
        Updated test case for bug #27352.
      sql/share/errmsg.txt:
        Fixed bug #27352.
        New error message has been added: ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT.
      a53510f0
  23. 27 Jul, 2007 1 commit
    • unknown's avatar
      WL#3984 (Revise locking of mysql.general_log and mysql.slow_log) · 4462578a
      unknown authored
      Bug#25422 (Hang with log tables)
      Bug 17876 (Truncating mysql.slow_log in a SP after using cursor locks the
                thread)
      Bug 23044 (Warnings on flush of a log table)
      Bug 29129 (Resetting general_log while the GLOBAL READ LOCK is set causes
                 a deadlock)
      
      Prior to this fix, the server would hang when performing concurrent
      ALTER TABLE or TRUNCATE TABLE statements against the LOG TABLES,
      which are mysql.general_log and mysql.slow_log.
      
      The root cause traces to the following code:
      in sql_base.cc, open_table()
        if (table->in_use != thd)
        {
          /* wait_for_condition will unlock LOCK_open for us */
          wait_for_condition(thd, &LOCK_open, &COND_refresh);
        }
      The problem with this code is that the current implementation of the
      LOGGER creates 'fake' THD objects, like
      - Log_to_csv_event_handler::general_log_thd
      - Log_to_csv_event_handler::slow_log_thd
      which are not associated to a real thread running in the server,
      so that waiting for these non-existing threads to release table locks
      cause the dead lock.
      
      In general, the design of Log_to_csv_event_handler does not fit into the
      general architecture of the server, so that the concept of general_log_thd
      and slow_log_thd has to be abandoned:
      - this implementation does not work with table locking
      - it will not work with commands like SHOW PROCESSLIST
      - having the log tables always opened does not integrate well with DDL
      operations / FLUSH TABLES / SET GLOBAL READ_ONLY
      
      With this patch, the fundamental design of the LOGGER has been changed to:
      - always open and close a log table when writing a log
      - remove totally the usage of fake THD objects
      - clarify how locking of log tables is implemented in general.
      
      See WL#3984 for details related to the new locking design.
      
      Additional changes (misc bugs exposed and fixed):
      
      1)
      
      mysqldump which would ignore some tables in dump_all_tables_in_db(),
       but forget to ignore the same in dump_all_views_in_db().
      
      2)
      
      mysqldump would also issue an empty "LOCK TABLE" command when all the tables
      to lock are to be ignored (numrows == 0), instead of not issuing the query.
      
      3)
      
      Internal errors handlers could intercept errors but not warnings
      (see sql_error.cc).
      
      4)
      
      Implementing a nested call to open tables, for the performance schema tables,
      exposed an existing bug in remove_table_from_cache(), which would perform:
        in_use->some_tables_deleted=1;
      against another thread, without any consideration about thread locking.
      This call inside remove_table_from_cache() was not required anyway,
      since calling mysql_lock_abort() takes care of aborting -- cleanly -- threads
      that might hold a lock on a table.
      This line (in_use->some_tables_deleted=1) has been removed.
      
      
      sql/handler.cc:
        Moved logic for system / log tables in the SQL layer.
      sql/handler.h:
        Moved logic for system / log tables in the SQL layer.
      sql/lock.cc:
        Revised locking of log tables
      sql/log.cc:
        Major cleanup: changed how log tables are locked / written to.
      sql/log.h:
        Major cleanup: changed how log tables are locked / written to.
      sql/mysql_priv.h:
        performance schema helpers
      sql/slave.cc:
        open_ltable() lock flags
      sql/sp.cc:
        open_ltable() lock flags
      sql/sql_acl.cc:
        open_ltable() lock flags
      sql/sql_class.h:
        performance schema helpers
      sql/sql_delete.cc:
        log tables cleanup in TRUNCATE
      sql/sql_error.cc:
        Internal handlers can also intercept warnings
      sql/sql_insert.cc:
        open_ltable() lock flags
      sql/sql_parse.cc:
        performance schema helpers
      sql/sql_plugin.cc:
        open_ltable() lock flags
      sql/sql_rename.cc:
        log tables cleanup in RENAME
      sql/sql_servers.cc:
        open_ltable() lock flags
      sql/sql_show.cc:
        Move INFORMATION_SCHEMA_NAME to table.cc
      sql/sql_table.cc:
        log tables cleanup (admin operations, ALTER TABLE)
      sql/sql_udf.cc:
        open_ltable() lock flags
      sql/table.cc:
        Implemented TABLE_CATEGORY.
      sql/share/errmsg.txt:
        Changed the wording and name of ER_CANT_READ_LOCK_LOG_TABLE
      sql/table.h:
        Implemented TABLE_CATEGORY.
      storage/csv/ha_tina.cc:
        Moved logic for system / log tables in the SQL layer.
      storage/csv/ha_tina.h:
        Moved logic for system / log tables in the SQL layer.
      storage/myisam/ha_myisam.cc:
        Moved logic for system / log tables in the SQL layer.
      storage/myisam/ha_myisam.h:
        Moved logic for system / log tables in the SQL layer.
      client/mysqldump.c:
        Don't lock tables in the ignore list.
        Don't issue empty LOCK TABLES queries.
      sql/sql_base.cc:
        log tables cleanup
        performance schema helpers
      mysql-test/r/ps.result:
        Adjust test results
      mysql-test/r/show_check.result:
        Adjust test results
      mysql-test/r/status.result:
        Adjust test results
      mysql-test/t/log_state.test:
        Added tests for Bug#29129
      mysql-test/t/ps.test:
        Make the test output deterministic
      mysql-test/t/show_check.test:
        Make the test output deterministic
      mysql-test/r/log_state.result:
        Changed the default location of the log output to LOG_FILE,
        for backward compatibility with MySQL 5.0
        ---
        Adjust test results
      mysql-test/r/log_tables.result:
        cleanup for -ps-protocol
      mysql-test/t/log_tables.test:
        cleanup for -ps-protocol
      sql/set_var.cc:
        Changed the default location of the log output to LOG_FILE,
        for backward compatibility with MySQL 5.0
        ---
        log tables cleanup
      4462578a
  24. 15 Jul, 2007 1 commit
    • unknown's avatar
      A fix for Bug#27406 Events: failure only causes a warning. Update test · 7416224c
      unknown authored
      results.
      When executing a CREATE EVENT statement with ON COMPLETION NOT PRESERVE 
      clause (explicit or implicit) and completion date in the past, we do not 
      create the event. Or, put it differently, we create it and then drop 
      immediately.
      A warning is issued in this case, not an error -- we want to load 
      successfully old database dumps, and such dumps may contain events
      that are no longer valid.
      
      Update the warning text to not imply an erroneous condition. 
      
      
      mysql-test/r/events_bugs.result:
        Update the test results (Bug#27406)
      sql/share/errmsg.txt:
        Fix Bug#27406 "Events: failure only causes a warning" -- update the error
        message to not imply that there was a failure.
      7416224c
  25. 28 Jun, 2007 1 commit
    • unknown's avatar
      Patch for the following bugs: · 405f82d3
      unknown authored
        - BUG#11986: Stored routines and triggers can fail if the code
          has a non-ascii symbol
        - BUG#16291: mysqldump corrupts string-constants with non-ascii-chars
        - BUG#19443: INFORMATION_SCHEMA does not support charsets properly
        - BUG#21249: Character set of SP-var can be ignored
        - BUG#25212: Character set of string constant is ignored (stored routines)
        - BUG#25221: Character set of string constant is ignored (triggers)
      
      There were a few general problems that caused these bugs:
      1. Character set information of the original (definition) query for views,
         triggers, stored routines and events was lost.
      2. mysqldump output query in client character set, which can be
         inappropriate to encode definition-query.
      3. INFORMATION_SCHEMA used strings with mixed encodings to display object
         definition;
      
      1. No query-definition-character set.
      
      In order to compile query into execution code, some extra data (such as
      environment variables or the database character set) is used. The problem
      here was that this context was not preserved. So, on the next load it can
      differ from the original one, thus the result will be different.
      
      The context contains the following data:
        - client character set;
        - connection collation (character set and collation);
        - collation of the owner database;
      
      The fix is to store this context and use it each time we parse (compile)
      and execute the object (stored routine, trigger, ...).
      
      2. Wrong mysqldump-output.
      
      The original query can contain several encodings (by means of character set
      introducers). The problem here was that we tried to convert original query
      to the mysqldump-client character set.
      
      Moreover, we stored queries in different character sets for different
      objects (views, for one, used UTF8, triggers used original character set).
      
      The solution is
        - to store definition queries in the original character set;
        - to change SHOW CREATE statement to output definition query in the
          binary character set (i.e. without any conversion);
        - introduce SHOW CREATE TRIGGER statement;
        - to dump special statements to switch the context to the original one
          before dumping and restore it afterwards.
      
      Note, in order to preserve the database collation at the creation time,
      additional ALTER DATABASE might be used (to temporary switch the database
      collation back to the original value). In this case, ALTER DATABASE
      privilege will be required. This is a backward-incompatible change.
      
      3. INFORMATION_SCHEMA showed non-UTF8 strings
      
      The fix is to generate UTF8-query during the parsing, store it in the object
      and show it in the INFORMATION_SCHEMA.
      
      Basically, the idea is to create a copy of the original query convert it to
      UTF8. Character set introducers are removed and all text literals are
      converted to UTF8.
      
      This UTF8 query is intended to provide user-readable output. It must not be
      used to recreate the object.  Specialized SHOW CREATE statements should be
      used for this.
      
      The reason for this limitation is the following: the original query can
      contain symbols from several character sets (by means of character set
      introducers).
      
      Example:
      
        - original query:
          CREATE VIEW v1 AS SELECT _cp1251 'Hello' AS c1;
      
        - UTF8 query (for INFORMATION_SCHEMA):
          CREATE VIEW v1 AS SELECT 'Hello' AS c1;
      
      
      client/mysqldump.c:
        Set original character set and collation before dumping definition query.
      include/my_sys.h:
        Move out-parameter to the end of list.
      mysql-test/lib/mtr_report.pl:
        Ignore server-warnings during the test case.
      mysql-test/r/create.result:
        Update result file.
      mysql-test/r/ctype_cp932_binlog_stm.result:
        Update result file.
      mysql-test/r/events.result:
        Update result file.
      mysql-test/r/events_bugs.result:
        Update result file.
      mysql-test/r/events_grant.result:
        Update result file.
      mysql-test/r/func_in.result:
        Update result file.
      mysql-test/r/gis.result:
        Update result file.
      mysql-test/r/grant.result:
        Update result file.
      mysql-test/r/information_schema.result:
        Update result file.
      mysql-test/r/information_schema_db.result:
        Update result file.
      mysql-test/r/lowercase_view.result:
        Update result file.
      mysql-test/r/mysqldump.result:
        Update result file.
      mysql-test/r/ndb_sp.result:
        Update result file.
      mysql-test/r/ps.result:
        Update result file.
      mysql-test/r/rpl_replicate_do.result:
        Update result file.
      mysql-test/r/rpl_sp.result:
        Update result file.
      mysql-test/r/rpl_trigger.result:
        Update result file.
      mysql-test/r/rpl_view.result:
        Update result file.
      mysql-test/r/show_check.result:
        Update result file.
      mysql-test/r/skip_grants.result:
        Update result file.
      mysql-test/r/sp-destruct.result:
        Update result file.
      mysql-test/r/sp-error.result:
        Update result file.
      mysql-test/r/sp-security.result:
        Update result file.
      mysql-test/r/sp.result:
        Update result file.
      mysql-test/r/sql_mode.result:
        Update result file.
      mysql-test/r/system_mysql_db.result:
        Update result file.
      mysql-test/r/temp_table.result:
        Update result file.
      mysql-test/r/trigger-compat.result:
        Update result file.
      mysql-test/r/trigger-grant.result:
        Update result file.
      mysql-test/r/trigger.result:
        Update result file.
      mysql-test/r/view.result:
        Update result file.
      mysql-test/r/view_grant.result:
        Update result file.
      mysql-test/t/events.test:
        Update test case (new columns added).
      mysql-test/t/information_schema.test:
        Update test case (new columns added).
      mysql-test/t/show_check.test:
        Test case for SHOW CREATE TRIGGER in prepared statements and
        stored routines.
      mysql-test/t/sp-destruct.test:
        Update test case (new columns added).
      mysql-test/t/sp.test:
        Update test case (new columns added).
      mysql-test/t/view.test:
        Update test.
      mysys/charset.c:
        Move out-parameter to the end of list.
      scripts/mysql_system_tables.sql:
        Add new columns to mysql.proc and mysql.event.
      scripts/mysql_system_tables_fix.sql:
        Add new columns to mysql.proc and mysql.event.
      sql/event_data_objects.cc:
        Support new attributes for events.
      sql/event_data_objects.h:
        Support new attributes for events.
      sql/event_db_repository.cc:
        Support new attributes for events.
      sql/event_db_repository.h:
        Support new attributes for events.
      sql/events.cc:
        Add new columns to SHOW CREATE event resultset.
      sql/mysql_priv.h:
        1. Introduce Object_creation_ctx;
        2. Introduce SHOW CREATE TRIGGER;
        3. Introduce auxilary functions.
      sql/sp.cc:
        Add support for new store routines attributes.
      sql/sp_head.cc:
        Add support for new store routines attributes.
      sql/sp_head.h:
        Add support for new store routines attributes.
      sql/sql_lex.cc:
        Generate UTF8-body on parsing/lexing.
      sql/sql_lex.h:
        1. Generate UTF8-body on parsing/lexing.
        2. Introduce SHOW CREATE TRIGGER.
      sql/sql_parse.cc:
        Introduce SHOW CREATE TRIGGER.
      sql/sql_partition.cc:
        Update parse_sql().
      sql/sql_prepare.cc:
        Update parse_sql().
      sql/sql_show.cc:
        Support new attributes for views
      sql/sql_trigger.cc:
        Support new attributes for views
      sql/sql_trigger.h:
        Support new attributes for views
      sql/sql_view.cc:
        Support new attributes for views
      sql/sql_yacc.yy:
        1. Add SHOW CREATE TRIGGER statement.
        2. Generate UTF8-body for views, stored routines, triggers and events.
      sql/table.cc:
        Introduce Object_creation_ctx.
      sql/table.h:
        Introduce Object_creation_ctx.
      sql/share/errmsg.txt:
        Add new errors.
      mysql-test/include/ddl_i18n.check_events.inc:
        Aux file for test suite.
      mysql-test/include/ddl_i18n.check_sp.inc:
        Aux file for test suite.
      mysql-test/include/ddl_i18n.check_triggers.inc:
        Aux file for test suite.
      mysql-test/include/ddl_i18n.check_views.inc:
        Aux file for test suite.
      mysql-test/include/have_cp1251.inc:
        Aux file for test suite.
      mysql-test/include/have_cp866.inc:
        Aux file for test suite.
      mysql-test/include/have_koi8r.inc:
        Aux file for test suite.
      mysql-test/include/have_utf8.inc:
        Aux file for test suite.
      mysql-test/r/ddl_i18n_koi8r.result:
        Result file.
      mysql-test/r/ddl_i18n_utf8.result:
        Result file.
      mysql-test/r/have_cp1251.require:
        Aux file for test suite.
      mysql-test/r/have_cp866.require:
        Aux file for test suite.
      mysql-test/r/have_koi8r.require:
        Aux file for test suite.
      mysql-test/r/have_utf8.require:
        Aux file for test suite.
      mysql-test/t/ddl_i18n_koi8r.test:
        Complete koi8r test case for the CS patch.
      mysql-test/t/ddl_i18n_utf8.test:
        Complete utf8 test case for the CS patch.
      405f82d3
  26. 26 Jun, 2007 1 commit
    • unknown's avatar
      Bug #29245: Bad Merge Caused Error Codes Conflict between 5.0/5.1 · ae398d99
      unknown authored
      Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      
      
      mysql-test/r/backup.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/events_bugs.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/events_trans.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/ndb_dd_basic.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/ndb_dd_ddl.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/ndb_gis.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/ndb_row_format.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/rpl_extraCol_innodb.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/rpl_extraCol_myisam.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/rpl_incident.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/rpl_ndb_extraCol.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/rpl_row_tabledefs_2myisam.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/rpl_row_tabledefs_3innodb.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/rpl_sp.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/select.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/show_check.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/sp.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/sp_gis.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/sp_trans.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/type_timestamp.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/warnings.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/r/xml.result:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/t/grant.test:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      mysql-test/t/partition_grant.test:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      sql/mysql_priv.h:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      sql/share/errmsg.txt:
        Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
      ae398d99
  27. 12 Jun, 2007 1 commit
    • unknown's avatar
      BUG#23051 (READ COMMITTED breaks mixed and statement-based · ccbada08
      unknown authored
      replication):
      
      Patch to add binlog format capabilities to the InnoDB storage engine.
      The engine will not allow statement format logging when in READ COMMITTED
      or READ UNCOMMITTED transaction isolation level.
      
      In addition, an error is generated when trying to use READ COMMITTED
      or READ UNCOMMITTED transaction isolation level in STATEMENT binlog
      mode.
      
      
      sql/handler.h:
        Adding declaration of already global arrays.
      sql/share/errmsg.txt:
        Adding error messages for invalid changes of transaction isolation level
        and binlog mode switch.  Removing messages that are not needed any more
        (this cset it pushed together with the cset that introduced these
        messages, so it is safe to remove the messages).
      sql/sql_base.cc:
        Some changes to error reporting code to get more informative messages.
      storage/innobase/handler/ha_innodb.cc:
        Adding capabilities to storage engine.
        
        Ha_innobase:table_flags() now compute flags on a per-statement basis
        and the statement capabilities flag is just set if the transaction
        isolation level is below READ COMMITTED.
        
        An informative message is printed in the event that the transaction
        isolation level is below READ COMMITTED and the binlog mode is STATEMENT.
      storage/innobase/handler/ha_innodb.h:
        Accomodating to changes in the server code that switched from ulong
        to Table_flags as type for the table flags.
      mysql-test/r/binlog_innodb.result:
        New BitKeeper file ``mysql-test/r/binlog_innodb.result''
      mysql-test/t/binlog_innodb.test:
        New BitKeeper file ``mysql-test/t/binlog_innodb.test''
      ccbada08
  28. 09 Jun, 2007 1 commit
    • unknown's avatar
      BUG#24954 (Last_errno and Last_error not set after master_retry_count was reached): · 79a609aa
      unknown authored
      Adding new fields Last_{IO,SQL}_Errno and Last_{IO,SQL}_Error to output
      of SHOW SLAVE STATUS to hold errors from I/O and SQL thread respectively.
      Old fields Last_Error and Last_Errno are aliases for Last_SQL_Error and
      Last_SQL_Errno respectively.
      
      Fields are added last to output of SHOW SLAVE STATUS to allow old applications
      to use the same positional arguments into the row, while allowing new
      application to benefit from the added information.
      
      In addition, some new error codes are added (especially for the I/O
      thread) to be able to provide sensible error message.
      
      
      mysql-test/extra/rpl_tests/rpl_max_relay_size.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      mysql-test/r/binlog_row_mix_innodb_myisam.result:
        Result change
      mysql-test/r/rpl_000015.result:
        Result change
      mysql-test/r/rpl_change_master.result:
        Result change
      mysql-test/r/rpl_deadlock_innodb.result:
        Result change
      mysql-test/r/rpl_empty_master_crash.result:
        Result change
      mysql-test/r/rpl_extraCol_innodb.result:
        Result change
        ---
        Result change.
      mysql-test/r/rpl_extraCol_myisam.result:
        Result change
        ---
        Result change.
      mysql-test/r/rpl_flushlog_loop.result:
        Result change
      mysql-test/r/rpl_loaddata.result:
        Result change
      mysql-test/r/rpl_log_pos.result:
        Result change
      mysql-test/r/rpl_ndb_basic.result:
        Result change
      mysql-test/r/rpl_ndb_extraCol.result:
        Result change
        ---
        Result change.
      mysql-test/r/rpl_ndb_idempotent.result:
        Result change
      mysql-test/r/rpl_ndb_log.result:
        Result change
      mysql-test/r/rpl_openssl.result:
        Result change
      mysql-test/r/rpl_rbr_to_sbr.result:
        Result change
      mysql-test/r/rpl_redirect.result:
        Result change
      mysql-test/r/rpl_replicate_do.result:
        Result change
      mysql-test/r/rpl_rotate_logs.result:
        Result change
      mysql-test/r/rpl_row_inexist_tbl.result:
        Result change
      mysql-test/r/rpl_row_log.result:
        Result change
      mysql-test/r/rpl_row_log_innodb.result:
        Result change
      mysql-test/r/rpl_row_max_relay_size.result:
        Result change
      mysql-test/r/rpl_row_reset_slave.result:
        Result change
      mysql-test/r/rpl_row_tabledefs_2myisam.result:
        Result change
        ---
        Result change.
      mysql-test/r/rpl_row_tabledefs_3innodb.result:
        Result change
        ---
        Result change.
      mysql-test/r/rpl_row_until.result:
        Result change
      mysql-test/r/rpl_server_id1.result:
        Result change
      mysql-test/r/rpl_server_id2.result:
        Result change
      mysql-test/r/rpl_slave_status.result:
        Result change
      mysql-test/r/rpl_stm_log.result:
        Result change
      mysql-test/r/rpl_stm_max_relay_size.result:
        Result change
        ---
        Result change.
      mysql-test/r/rpl_stm_reset_slave.result:
        Result change
      mysql-test/r/rpl_stm_until.result:
        Result change
      mysql-test/t/binlog_row_mix_innodb_myisam.test:
        Test fixed.
      mysql-test/t/rpl_000015.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      mysql-test/t/rpl_change_master.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      mysql-test/t/rpl_empty_master_crash.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      mysql-test/t/rpl_flushlog_loop.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      mysql-test/t/rpl_log_pos.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      mysql-test/t/rpl_ndb_bank.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      mysql-test/t/rpl_ndb_basic.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      mysql-test/t/rpl_ndb_idempotent.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      mysql-test/t/rpl_ndb_sync.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      mysql-test/t/rpl_openssl.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      mysql-test/t/rpl_rbr_to_sbr.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      mysql-test/t/rpl_redirect.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      mysql-test/t/rpl_replicate_do.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      mysql-test/t/rpl_rotate_logs.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      mysql-test/t/rpl_row_inexist_tbl.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      mysql-test/t/rpl_row_until.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      mysql-test/t/rpl_server_id1.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      mysql-test/t/rpl_server_id2.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      mysql-test/t/rpl_slave_status.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      mysql-test/t/rpl_stm_until.test:
        Commenting out irrelevant fields Last_IO_Error and Last_IO_Errno
      sql/Makefile.am:
        Adding new files
      sql/log_event.cc:
        Changes to use Slave_reporting_capability for reporting errors.
        
        Adding debug variable to stop slave with an out-of-memory error or with
        a fatal error. The checks are put both in the new Execute_load_query_
        log_event and in the old Load_log_event which is used for Execute_load_
        log_event.
        
        Adding code to generate fatal error message.
        
        Eliminating redundant arguments when printing ER_NO_DEFAULT_FOR_FIELD
        message.
      sql/rpl_mi.cc:
        Using Slave_reporting_capability for error reporting.
      sql/rpl_mi.h:
        Using Slave_reporting_capability to handle I/O thread errors and other messages.
      sql/rpl_rli.cc:
        Using Slave_reporting_capability to handle SQL thread errors and other messages.
      sql/rpl_rli.h:
        Changes to use Slave_reporting_capability for reporting SQL thread error and other messages.
      sql/rpl_utility.cc:
        Changes to use Slave_reporting_capability for reporting errors.
      sql/slave.cc:
        Changes to use Slave_reporting_capability for reporting errors.
      sql/slave.h:
        Removing slave_print_msg()
      sql/share/errmsg.txt:
        New error messages.
        
        Making message for ER_NO_DEFAULT_FOR_FIELD consistent over languages
        (actually restoring old message).
        
        Adding argument to ER_SLAVE_FATAL_ERROR message.
      sql/sql_repl.cc:
        Using new names for thread masks.
      mysql-test/t/rpl_loaddata_fatal-slave.opt:
        New BitKeeper file ``mysql-test/t/rpl_loaddata_fatal-slave.opt''
      sql/rpl_reporting.cc:
        New BitKeeper file ``sql/rpl_reporting.cc''
      sql/rpl_reporting.h:
        New BitKeeper file ``sql/rpl_reporting.h''
      mysql-test/include/show_slave_status.inc:
        New BitKeeper file ``mysql-test/include/show_slave_status.inc''
      mysql-test/r/rpl_loaddata_fatal.result:
        New BitKeeper file ``mysql-test/r/rpl_loaddata_fatal.result''
      mysql-test/t/rpl_loaddata_fatal.test:
        New BitKeeper file ``mysql-test/t/rpl_loaddata_fatal.test''
      79a609aa
  29. 05 Jun, 2007 1 commit
    • unknown's avatar
      BUG#26976 - Missing table in merge not noted in related error msg + · 55c76592
      unknown authored
                  SHOW CREATE TABLE fails
      
      Underlying table names, that merge engine fails to open were not
      reported.
      
      With this fix CHECK TABLE issued against merge table reports all
      underlying table names that it fails to open. Other statements
      are unaffected, that is underlying table names are not included
      into error message.
      
      This fix doesn't solve SHOW CREATE TABLE issue.
      
      
      myisammrg/myrg_def.h:
        Added myrg_print_wrong_table declaration.
      myisammrg/myrg_open.c:
        If HA_OPEN_FOR_REPAIR is passed to merge engine open function,
        report names of tables that we fail to open.
      mysql-test/r/backup.result:
        Updated test result.
      mysql-test/r/key_cache.result:
        Updated test result - removed duplicate error.
      mysql-test/r/lock.result:
        Updated test result - added summary row.
      mysql-test/r/merge.result:
        A test case for BUG#26976.
      mysql-test/r/preload.result:
        Updated test result - removed duplicate error, added summary row.
      mysql-test/r/ps.result:
        Updated test result - removed duplicate error, added summary row.
      mysql-test/r/repair.result:
        Updated test result - removed duplicate error, added summary row.
      mysql-test/r/rpl_failed_optimize.result:
        Updated test result - removed duplicate error, added summary row.
      mysql-test/r/sp.result:
        Updated test result - removed duplicate error, added summary row.
      mysql-test/r/view.result:
        Updated test result - removed duplicate error, added summary row.
      mysql-test/t/merge.test:
        A test case for BUG#26976.
      sql/ha_myisam.cc:
        Do not report same error twice.
      sql/ha_myisammrg.cc:
        If HA_OPEN_FOR_REPAIR is passed to merge engine open function,
        report names of tables that we fail to open.
        
        Added dummy ha_myisammrg::check to not confuse users with
        "not implemented" error in case all underlying tables are
        fine.
      sql/ha_myisammrg.h:
         Added ha_myisammrg::check declaration.
      sql/share/errmsg.txt:
        Added ER_ADMIN_WRONG_MRG_TABLE errno. It is used instead
        of ER_WRONG_MRG_TABLE in case HA_OPEN_FOR_REPAIR is
        passed to merge engine handler open function.
      sql/sql_error.cc:
        warning_level_* are now public. It is required by mysql_admin_table to
        report message level.
      sql/sql_error.h:
        warning_level_* are now public. It is required by mysql_admin_table to
        report message level.
      sql/sql_table.cc:
        Reorder mysql_admin_table arguments to meet it's definition.
        
        Report errors that are pending in thd->warn_list as results of
        admin function.
      55c76592
  30. 28 May, 2007 1 commit
    • unknown's avatar
      WL#3303 (RBR: Engine-controlled logging format): · 098e15c1
      unknown authored
      Adding support to allow engines to tell what formats they can handle.
      The server will generate an error if it is not possible to log the
      statement according to the logging mode in effect.
      
      Adding flags to several storage engines to state what they can handle.
      
      Changes to NDB handler removing code that forces row-based mode and
      adding flag saying that NDB can only handle row format.
      
      Adding check that binlog flags are only used for real tables that are
      opened for writing.
      
      
      BitKeeper/deleted/.del-binlog_row_blackhole.result:
        Rename: mysql-test/r/binlog_row_blackhole.result -> BitKeeper/deleted/.del-binlog_row_blackhole.result
      BitKeeper/deleted/.del-binlog_row_blackhole.test:
        Rename: mysql-test/t/binlog_row_blackhole.test -> BitKeeper/deleted/.del-binlog_row_blackhole.test
      mysql-test/t/partition_hash.test:
        Adding error check for statement that might fail.
      sql/ha_ndbcluster.cc:
        Removing statements that switch to row-based format.
        Adding row capabilities.
      sql/handler.h:
        Adding handler/table flags to indicate that the engine is row- and/or
        statement-logging capable.
        
        Adding typedef for table_flags type.
      sql/set_var.cc:
        Removing code that prevents changing binlog format when NDB is active.
      sql/share/errmsg.txt:
        Adding error messages for when row- and/or statement-based logging
        formats cannot be used.
      sql/sql_base.cc:
        Adding business logic in lock_tables() to decide when an error should
        be thrown because logging is not possible.
        Add logic to switch to row format when that is allowed and needed.
        ---
        Binlog flags should only be checked for real tables that are opened for
        writing. Adding code to check that.
      storage/archive/ha_archive.h:
        Adding row- and statement-logging capabilities to engine.
      storage/blackhole/ha_blackhole.h:
        Blackhole can handle statement-format only.
      storage/csv/ha_tina.h:
        Adding row- and statement-logging capabilities to engine.
      storage/example/ha_example.h:
        For the example engine, we arbitrarily decided that it only can handle
        row format.
      storage/federated/ha_federated.h:
        Adding row- and statement-logging capabilities to engine.
      storage/heap/ha_heap.h:
        Heap can handle both row- and statement-based logging format.
      storage/myisam/ha_myisam.cc:
        MyISAM can handle both row- and statement-based logging format.
      storage/myisammrg/ha_myisammrg.h:
        MyISAM can handle both row- and statement-based logging format.
      mysql-test/r/binlog_multi_engine.result:
        New BitKeeper file ``mysql-test/r/binlog_multi_engine.result''
      mysql-test/t/binlog_multi_engine.test:
        New BitKeeper file ``mysql-test/t/binlog_multi_engine.test''
      098e15c1
  31. 14 May, 2007 1 commit
    • unknown's avatar
      WL#3339 (Issue warnings when statement-based replication may fail): · 499a8ecd
      unknown authored
      Replacing binlog_row_based_if_mixed with variable binlog_stmt_flags
      holding several flags and adding member functions to manipulate the
      flags.
      
      Added code to generate a warning when an attempt to log an unsafe
      statement to the binary log was made. The warning is both pushed to the
      SHOW WARNINGS table and written to the error log. The prevent flooding
      the error log, the warning is just written to the error log once per
      open session.
      
      
      sql/item_create.cc:
        Using {is,set,clear}_stmt_unsafe() member functions instead of
        binlog_row_based_if_mixed member variable.
      sql/sp_head.cc:
        Using {is,set,clear}_stmt_unsafe() member functions instead of
        binlog_row_based_if_mixed member variable.
      sql/sp_head.h:
        Using {is,set,clear}_stmt_unsafe() member functions instead of
        binlog_row_based_if_mixed member variable.
      sql/sql_base.cc:
        Using {is,set,clear}_stmt_unsafe() member functions instead of
        binlog_row_based_if_mixed member variable.
      sql/sql_class.cc:
        Adding THD::binlog_flags to store thread-specific binary log state.
        Adding code to push a warning and write an entry into the error log
        when an attempt is made to log an unsafe statement.
      sql/sql_class.h:
        Adding THD::binlog_flags to store thread-specific binary log state.
        Adding BINLOG_FLAG_UNSAFE_STMT_PRINTED to denote that a warning for
        an unsafe statement has already been generated for this thread.
      sql/sql_insert.cc:
        Using {is,set,clear}_stmt_unsafe() member functions instead of
        binlog_row_based_if_mixed member variable.
      sql/sql_lex.cc:
        Replacing binlog_row_based_if_mixed with a variable binlog_stmt_flags
        holding several flags.
      sql/sql_lex.h:
        Replacing binlog_row_based_if_mixed with a variable binlog_stmt_flags
        holding several flags.
      sql/share/errmsg.txt:
        Adding error message to indicate that an attempt to log an unsafe
        statement was made.
      sql/sql_view.cc:
        Using {is,set,clear}_stmt_unsafe() member functions instead of
        binlog_row_based_if_mixed member variable.
      mysql-test/r/binlog_unsafe.result:
        New BitKeeper file ``mysql-test/r/binlog_unsafe.result''
      mysql-test/t/binlog_unsafe.test:
        New BitKeeper file ``mysql-test/t/binlog_unsafe.test''
      499a8ecd
  32. 19 Apr, 2007 1 commit
    • unknown's avatar
      BUG#27818 comedy of errors · c68cfa6f
      unknown authored
      sql/share/errmsg.txt:
        BUG#27818 upgrading from 5.1.16 to 5.1.17 gives wrong error message about fixing internal tables; as of 5.1.10, it is recommended to use mysql_upgrade.
      c68cfa6f
  33. 05 Apr, 2007 1 commit
    • unknown's avatar
      A set of changes aiming to make the Event Scheduler more user-friendly · fa1d637e
      unknown authored
      when there are no up-to-date system tables to support it:
       - initialize the scheduler before reporting "Ready for connections".
         This ensures that warnings, if any, are printed before "Ready for
         connections", and this message is not mangled.
       - do not abort the scheduler if there are no system tables
       - check the tables once at start up, remember the status and disable
         the scheduler if the tables are not up to date.
         If one attempts to use the scheduler with bad tables,
         issue an error message.
       - clean up the behaviour of the module under LOCK TABLES and pre-locking
         mode
       - make sure implicit commit of Events DDL works as expected.
       - add more tests
      
      
      Collateral clean ups in the events code.
      
      This patch fixes Bug#23631 Events: SHOW VARIABLES doesn't work 
      when mysql.event is damaged
      
      
      mysql-test/r/events.result:
        Update results.
      mysql-test/r/events_bugs.result:
        Update results.
      mysql-test/r/events_restart_phase1.result:
        Update results.
      mysql-test/r/events_restart_phase2.result:
        Update results.
      mysql-test/r/events_restart_phase3.result:
        Update results.
      mysql-test/r/events_scheduling.result:
        Update results.
      mysql-test/r/events_time_zone.result:
        Update results.
      mysql-test/t/events.test:
        Add new tests for tampering with mysql.event and some more
        tests for sub-statements, LOCK TABLES mode and pre-locking.
      mysql-test/t/events_bugs.test:
        Move the non-concurrent part of test for Bug 16420 to this file.
      mysql-test/t/events_restart_phase1.test:
        Rewrite events_restart_* tests to take into account that now
        we check mysql.event table only once, at server startup.
      mysql-test/t/events_restart_phase2.test:
        Rewrite events_restart_* tests to take into account that now
        we check mysql.event table only once, at server startup.
      mysql-test/t/events_restart_phase3.test:
        Rewrite events_restart_* tests to take into account that now
        we check mysql.event table only once, at server startup.
      mysql-test/t/events_scheduling.test:
        Add more coverage for event_scheduler global variable.
      mysql-test/t/events_time_zone.test:
        Move the non-concurrent part of the tests for Bug 16420 to 
        events_bugs.test
      sql/event_data_objects.cc:
        Move update_timing_fields functionality to Event_db_repository.
        Make loading of events from a table record more robust to tampering
        with the table - now we do not check mysql.event on every table open.
      sql/event_data_objects.h:
        Cleanup.
      sql/event_db_repository.cc:
        Now Event_db_repository is responsible for table I/O only.
        All the logic of events DDL is handled outside, in Events class please
        refer to the added test coverage to see how this change affected
        the behavior of Event Scheduler.
        Dependency on sp_head.h and sp.h removed.
        Make this module robust to tweaks with mysql.event table.
        Move check_system_tables from events.cc to this file
      sql/event_db_repository.h:
        Cleanup declarations (remove unused ones, change return type to bool
        from int).
      sql/event_queue.cc:
        Update to adapt to the new start up scheme of the Event Scheduler.
      sql/event_queue.h:
        Cleanup declarations.
      sql/event_scheduler.cc:
        Make all the error messages uniform:
        [SEVERITY] Event Scheduler: [user][schema.event] message
        Using append_identifier for error logging was an overkill - we may 
        need it only if the system character set may have NUL (null character)
        as part of a valid identifier, this is currently never the case, 
        whereas additional quoting did not look nice in the log.
      sql/event_scheduler.h:
        Cleanup the headers.
      sql/events.cc:
        Use a different start up procedure of Event Scheduler:
        - at start up, try to check the system tables first.
        If they are not up-to-date, disable the scheduler.
        - try to load all the active events. In case of a load error, abort
        start up.
        - do not parse an event on start up. Parsing only gives some information
        about event validity, but far not all.
        Consolidate the business logic of Events DDL in this module.
        Now opt_event_scheduler may change after start up and thus is protected
        by LOCK_event_metadata mutex.
      sql/events.h:
        Use all-static-data-members approach to implement Singleton pattern.
      sql/mysqld.cc:
        New invocation scheme of Events. Move some logic to events.cc.
        Initialize the scheduler before reporting "Ready for connections".
      sql/set_var.cc:
        Clean up sys_var_thd_sql_mode::symbolic_mode_representation
        to work with a LEX_STRING.
        Move more logic related to @@events_scheduler global variable to Events
        module.
      sql/set_var.h:
        Update declarations.
      sql/share/errmsg.txt:
        If someone tampered with mysql.event table after the server has
        started we no longer give him/her a complete report what was actually 
        broken. Do not send the user to look at the error log in such case,
        as there is nothing there (check_table_intact is not executed).
      sql/sp_head.cc:
        Update to a new declaration of 
        sys_var_thd_sql_mode::symbolic_mode_representation
      sql/sql_db.cc:
        New invocation scheme of Events module.
      sql/sql_parse.cc:
        Move more logic to Events module. Make sure that we are consistent
        in the way access rights are checked for Events DDL: always
        after committing the current transaction and checking the system tables.
      sql/sql_show.cc:
        Update to the new declarations of 
        sys_var_thd_sql_mode::symbolic_mode_representation
      sql/sql_test.cc:
        New invocation scheme of events.
      sql/table.cc:
        mysql.event is a system table.
        Update check_table_intact to be concurrent, more verbose, and less smart.
      sql/table.h:
        Add a helper method.
      mysql-test/r/events_trans.result:
        New BitKeeper file ``mysql-test/r/events_trans.result''
      mysql-test/t/events_trans.test:
        New BitKeeper file ``mysql-test/t/events_trans.test'':
        test cases for Event Scheduler that require a transactional
        storage engine.
      fa1d637e
  34. 04 Apr, 2007 1 commit
    • unknown's avatar
      Bug #23675 Partitions: possible security breach via alter · 93e11dce
      unknown authored
      now we return different error message if user doesn't have
      SELECT grants
      
      
      mysql-test/r/partition_grant.result:
        test result
      mysql-test/t/partition_grant.test:
        testcase
      sql/mysql_priv.h:
        no_errors parameter added to check_single_table_access()
      sql/partition_info.cc:
        access rights control added to the print_no_partition()
      sql/share/errmsg.txt:
        message added
      sql/sql_base.cc:
        no_errors parameter added to check_single_table_access()
      sql/sql_parse.cc:
        no_errors parameter added to check_single_table_access()
      93e11dce
  35. 03 Apr, 2007 1 commit
    • unknown's avatar
      Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte · fe074a72
      unknown authored
      client/mysqldump.c:
        fixed typo
      include/mysql_com.h:
        added new constants SYSTEM_CHARSET_MBMAXLEN, NAME_CHAR_LEN, USERNAME_CHAR_LENGTH
        increased NAME_LEN, USERNAME_LENGTH
      mysql-test/r/create.result:
        result fix
      mysql-test/r/grant.result:
        result fix
      mysql-test/r/mysql.result:
        result fix
      mysql-test/r/sp.result:
        result fix
      mysql-test/t/create.test:
        test case
      mysql-test/t/grant.test:
        test case
      sql/events.cc:
        NAME_LEN is replaced with NAME_CHAR_LEN
      sql/item_strfunc.h:
        fixed calculation of max_length
      sql/mysql_priv.h:
        check_string_length function is replaced with check_string_byte_length
        added new function check_string_char_length
      sql/sp.cc:
        NAME_LEN is replaced with NAME_CHAR_LEN
      sql/sp_head.cc:
        NAME_LEN is replaced with NAME_CHAR_LEN
      sql/sp_head.h:
        changed parameter of 'check_routine_name' function
      sql/sql_class.cc:
        NAME_LEN is replaced with NAME_CHAR_LEN
      sql/share/errmsg.txt:
        increased argument lengths according to new constants
      sql/sql_parse.cc:
        removed unnecessary checks
        added function 'check_string_char_length'
      sql/sql_plugin.cc:
        check that name is not longer than NAME_CHAR_LEN symbols
      sql/sql_show.cc:
        NAME_LEN is replaced with NAME_CHAR_LEN
      sql/sql_table.cc:
        check that key name is not longer than NAME_LEN symbols
      sql/sql_udf.cc:
        check that udf name is not longer than NAME_CHAR_LEN symbols
      sql/sql_yacc.yy:
        check that user name is not longer than USERNAME_CHAR_LENGTH symbols
      sql/table.cc:
        check that db or table or column name is not longer than NAME_LEN symbols
      storage/innobase/handler/ha_innodb.cc:
        removed unnecessary multiplication
      tests/mysql_client_test.c:
        NAME_LEN is replaced with NAME_CHAR_LEN
      fe074a72
  36. 29 Mar, 2007 1 commit
    • unknown's avatar
      WL#3464: Add replication event to denote gap in replication · adaf162b
      unknown authored
      Adding an event that can be used to denote that an incident occured
      on the master. The event can be used to denote a gap in the replication
      stream, but can also be used to denote other incidents.
      
      In addition, the injector interface is extended with functions to
      generate an incident event. The function will also rotate the binary
      log after generating an incident event to get a fresh binary log.
      
      
      client/Makefile.am:
        Adding file rpl_constants.h with constants for replication.
      mysql-test/extra/binlog_tests/binlog.test:
        Binlog position change
      mysql-test/extra/binlog_tests/binlog_insert_delayed.test:
        Binlog position change
      mysql-test/extra/binlog_tests/ctype_cp932_binlog.test:
        Binlog position change
      mysql-test/extra/binlog_tests/ctype_ucs_binlog.test:
        Binlog position change
      mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
        Binlog position change
      mysql-test/extra/rpl_tests/rpl_deadlock.test:
        Binlog position change
      mysql-test/extra/rpl_tests/rpl_log.test:
        Binlog position change
      mysql-test/extra/rpl_tests/rpl_multi_query.test:
        Binlog position change
      mysql-test/extra/rpl_tests/rpl_row_charset.test:
        Binlog position change
      mysql-test/extra/rpl_tests/rpl_row_sp002.test:
        Binlog position change
      mysql-test/extra/rpl_tests/rpl_row_sp003.test:
        Binlog position change
      mysql-test/extra/rpl_tests/rpl_stm_charset.test:
        Binlog position change
      mysql-test/include/show_binlog_events.inc:
        Binlog position change
      mysql-test/r/binlog_row_binlog.result:
        Result change
      mysql-test/r/binlog_row_ctype_ucs.result:
        Result change
      mysql-test/r/binlog_row_insert_select.result:
        Result change
      mysql-test/r/binlog_row_mix_innodb_myisam.result:
        Result change
      mysql-test/r/binlog_stm_binlog.result:
        Result change
      mysql-test/r/binlog_stm_ctype_ucs.result:
        Result change
      mysql-test/r/binlog_stm_insert_select.result:
        Result change
      mysql-test/r/binlog_stm_mix_innodb_myisam.result:
        Result change
      mysql-test/r/ctype_cp932_binlog_row.result:
        Result change
      mysql-test/r/ctype_cp932_binlog_stm.result:
        Result change
      mysql-test/r/flush_block_commit_notembedded.result:
        Result change
      mysql-test/r/rpl_000015.result:
        Result change
      mysql-test/r/rpl_change_master.result:
        Result change
      mysql-test/r/rpl_deadlock_innodb.result:
        Result change
      mysql-test/r/rpl_flushlog_loop.result:
        Result change
      mysql-test/r/rpl_loaddata.result:
        Result change
      mysql-test/r/rpl_loaddata_s.result:
        Result change
      mysql-test/r/rpl_log_pos.result:
        Result change
      mysql-test/r/rpl_ndb_charset.result:
        Result change
      mysql-test/r/rpl_ndb_log.result:
        Result change
      mysql-test/r/rpl_ndb_multi.result:
        Result change
      mysql-test/r/rpl_rbr_to_sbr.result:
        Result change
      mysql-test/r/rpl_rotate_logs.result:
        Result change
      mysql-test/r/rpl_row_basic_11bugs.result:
        Result change
      mysql-test/r/rpl_row_charset.result:
        Result change
      mysql-test/r/rpl_row_create_table.result:
        Result change
      mysql-test/r/rpl_row_delayed_ins.result:
        Result change
      mysql-test/r/rpl_row_drop.result:
        Result change
      mysql-test/r/rpl_row_flsh_tbls.result:
        Result change
      mysql-test/r/rpl_row_inexist_tbl.result:
        Result change
      mysql-test/r/rpl_row_log.result:
        Result change
      mysql-test/r/rpl_row_log_innodb.result:
        Result change
      mysql-test/r/rpl_row_max_relay_size.result:
        Result change
      mysql-test/r/rpl_row_reset_slave.result:
        Result change
      mysql-test/r/rpl_row_until.result:
        Result change
      mysql-test/r/rpl_server_id1.result:
        Result change
      mysql-test/r/rpl_server_id2.result:
        Result change
      mysql-test/r/rpl_sp.result:
        Result change
      mysql-test/r/rpl_stm_charset.result:
        Result change
      mysql-test/r/rpl_stm_flsh_tbls.result:
        Result change
      mysql-test/r/rpl_stm_log.result:
        Result change
      mysql-test/r/rpl_stm_max_relay_size.result:
        Result change
      mysql-test/r/rpl_stm_multi_query.result:
        Result change
      mysql-test/r/rpl_stm_reset_slave.result:
        Result change
      mysql-test/r/rpl_stm_until.result:
        Result change
      mysql-test/r/rpl_switch_stm_row_mixed.result:
        Result change
      mysql-test/r/rpl_truncate_2myisam.result:
        Result change
      mysql-test/r/rpl_truncate_3innodb.result:
        Result change
      mysql-test/r/rpl_truncate_7ndb.result:
        Result change
      mysql-test/r/user_var-binlog.result:
        Result change
      mysql-test/t/binlog_row_mix_innodb_myisam.test:
        Binlog position change
      mysql-test/t/binlog_stm_mix_innodb_myisam.test:
        Binlog position change
      mysql-test/t/ctype_cp932_binlog_stm.test:
        Binlog position change
      mysql-test/t/mysqlbinlog.test:
        Binlog position change
      mysql-test/t/mysqlbinlog2.test:
        Binlog position change
      mysql-test/t/rpl_loaddata_s.test:
        Binlog position change
      mysql-test/t/rpl_log_pos.test:
        Binlog position change
      mysql-test/t/rpl_row_basic_11bugs.test:
        Binlog position change
      mysql-test/t/rpl_row_create_table.test:
        Binlog position change
      mysql-test/t/rpl_row_flsh_tbls.test:
        Binlog position change
      mysql-test/t/rpl_row_mysqlbinlog.test:
        Binlog position change
      mysql-test/t/rpl_sp.test:
        Binlog position change
      mysql-test/t/rpl_stm_flsh_tbls.test:
        Binlog position change
      mysql-test/t/rpl_switch_stm_row_mixed.test:
        Binlog position change
      mysql-test/t/user_var-binlog.test:
        Binlog position change
      sql/Makefile.am:
        Adding file rpl_constants.h with constants for replication.
      sql/log_event.cc:
        Changing prototype for read_str() to be const-correct and changing code to match that.
        Adding incident log event.
      sql/log_event.h:
        Adding incident log event.
      sql/rpl_injector.cc:
        Adding support for generating incidents into the binary log.
      sql/rpl_injector.h:
        Adding support for generating incidents into the binary log.
      sql/share/errmsg.txt:
        Adding new error message to indicate an incident.
      sql/sql_parse.cc:
        Adding code to generate an incident log event just before executing a REPLACE
        if the variable "incident_database_resync_on_replace" is set.
      mysql-test/r/rpl_incident.result:
        New BitKeeper file ``mysql-test/r/rpl_incident.result''
      mysql-test/t/rpl_incident.test:
        New BitKeeper file ``mysql-test/t/rpl_incident.test''
      sql/rpl_constants.h:
        New BitKeeper file ``sql/rpl_constants.h''
      adaf162b
  37. 27 Mar, 2007 1 commit
    • unknown's avatar
      Fix spelling (recursivity -> recursion) · fce72805
      unknown authored
      mysql-test/r/events.result:
        Fix spelling.
      mysql-test/r/events_bugs.result:
        Fix spelling.
      mysql-test/r/ps.result:
        Fix spelling.
      mysql-test/t/events.test:
        Fix spelling.
      mysql-test/t/events_bugs.test:
        Fix spelling.
      mysql-test/t/ps.test:
        Fix spelling.
      sql/sql_yacc.yy:
        Fix spelling.
      sql/share/errmsg.txt:
        Fix spelling.
      fce72805
  38. 23 Mar, 2007 1 commit
    • unknown's avatar
      Change module prefix in error messages: SCHEDULER -> Event Scheduler, · b2d3ddde
      unknown authored
      to not collide with the recently introduced thread scheduler module.
      
      
      mysql-test/r/events.result:
        Update test results with new error texts (SCHEDULER -> Event Scheduler,
        grammar).
      sql/event_data_objects.cc:
        SCHEDULER -> Event Scheduler.
      sql/event_queue.cc:
        SCHEDULER -> Event Scheduler.
      sql/event_scheduler.cc:
        SCHEDULER -> Event Scheduler.
      sql/events.cc:
        SCHEDULER -> Event Scheduler.
      sql/share/errmsg.txt:
        SCHEDULER -> Event Scheduler. Fix English grammar.
      b2d3ddde