An error occurred fetching the project authors.
  1. 12 Jul, 2011 1 commit
    • Tatjana Azundris Nuernberg's avatar
      Bug#11758414/Bug#50614: Default storage_engine not honored when set from within a stored procedure · 083a316d
      Tatjana Azundris Nuernberg authored
      When CREATE TABLE wasn't given ENGINE=... it would determine
      the default ENGINE at parse-time rather than at execution
      time, leading to incorrect behaviour (namely, later changes
      to the default engine being ignore) when calling CREATE TABLE
      from a stored procedure.
      
      We now defer working out the default engine till execution of
      CREATE TABLE.
      
      
      mysql-test/r/sp_trans.result:
        results!
      mysql-test/t/sp_trans.test:
        Show that CREATE TABLE (called from store routine) heeds
        any changes after CREATE SP / parse-time. Show that explicitly
        requesting an ENGINE still works.
      sql/sql_parse.cc:
        If no ENGINE=... was given at parse-time, determine default
        engine at execution time of CREATE TABLE.
      sql/sql_yacc.yy:
        If CREATE TABLE is not given ENGINE=..., don't bother
        figuring out the default engine during parsing; we'll
        do it at execution time instead to be aware of the
        latest updates.
      083a316d
  2. 30 Jun, 2011 1 commit
  3. 09 Jun, 2011 1 commit
    • Dmitry Shulga's avatar
      Fixed bug#11764334 (formerly bug#57156): ALTER EVENT CHANGES · fa913a0b
      Dmitry Shulga authored
      THE EVENT STATUS.
      
      Any ALTER EVENT statement on a disabled event enabled it back
      (unless this ALTER EVENT statement explicitly disabled the event).
      
      The problem was that during processing of an ALTER EVENT statement
      value of status field was overwritten unconditionally even if new
      value was not specified explicitly. As a consequence this field
      was set to default value for status which corresponds to ENABLE.
      
      The solution is to check if status field was explicitly specified in
      ALTER EVENT statement before assigning new value to status field.
      
      mysql-test/r/events_bugs.result:
        test's result for Bug#11764334 was added.
      mysql-test/t/events_bugs.test:
        new test for Bug#11764334 was added.
      sql/event_db_repository.cc:
        mysql_event_fill_row() was modified: set value for status field
        in events tables only in case if statement CREATE EVENT
        is being processed or if this value was set in ALTER EVENT
        statement.
        Event_db_repository::create_event was modified: removed redundant
        setting of status field after return from call to mysql_event_fill_row().
      sql/event_parse_data.h:
        Event_parse_data structure was modified: added flag
        status_changed that is set to true if status's value
        was changed in ALTER EVENT statement.
      sql/sql_yacc.yy:
        Set flag status_changed if status was set in ALTER EVENT
        statement.
      fa913a0b
  4. 13 Oct, 2010 1 commit
  5. 30 Aug, 2010 1 commit
    • Gleb Shchepa's avatar
      Bug #53034: Multiple-table DELETE statements not accepting · ccab4d87
      Gleb Shchepa authored
                  "Access compatibility" syntax
      
      The "wild" "DELETE FROM table_name.* ... USING ..." syntax
      for multi-table DELETE statements is documented but it was
      lost in the fix for the bug 30234.
      
      The table_ident_opt_wild parser rule has been added
      to restore the lost syntax.
      
      
      mysql-test/r/delete.result:
        Test case for bug #53034.
      mysql-test/t/delete.test:
        Test case for bug #53034.
      sql/sql_yacc.yy:
        Bug #53034: Multiple-table DELETE statements not accepting
                    "Access compatibility" syntax
        
        The table_ident_opt_wild parser rule has been added
        to restore the lost syntax.
        Note: simple extending of table_ident with opt_wild in
        the table_alias_ref rule is not acceptable, because
        a) it adds one conflict more and b) this conflict resolves
        in the inappropriate way.
      ccab4d87
  6. 18 Aug, 2010 1 commit
    • unknown's avatar
      WL#5370 Keep forward-compatibility when changing · 9d681150
      unknown authored
              'CREATE TABLE IF NOT EXISTS ... SELECT' behaviour
      BUG#55474, BUG#55499, BUG#55598, BUG#55616 and BUG#55777 are fixed
      in this patch too.
      
      This is the 5.1 part.
      It implements:
      - if the table exists, binlog two events: CREATE TABLE IF NOT EXISTS
        and INSERT ... SELECT
      
      - Insert nothing and binlog nothing on master if the existing object
        is a view. It only generates a warning that table already exists.
      
      
      mysql-test/r/trigger.result:
        Ather this patch, 'CREATE TABLE IF NOT EXISTS ... SELECT' will not
        insert anything if the creating table already exists and is a view.
      sql/sql_class.h:
        Declare virtual function write_to_binlog() for select_insert.
        It's used to binlog 'create select'
      sql/sql_insert.cc:
        Implement write_to_binlog();
        Use write_to_binlog() instead of binlog_query() to binlog the statement.
        if the table exists, binlog two events: CREATE TABLE IF NOT EXISTS
        and INSERT ... SELECT
      sql/sql_lex.h:
        Declare create_select_start_with_brace and create_select_pos.
        They are helpful for binlogging 'create select'
      sql/sql_parse.cc:
        Do nothing on master if the existing object is a view.
      sql/sql_yacc.yy:
        Record the relative postion of 'SELECT' in the 'CREATE ...SELECT' statement.
        Record whether there is a '(' before the 'SELECT' clause.
      9d681150
  7. 23 Jun, 2010 1 commit
    • sunanda's avatar
      Backport into build-201006221614-5.1.46sp1 · c658c3ed
      sunanda authored
      > ------------------------------------------------------------
      > revno: 3367 [merge]
      > revision-id: joro@sun.com-20100504140328-srxf3c088j2twnq6
      > parent: kristofer.pettersson@sun.com-20100503172109-f9hracq5pqsaomb1
      > parent: joro@sun.com-20100503151651-nakknn8amrapmdp7
      > committer: Georgi Kodinov <joro@sun.com>
      > branch nick: B53371-5.1-bugteam
      > timestamp: Tue 2010-05-04 17:03:28 +0300
      > message:
      >   Bug #53371: COM_FIELD_LIST can be abused to bypass table level grants.
      >   
      >   This is the 5.1 merge and extension of the fix.
      >   The server was happily accepting paths in table name in all places a table
      >   name is accepted (e.g. a SELECT). This allowed all users that have some 
      >   privilege over some database to read all tables in all databases in all
      >   mysql server instances that the server file system has access to.
      >   Fixed by :
      >   1. making sure no path elements are allowed in quoted table name when
      >   constructing the path (note that the path symbols are still valid in table names
      >   when they're properly escaped by the server).
      >   2. checking the #mysql50# prefixed names the same way they're checked for
      >   path elements in mysql-5.0.
      > ------------------------------------------------------------
      > Use --include-merges or -n0 to see merged revisions.
      c658c3ed
  8. 10 Jun, 2010 1 commit
    • Davi Arnaut's avatar
      Bug#42733: Type-punning warnings when compiling MySQL -- · 0f9ddfa9
      Davi Arnaut authored
                  strict aliasing violations.
      
      One somewhat major source of strict-aliasing violations and
      related warnings is the SQL_LIST structure. For example,
      consider its member function `link_in_list` which takes
      a pointer to pointer of type T (any type) as a pointer to
      pointer to unsigned char. Dereferencing this pointer, which
      is done to reset the next field, violates strict-aliasing
      rules and might cause problems for surrounding code that
      uses the next field of the object being added to the list.
      
      The solution is to use templates to parametrize the SQL_LIST
      structure in order to deference the pointers with compatible
      types. As a side bonus, it becomes possible to remove quite
      a few casts related to acessing data members of SQL_LIST.
      
      sql/handler.h:
        Use the appropriate template type argument.
      sql/item.cc:
        Remove now-unnecessary cast.
      sql/item_subselect.cc:
        Remove now-unnecessary casts.
      sql/item_sum.cc:
        Use the appropriate template type argument.
        Remove now-unnecessary cast.
      sql/mysql_priv.h:
        Move SQL_LIST structure to sql_list.h
        Use the appropriate template type argument.
      sql/sp.cc:
        Remove now-unnecessary casts.
      sql/sql_delete.cc:
        Use the appropriate template type argument.
        Remove now-unnecessary casts.
      sql/sql_derived.cc:
        Remove now-unnecessary casts.
      sql/sql_lex.cc:
        Remove now-unnecessary casts.
      sql/sql_lex.h:
        SQL_LIST now takes a template type argument which must
        match the type of the elements of the list. Use forward
        declaration when the type is not available, it is used
        in pointers anyway.
      sql/sql_list.h:
        Rename SQL_LIST to SQL_I_List. The template parameter is
        the type of object that is stored in the list.
      sql/sql_olap.cc:
        Remove now-unnecessary casts.
      sql/sql_parse.cc:
        Remove now-unnecessary casts.
      sql/sql_prepare.cc:
        Remove now-unnecessary casts.
      sql/sql_select.cc:
        Remove now-unnecessary casts.
      sql/sql_show.cc:
        Remove now-unnecessary casts.
      sql/sql_table.cc:
        Remove now-unnecessary casts.
      sql/sql_trigger.cc:
        Remove now-unnecessary casts.
      sql/sql_union.cc:
        Remove now-unnecessary casts.
      sql/sql_update.cc:
        Remove now-unnecessary casts.
      sql/sql_view.cc:
        Remove now-unnecessary casts.
      sql/sql_yacc.yy:
        Remove now-unnecessary casts.
      storage/myisammrg/ha_myisammrg.cc:
        Remove now-unnecessary casts.
      0f9ddfa9
  9. 14 Mar, 2010 1 commit
    • Staale Smedseng's avatar
      Bug #49829 Many "hides virtual function" warnings with · c7fad393
      Staale Smedseng authored
      SunStudio
            
      SunStudio compilers of late warn about methods that might hide
      methods in base classes due to the use of overloading combined
      with overriding. SunStudio also warns about variables defined
      in local socpe or method arguments that have the same name as
      a member attribute of the class.
            
      This patch renames methods that might hide base class methods,
      to make it easier both for humans and compilers to see what is
      actually called. It also renames variables in local scope.
      
      
      sql/field.cc:
        Local scope variable or method argument same as class 
        attribute.
      sql/item_cmpfunc.cc:
        Local scope variable or method argument same as class 
        attribute.
      sql/item_create.cc:
        Renaming base class create() to create_func().
      sql/item_create.h:
        Renaming base class create() to create_func().
      sql/protocol.cc:
        Local scope variable or method argument same as class 
        attribute.
      sql/sql_profile.cc:
        Local scope variable or method argument same as class 
        attribute.
      sql/sql_select.cc:
        Local scope variable or method argument same as class 
        attribute.
      sql/sql_yacc.yy:
        Renaming base class create() to create_func().
      storage/federated/ha_federated.cc:
        Local scope variable or method argument same as class 
        attribute.
      storage/myisammrg/ha_myisammrg.cc:
        Local scope variable or method argument same as class 
        attribute.
      c7fad393
  10. 23 Feb, 2010 1 commit
    • Magne Mahre's avatar
      Revert of a change introduced by Bug#47974 · 710d5710
      Magne Mahre authored
      "TYPE=storage_engine" is deprecated, and will be removed
      in the Celosia release of MySQL.  Since the option is
      present in the Betony release and the version number of
      Celosia is still not decided, we need to bump the
      deprecation version number back up to "6.0".
      710d5710
  11. 09 Feb, 2010 1 commit
    • Magne Mahre's avatar
      Bug#47974 'TYPE=storage_engine' is deprecated and will be · e0fb0d9d
      Magne Mahre authored
                removed in MySQL 6.0
      
      CREATE TABLE... TYPE= returns the warning "The syntax 
      'TYPE=storage_engine' is deprecated and will be removed in 
      MySQL 6.0. Please use 'ENGINE=storage_engine' instead" 
      
      This syntax is deprecated already from version 5.4.4, so
      the message has been changed.
      
      In addition, the deprecation macro was changed to reflect
      the ServerPT decision not to include version number in the
      warning message.
      
      A number of test result files have been changed as a
      consequence of the change in the deprecation macro.
      e0fb0d9d
  12. 03 Feb, 2010 2 commits
    • MySQL Build Team's avatar
      Backport into build-201002030816-5.0.87sp1 · ce730c3d
      MySQL Build Team authored
      > ------------------------------------------------------------
      > revno: 2818.1.48
      > revision-id: joro@sun.com-20091210092838-zbz9ugqay1tn7rxm
      > parent: joro@sun.com-20091207143856-ojmmqr0bm1haxvca
      > committer: Georgi Kodinov <joro@sun.com>
      > branch nick: B49250-5.0-bugteaam
      > timestamp: Thu 2009-12-10 11:28:38 +0200
      > message:
      >   Bug #49250 : spatial btree index corruption and crash
      >   
      >   SPATIAL and FULLTEXT indexes don't support algorithm
      >   selection. 
      >   Disabled by creating a special grammar rule for these
      >   in the parser.
      >   Added some encasulation of duplicate parser code.
      ce730c3d
    • MySQL Build Team's avatar
      Backport into build-201002030816-5.0.87sp1 · 209a75c0
      MySQL Build Team authored
      > ------------------------------------------------------------
      > revno: 2818.1.12
      > revision-id: joro@sun.com-20091030094044-quadg0bwjy7cwqzw
      > parent: joro@sun.com-20091029152429-ks55fhrp4lhknyij
      > committer: Georgi Kodinov <joro@sun.com>
      > branch nick: B48293-5.0-bugteam
      > timestamp: Fri 2009-10-30 11:40:44 +0200
      > message:
      >   Bug #48293: crash with procedure analyse, view with > 10 columns,
      >   having clause...
      >   
      >   The fix for bug 46184 was not very complete. It was not covering
      >   views using temporary tables and multiple tables in a FROM clause.
      >   Fixed by reverting the fix for 46184 and making a more general
      >   check that is checking at the right execution stage and for all
      >   of the non-supported cases.
      >   Now PROCEDURE ANALYZE on non-top level SELECT is also forbidden.
      >   Updated the analyse.test and subselect.test accordingly.
      209a75c0
  13. 30 Jan, 2010 1 commit
    • unknown's avatar
      Bug #48321 CURRENT_USER() incorrectly replicated for DROP/RENAME USER; · d9e9a73e
      unknown authored
                  REVOKE/GRANT; ALTER EVENT.
      
      The following statements support the CURRENT_USER() where a user is needed.
        DROP USER 
        RENAME USER CURRENT_USER() ...
        GRANT ... TO CURRENT_USER()
        REVOKE ... FROM CURRENT_USER()
        ALTER DEFINER = CURRENT_USER() EVENT
      but, When these statements are binlogged, CURRENT_USER() just is binlogged
      as 'CURRENT_USER()', it is not expanded to the real user name. When slave 
      executes the log event, 'CURRENT_USER()' is expand to the user of slave 
      SQL thread, but SQL thread's user name always NULL. This breaks the replication.
      
      After this patch, All above statements are rewritten when they are binlogged.
      The CURRENT_USER() is expanded to the real user's name and host.
      d9e9a73e
  14. 02 Feb, 2010 1 commit
    • Alexander Nozdrin's avatar
      Revert a patch for Bug#48231, which introduced valgrind warnings. · 59f1be1b
      Alexander Nozdrin authored
      Original revision:
      ------------------------------------------------------------
      revision-id: li-bing.song@sun.com-20100130124925-o6sfex42b6noyc6x
      parent: joro@sun.com-20100129145427-0n79l9hnk0q43ajk
      committer: <Li-Bing.Song@sun.com>
      branch nick: mysql-5.1-bugteam
      timestamp: Sat 2010-01-30 20:49:25 +0800
      message:
        Bug #48321  CURRENT_USER() incorrectly replicated for DROP/RENAME USER;
                    REVOKE/GRANT; ALTER EVENT.
        
        The following statements support the CURRENT_USER() where a user is needed.
          DROP USER 
          RENAME USER CURRENT_USER() ...
          GRANT ... TO CURRENT_USER()
          REVOKE ... FROM CURRENT_USER()
          ALTER DEFINER = CURRENT_USER() EVENT
        but, When these statements are binlogged, CURRENT_USER() just is binlogged
        as 'CURRENT_USER()', it is not expanded to the real user name. When slave 
        executes the log event, 'CURRENT_USER()' is expand to the user of slave 
        SQL thread, but SQL thread's user name always NULL. This breaks the replication.
        
        After this patch, All above statements are rewritten when they are binlogged.
        The CURRENT_USER() is expanded to the real user's name and host.
      ------------------------------------------------------------
      59f1be1b
  15. 21 Jan, 2010 1 commit
    • Magne Mahre's avatar
      WL#5154 Remove deprecated 4.1 features · 132b46e9
      Magne Mahre authored
      Several items said to be deprecated in the 4.1 manual
      have never been removed.  This worklog adds deprecation
      warnings when these items are used, and warns the user 
      that the items will be removed in MySQL 5.6.
      
      A couple of previously deprecation decision have been
      reversed (see single file comments)
      
      
      
      client/client_priv.h:
        Macro similar to the one in the server (mysql_priv.h)
        for printing a deprecation warning message
      client/mysql.cc:
        no-auto-rehash  will not be deprecated
        skip-line-numbers will not be deprecated
        skip-column-names will not be deprecated
        no-pager is deprecated
        set-variable is deprecated
        no-named-commands is deprecated
      client/mysqladmin.cc:
        set-variable is deprecated
      client/mysqlbinlog.cc:
        position is deprecated
      client/mysqldump.c:
        first-slave is deprecated
        no-set-names is deprecated
        set-variable is deprecated
      mysql-test/r/mysqlbinlog.result:
        Adding the [Warning] to the test case, just to show that the
        deprecation works.
        The test case will be changed in Celosia to use --start-position.
      mysys/my_getopt.c:
        set-variable (include -O) is deprecated
      scripts/mysqld_multi.sh:
        Warning for mysqld_multi
      sql/mysqld.cc:
        default-collation is deprecated
        log-bin-trust-routine-creators is deprecated
        set-variable is deprecated
        default-character-set is deprecated
        safe-show-database is deprecated
      sql/share/errmsg.txt:
        Added version number for sql_log_update deprecation message.
      132b46e9
  16. 13 Dec, 2009 1 commit
    • Alexey Kopytov's avatar
      Bug #42849: innodb crash with varying time_zone on partitioned · c08e6c88
      Alexey Kopytov authored
                  timestamp primary key 
       
      Since TIMESTAMP values are adjusted by the current time zone  
      settings in both numeric and string contexts, using any 
      expressions involving TIMESTAMP values as a  
      (sub)partitioning function leads to undeterministic behavior of  
      partitioned tables. The effect may vary depending on a storage  
      engine, it can be either incorrect data being retrieved or  
      stored, or an assertion failure. The root cause of this is the  
      fact that the calculated partition ID may differ from a  
      previously calculated ID for the same data due to timezone  
      adjustments of the partitioning expression value. 
       
      Fixed by disabling any expressions involving TIMESTAMP values  
      to be used in partitioning functions with the follwing two 
      exceptions: 
       
      1. Creating or altering into a partitioned table that violates 
      the above rule is not allowed, but opening existing such tables 
      results in a warning rather than an error so that such tables 
      could be fixed. 
       
      2. UNIX_TIMESTAMP() is the only way to get a 
      timezone-independent value from a TIMESTAMP column, because it 
      returns the internal representation (a time_t value) of a 
      TIMESTAMP argument verbatim. So UNIX_TIMESTAMP(timestamp_column)
      is allowed and should be used to fix existing tables if one 
      wants to use TIMESTAMP columns with partitioning.
      
      mysql-test/r/partition_bug18198.result:
        Corrected the error.
      mysql-test/r/partition_error.result:
        Corrected error texts.
        Added test cases for bug #42849.
      mysql-test/t/partition_bug18198.test:
        Corrected error code.
      mysql-test/t/partition_error.test:
        Corrected error codes.
        Added test cases for bug #42849.
      sql/item.h:
        Added is_timezone_dependent_processor() to Item.
      sql/item_func.h:
        Added has_timestamp_args() and the implementation of
        is_timezone_dependent_processor() for Item_func.
      sql/item_timefunc.h:
        Added is_timezone_dependent_processor() to 
        Item_func_unix_timestamp.
      sql/share/errmsg.txt:
        Renamed ER_CONST_EXPR_IN_PARTITION_FUNC_ERROR to
        ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR to better reflect the
        meaning. Adjusted the error message.
      sql/sql_partition.cc:
        Modified fix_fields_part_func() to walk through partitioning
        expression tree with is_timezone_dependent_processor() and issue
        a warning/error if it depends on the timezone settings.
        
        Changed fix_fields_part_func() to a static function since it is
        not used anywhere except sql_partition.cc
      sql/sql_partition.h:
        Removed the unneeded declaration of fix_fields_part_func()
        since it is now a static function.
      sql/sql_yacc.yy:
        ER_CONST_EXPR_IN_PARTITION_FUNC_ERROR ->
        ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR.
      c08e6c88
  17. 10 Dec, 2009 1 commit
  18. 25 Nov, 2009 1 commit
    • MySQL Build Team's avatar
      Backport into build-200911241145-5.1.40sp1 · edabd315
      MySQL Build Team authored
      > ------------------------------------------------------------
      > revno: 1810.3961.6
      > revision-id: joro@sun.com-20091030094044-quadg0bwjy7cwqzw
      > parent: joro@sun.com-20091029152429-ks55fhrp4lhknyij
      > committer: Georgi Kodinov <joro@sun.com>
      > branch nick: B48293-5.0-bugteam
      > timestamp: Fri 2009-10-30 11:40:44 +0200
      > message:
      >   Bug #48293: crash with procedure analyse, view with > 10 columns,
      >   having clause...
      >   
      >   The fix for bug 46184 was not very complete. It was not covering
      >   views using temporary tables and multiple tables in a FROM clause.
      >   Fixed by reverting the fix for 46184 and making a more general
      >   check that is checking at the right execution stage and for all
      >   of the non-supported cases.
      >   Now PROCEDURE ANALYZE on non-top level SELECT is also forbidden.
      >   Updated the analyse.test and subselect.test accordingly.
      edabd315
  19. 20 Nov, 2009 1 commit
  20. 18 Nov, 2009 1 commit
    • Sven Sandberg's avatar
      BUG#47995: Mark system functions as unsafe · 2f78abd2
      Sven Sandberg authored
      Problem: Some system functions that could return different values on
      master and slave were not marked unsafe. In particular:
       GET_LOCK
       IS_FREE_LOCK
       IS_USED_LOCK
       MASTER_POS_WAIT
       RELEASE_LOCK
       SLEEP
       SYSDATE
       VERSION
      Fix: Mark these functions unsafe.
      
      
      mysql-test/extra/rpl_tests/rpl_stm_000001.test:
        - The test does not work in mixed mode any more, since it tries to
          simulate an error in the sql thread in a query that uses get_lock.
          Since get_lock now causes the query to be logged in row format,
          the error didn't happen. Hence, we now force statement mode.
        - Warnings must be disabled when the unsafe query is issued.
        - Replaced some save_master_pos+connection slave+sync_with_master
          by sync_slave_with_master.
      mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
        updated result file
      mysql-test/suite/binlog/r/binlog_stm_row.result:
        updated result file
      mysql-test/suite/binlog/r/binlog_unsafe.result:
        updated result file
      mysql-test/suite/binlog/t/binlog_killed.test:
        binlog_killed only works in statement format now, since
        it switches to row mode in mixed mode.
      mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam.test:
        suppress warnings for unsafe statements
      mysql-test/suite/binlog/t/binlog_stm_row.test:
        - Suppress warnings in test that causes warnings.
        - The test sets binlog format explicitly, so no need to execute it
          twice.
      mysql-test/suite/binlog/t/binlog_unsafe.test:
        Added test for all unsafe system functions. This test also includes
        system functions that were unsafe prior to BUG#47995.
      mysql-test/suite/rpl/r/rpl_err_ignoredtable.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_get_lock.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_nondeterministic_functions.result:
        new result file
      mysql-test/suite/rpl/r/rpl_stm_000001.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_trigger.result:
        updated result file
      mysql-test/suite/rpl/t/rpl_err_ignoredtable.test:
        - suppress warnings for unsafe statement
        - replaced save_master_pos+connection slave+sync_with_master
          with sync_slave_with_master
      mysql-test/suite/rpl/t/rpl_get_lock.test:
        update test case that causes new warnings
      mysql-test/suite/rpl/t/rpl_nondeterministic_functions.test:
        Added new test case for nondeterministic functions.
      mysql-test/suite/rpl/t/rpl_trigger.test:
        update test case that causes new warnings
      sql/item_create.cc:
        Marked some system functions unsafe.
      sql/item_strfunc.cc:
        Clarified comment related to this bug.
      sql/sql_yacc.yy:
        Marked sysdate unsafe.
      2f78abd2
  21. 13 Nov, 2009 1 commit
    • Davi Arnaut's avatar
      Bug#47627 SET @@{global.session}.local_variable in stored routine causes crash · 356b3df7
      Davi Arnaut authored
      This patch borrows ideas, text and code from Kristofer
      Pettersson's patch.
      
      An assignment of a system variable sharing the same base
      name as a declared stored procedure variable in the same
      context could lead to a crash.
      
      The reason was that during the parsing of the syntactic
      rule 'option_value' an uninitialized set_var object was
      pushed to the parameter stack of the SET statement. The
      parent rule 'option_type_value' interpreted the existence
      of variables on the parameter stack as an assignment and
      wrapped it in a sp_instr_set object.
      
      As the procedure later was executed an attempt was made
      to run the method 'check()' on an uninitialized member
      object (NULL value) belonging to the previously created
      but uninitialized object.
      
      This patch refactors the 'internal_variable_name' rule and
      copies the semantic analysis part to the depending parent
      rule: 'option_value'. This makes it possible to account
      for any prefixes affecting the interpretation of the
      internal_variable_name.
      
      mysql-test/r/sp.result:
        Add test case result.
      mysql-test/t/sp.test:
        Add test case for bug.
      sql/sql_yacc.yy:
        - Reduce churn in rule sys_option_value by moving to
          specialized functions.
        - Comment the the lookup in the rule internel_variable_name
          is a best effort operation.
        - Lookup for a system variable in the option_value if one was
          not found (the variable could have been shadowed)
      356b3df7
  22. 30 Oct, 2009 1 commit
    • Georgi Kodinov's avatar
      Bug #48293: crash with procedure analyse, view with > 10 columns, · 851e2509
      Georgi Kodinov authored
      having clause...
      
      The fix for bug 46184 was not very complete. It was not covering
      views using temporary tables and multiple tables in a FROM clause.
      Fixed by reverting the fix for 46184 and making a more general
      check that is checking at the right execution stage and for all
      of the non-supported cases.
      Now PROCEDURE ANALYZE on non-top level SELECT is also forbidden.
      Updated the analyse.test and subselect.test accordingly.
      851e2509
  23. 23 Oct, 2009 1 commit
  24. 19 Oct, 2009 1 commit
    • Kristofer Pettersson's avatar
      Bug#47627 SET @@{global.session}.local_variable in stored routine causes crash · 834ba322
      Kristofer Pettersson authored
      Adding @@session and @@global prefixes to a
      declared variable in a stored procedure the server
      would lead to a crash.
      
      The reason was that during the parsing of the
      syntactic rule 'option_value' an uninitialized
      set_var object was pushed to the parameter stack
      of the SET statement. The parent rule
      'option_type_value'  interpreted the existence of
      variables on the parameter stack as an assignment
      and wrapped it in a sp_instr_set object.
      
      As the procedure later was executed an attempt
      was made to run the method 'check()' on an
      uninitialized member object (NULL value) belonging
      to the previously created but uninitialized object.
      
      
      sql/sql_yacc.yy:
        * Assign the option_type at once since it is needed by the next
          parsing rule (internal_variable_name)
        * Rearranged the if statement to reduce negations and gain more
          clarity of code.
        * Added check for option_type to better detect if current
          variable is a SP local variable or a system variable.
      834ba322
  25. 16 Oct, 2009 1 commit
    • Georgi Kodinov's avatar
      Bug #40877: multi statement execution fails in 5.1.30 · 7b4ef910
      Georgi Kodinov authored
            
      Implemented the server infrastructure for the fix:
      
      1. Added a function LEX_STRING *thd_query_string(THD) to return
      a LEX_STRING structure instead of char *.
      This is the function that must be called in innodb instead of 
      thd_query()
      
      2. Did some encapsulation in THD : aggregated thd_query and 
      thd_query_length into a LEX_STRING and made accessor and mutator 
      methods for easy code updating. 
      
      3. Updated the server code to use the new methods where applicable.
      7b4ef910
  26. 30 Sep, 2009 2 commits
    • Kristofer Pettersson's avatar
      Bug#34895 'show procedure status' or 'show function status' + · df2122a2
      Kristofer Pettersson authored
                'flush tables' crashes
      
      The server crashes when 'show procedure status' and 'flush tables' are
      run concurrently.
      
      This is caused by the way mysql.proc table is added twice to the list
      of table to lock although the requirements on the current locking API
      assumes differently.
      
      No test case is submitted because of the nature of the crash which is 
      currently difficult to reproduce in a deterministic way.
      
      This is a backport from 5.1
      
      myisam/mi_dbug.c:
        * check_table_is_closed is only used in EXTRA_DEBUG mode but since it is
        iterating over myisam shared data it still needs to be protected by an
        appropriate mutex.
      sql/sql_yacc.yy:
        * Since the I_S mechanism is already handling the open and close of 
        mysql.proc there is no need for the method sp_add_to_query_tables.
      df2122a2
    • MySQL Build Team's avatar
      Backport into build-200909301147-5.0.84sp1 · 31c0647f
      MySQL Build Team authored
      > ------------------------------------------------------------
      > revno: 2796
      > revision-id: sergey.glukhov@sun.com-20090827102219-sgjz0v5t1rfccs14
      > parent: joro@sun.com-20090824122803-1d5jlaysjc7a7j6q
      > committer: Sergey Glukhov <Sergey.Glukhov@sun.com>
      > branch nick: mysql-5.0-bugteam
      > timestamp: Thu 2009-08-27 15:22:19 +0500
      > message:
      >   Bug#46184 Crash, SELECT ... FROM derived table procedure analyze
      >   The crash happens because select_union object is used as result set
      >   for queries which have derived tables.
      >   select_union use temporary table as data storage and if
      >   fields count exceeds 10(count of values for procedure ANALYSE())
      >   then we get a crash on fill_record() function.
      31c0647f
  27. 29 Sep, 2009 1 commit
    • Kristofer Pettersson's avatar
      Bug#42108 Wrong locking for UPDATE with subqueries leads to broken statement · da9a5ef6
      Kristofer Pettersson authored
                replication
                    
      MySQL server uses wrong lock type (always TL_READ instead of
      TL_READ_NO_INSERT when appropriate) for tables used in
      subqueries of UPDATE statement. This leads in some cases to
      a broken replication as statements are written in the wrong
      order to the binlog.
      
      sql/sql_yacc.yy:
        * Set lock_option to either TL_READ_NO_INSERT or
          TL_READ for any sub-SELECT following UPDATE.
        * Changed line adjusted for parser identation
          rules; code begins at column 13.
      da9a5ef6
  28. 28 Sep, 2009 1 commit
    • Tatiana A. Nurnberg's avatar
      Bug#43746: YACC return wrong query string when parse 'load data infile' sql statement · 4102363f
      Tatiana A. Nurnberg authored
      "load data" statements were written to the binlog as a mix of the original statement
      and bits recreated from parse-info. This relied on implementation details and broke
      with IGNORE_SPACES and versioned comments.
      
      We now completely resynthesize the query for LOAD DATA for binlog (which among other
      things normalizes them somewhat with regard to case, spaces, etc.).
      We have already parsed the query properly, so we make use of that rather
      than mix-and-match string literals and parsed items.
      This should make us safe with regard to versioned comments, even those
      spanning multiple tokens. Also no longer affected by IGNORE_SPACES.
      
      mysql-test/r/mysqlbinlog.result:
        LOAD DATA INFILE normalized
      mysql-test/suite/binlog/r/binlog_killed_simulate.result:
        LOAD DATA INFILE normalized
      mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result:
        LOAD DATA INFILE normalized
      mysql-test/suite/binlog/r/binlog_stm_blackhole.result:
        LOAD DATA INFILE normalized
      mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
        LOAD DATA INFILE normalized
      mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
        LOAD DATA INFILE normalized
      mysql-test/suite/rpl/r/rpl_loaddata.result:
        LOAD DATA INFILE normalized
      mysql-test/suite/rpl/r/rpl_loaddata_fatal.result:
        LOAD DATA INFILE normalized; offsets adjusted to reflect that
      mysql-test/suite/rpl/r/rpl_loaddata_map.result:
        LOAD DATA INFILE normalized
      mysql-test/suite/rpl/r/rpl_loaddatalocal.result:
        test for #43746 - trying to break LOAD DATA part of parser
      mysql-test/suite/rpl/r/rpl_stm_log.result:
        LOAD DATA INFILE normalized
      mysql-test/suite/rpl/t/rpl_loaddatalocal.test:
        try to break the LOAD DATA part of the parser (test for #43746)
      mysql-test/t/mysqlbinlog.test:
        LOAD DATA INFILE normalized; adjust offsets to reflect that
      sql/log_event.cc:
        clean up Load_log_event::print_query and friends so they don't print
        excess spaces. add support for printing charset names to print_query.
      sql/log_event.h:
        We already have three places where we synthesize LOAD DATA queries.
        Better use one of those!
      sql/sql_lex.h:
        When binlogging LOAD DATA statements, we make up the statement to
        be logged (from the parse-info, rather than substrings of the
        original query) now. Consequently, we no longer need (string-)
        pointers into the original query.
      sql/sql_load.cc:
        Completely rewrote write_execute_load_query_log_event() to synthesize the
        LOAD DATA statement wholesale, rather than piece it together from
        synthesized bits and literal excerpts from the original query. This
        will not only give us a nice, normalized statement (all uppercase,
        no excess spaces, etc.), it will also handle comments, including
        versioned comments right, which is certainly more than we can say
        about the previous incarnation.
      sql/sql_yacc.yy:
        We're no longer assembling LOAD DATA statements from bodyparts of the
        original query, so some bookkeeping in the parser can go.
      4102363f
  29. 22 Sep, 2009 1 commit
    • MySQL Build Team's avatar
      Backport into build-200909221805-5.1.37sp1 · 9c9458db
      MySQL Build Team authored
      > ------------------------------------------------------------
      > revno: 3085 [merge]
      > revision-id: sergey.glukhov@sun.com-20090827105925-j56pdghdzb8nlw3p
      > parent: alfranio.correia@sun.com-20090827093227-9exafl3k6362bvq7
      > parent: sergey.glukhov@sun.com-20090827102219-sgjz0v5t1rfccs14
      > committer: Sergey Glukhov <Sergey.Glukhov@sun.com>
      > branch nick: mysql-5.1-bugteam
      > timestamp: Thu 2009-08-27 15:59:25 +0500
      > message:
      >   5.0-bugteam->5.1-bugteam merge
      > ------------------------------------------------------------
      > Use --include-merges or -n0 to see merged revisions.
      9c9458db
  30. 07 Sep, 2009 1 commit
    • Martin Hansson's avatar
      Bug#46259: 5.0.83 -> 5.1.36, query doesn't work · 2cb3a131
      Martin Hansson authored
            
      The parser rule for expressions in a udf parameter list contains 
      two hacks: 
      First, the parser input stream is read verbatim, bypassing 
      the lexer.
      Second, the Item::name field is overwritten. If the argument to a
      udf was a field, the field's name as seen by name resolution was
      overwritten this way.
      If the field name was quoted or escaped, it would appear as e.g. "`field`".
      Fixed by not overwriting field names.
      
      mysql-test/r/udf.result:
        Bug#46259: Test result.
      mysql-test/t/udf.test:
        Bug#46259: Test case.
      sql/sql_yacc.yy:
        Bug#46259: Fix.
      2cb3a131
  31. 29 Aug, 2009 1 commit
    • unknown's avatar
      Bug #44331 Restore of database with events produces warning in replication · f32c08bd
      unknown authored
      If an EVENT is created without the DEFINER clause set explicitly or with it set  
      to CURRENT_USER, the master and slaves become inconsistent. This issue stems from 
      the fact that in both cases, the DEFINER is set to the CURRENT_USER of the current 
      thread. On the master, the CURRENT_USER is the mysqld's user, while on the slave,  
      the CURRENT_USER is empty for the SQL Thread which is responsible for executing 
      the statement.
      
      To fix the problem, we do what follows. If the definer is not set explicitly,  
      a DEFINER clause is added when writing the query into binlog; if 'CURRENT_USER' is 
      used as the DEFINER, it is replaced with the value of the current user before 
      writing to binlog.
      
      mysql-test/suite/rpl/r/rpl_create_if_not_exists.result:
        Updated the result file after fixing bug#44331
      mysql-test/suite/rpl/r/rpl_drop_if_exists.result:
        Updated the result file after fixing bug#44331
      mysql-test/suite/rpl/r/rpl_events.result:
        Test result of Bug#44331
      mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
        Updated the result file after fixing bug#44331
      mysql-test/suite/rpl/t/rpl_events.test:
        Added test to verify if the definer is consistent between master and slave
        when the event is created without the DEFINER clause set explicitly or the
        DEFINER is set to CURRENT_USER
      sql/events.cc:
        The "create_query_string" function is added to create a new query string 
        for removing executable comments.
      sql/sql_yacc.yy:
        The remember_name token was added for recording the offset of EVENT_SYM.
      f32c08bd
  32. 27 Aug, 2009 1 commit
    • Sergey Glukhov's avatar
      Bug#46184 Crash, SELECT ... FROM derived table procedure analyze · 367c14b8
      Sergey Glukhov authored
      The crash happens because select_union object is used as result set
      for queries which have derived tables.
      select_union use temporary table as data storage and if
      fields count exceeds 10(count of values for procedure ANALYSE())
      then we get a crash on fill_record() function.
      
      
      mysql-test/r/analyse.result:
        test result
      mysql-test/r/subselect.result:
        result fix
      mysql-test/t/analyse.test:
        test case
      mysql-test/t/subselect.test:
        test fix
      sql/sql_yacc.yy:
        The crash happens because select_union object is used as result set
        for queries which have derived tables.
        select_union use temporary table as data storage and if
        fields count exceeds 10(count of values for procedure ANALYSE())
        then we get a crash on fill_record() function.
      367c14b8
  33. 12 Aug, 2009 1 commit
  34. 31 Jul, 2009 1 commit
    • Gleb Shchepa's avatar
      Bug# 30946: mysqldump silently ignores --default-character-set · 4e95179a
      Gleb Shchepa authored
                  when used with --tab
      
      1) New syntax: added CHARACTER SET clause to the
        SELECT ... INTO OUTFILE (to complement the same clause in
        LOAD DATA INFILE).
        mysqldump is updated to use this in --tab mode.
      
      2) ESCAPED BY/ENCLOSED BY field parameters are documented as
         accepting CHAR argument, however SELECT .. INTO OUTFILE
         silently ignored rests of multisymbol arguments.
         For the symmetrical behavior with LOAD DATA INFILE the
         server has been modified to fail with the same error:
      
           ERROR 42000: Field separator argument is not what is
                        expected; check the manual
      
      3) Current LOAD DATA INFILE recognizes field/line separators
         "as is" without converting from client charset to data
         file charset. So, it is supposed, that input file of
         LOAD DATA INFILE consists of data in one charset and
         separators in other charset. For the compatibility with
         that [buggy] behaviour SELECT INTO OUTFILE implementation
         has been saved "as is" too, but the new warning message
         has been added:
      
           Non-ASCII separator arguments are not fully supported
      
         This message warns on field/line separators that contain
         non-ASCII symbols.
      
      
      client/mysqldump.c:
        mysqldump has been updated to call SELECT ... INTO OUTFILE
        statement with a charset from the --default-charset command
        line parameter.
      mysql-test/r/mysqldump.result:
        Added test case for bug #30946.
      mysql-test/r/outfile_loaddata.result:
        Added test case for bug #30946.
      mysql-test/t/mysqldump.test:
        Added test case for bug #30946.
      mysql-test/t/outfile_loaddata.test:
        Added test case for bug #30946.
      sql/field.cc:
        String conversion code has been moved from check_string_copy_error()
        to convert_to_printable() for reuse.
      sql/share/errmsg.txt:
        New WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED message has been added.
      sql/sql_class.cc:
        The select_export::prepare() method has been modified to:
        
          1) raise the ER_WRONG_FIELD_TERMINATORS error on multisymbol
             ENCLOSED BY/ESCAPED BY field arguments like LOAD DATA INFILE;
        
          2) warn with a new WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED
             message on non-ASCII field or line separators.
        
        The select_export::send_data() merhod has been modified to
        convert item data to output charset (see new SELECT INTO OUTFILE
        syntax). By default the BINARY charset is used for backward
        compatibility.
      sql/sql_class.h:
        The select_export::write_cs field added to keep output
        charset.
      sql/sql_load.cc:
        mysql_load has been modified to warn on non-ASCII field or
        line separators with a new WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED
        message.
      sql/sql_string.cc:
        New global function has been added: convert_to_printable()
        (common code has been moved from check_string_copy_error()).
      sql/sql_string.h:
        New String::is_ascii() method and new global convert_to_printable()
        function have been added.
      sql/sql_yacc.yy:
        New syntax: added CHARACTER SET clause to the
        SELECT ... INTO OUTFILE (to complement the same clause in
        LOAD DATA INFILE). By default the BINARY charset is used for
        backward compatibility.
      4e95179a
  35. 29 Jul, 2009 2 commits
    • Mikael Ronstrom's avatar
      Bug#46354, when defining partitions without subpartition definition after... · a8e7535e
      Mikael Ronstrom authored
      Bug#46354, when defining partitions without subpartition definition after defining it with the first partition and using list partition caused crash, fixed by more error checks in parser
      a8e7535e
    • Guilhem Bichot's avatar
      Bug#45829 "CREATE TABLE TRANSACTIONAL PAGE_CHECKSUM ROW_FORMAT=PAGE accepted, does nothing": · a58b887c
      Guilhem Bichot authored
      those keywords do nothing in 5.1 (they are meant for future versions, for example featuring the Maria engine)
      so they are here removed from the syntax. Adding those keywords to future versions when needed is:
      - WL#5034 "Add TRANSACTIONA=0|1 and PAGE_CHECKSUM=0|1 clauses to CREATE TABLE"
      - WL#5037 "New ROW_FORMAT value for CREATE TABLE: PAGE"
      
      mysql-test/r/create.result:
        test that syntax is not accepted
      mysql-test/t/create.test:
        test that syntax is not accepted
      sql/handler.cc:
        remove ROW_FORMAT=PAGE
      sql/handler.h:
        Mark unused objects, but I don't remove them by fear of breaking any plugin which includes this file
        (see also table.h)
      sql/lex.h:
        removing syntax
      sql/sql_show.cc:
        removing output of noise keywords in SHOW CREATE TABLE and INFORMATION_SCHEMA.TABLES
      sql/sql_table.cc:
        removing TRANSACTIONAL
      sql/sql_yacc.yy:
        removing syntax
      sql/table.cc:
        removing TRANSACTIONAL, PAGE_CHECKSUM. Their place in the frm file is not reclaimed,
        for compatibility with older 5.1.
      sql/table.h:
        Mark unused objects, but I don't remove them by fear of breaking any plugin which includes this file
        (and there are several engines which use the content TABLE_SHARE and thus rely on a certain binary
        layout of this structure).
      a58b887c
  36. 16 Jul, 2009 1 commit
  37. 15 Jul, 2009 1 commit
    • Georgi Kodinov's avatar
      Bug #45287: phase 1 : 32 bit compilation warnings · 45b687c0
      Georgi Kodinov authored
      Fixed the following problems:
      1. cmake 2.6 warning because of a changed default on
      how the dependencies to libraries with a specified 
      path are resolved.
      Fixed by requiring cmake 2.6.
      2. Removed an obsolete pre-NT4 hack including defining
      Windows system defines to alter the behavior of windows.h.
      3. Disabled warning C4065 on compiling sql_yacc.cc because
      of a know incompatibility in some of the newer bison binaries.
      45b687c0