1. 20 May, 2008 4 commits
    • 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
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.1 · 4175806e
      unknown authored
      into  bodhi.(none):/opt/local/work/mysql-5.1-27430
      
      
      Makefile.am:
        Auto merged
      include/my_global.h:
        Auto merged
      mysql-test/include/mix1.inc:
        Auto merged
      sql/item.cc:
        Auto merged
      sql/my_decimal.h:
        Auto merged
      sql/mysqld.cc:
        Auto merged
      sql/set_var.cc:
        Auto merged
      sql/set_var.h:
        Auto merged
      sql/sp.cc:
        Auto merged
      sql/sp_head.cc:
        Auto merged
      sql/sql_base.cc:
        Auto merged
      sql/sql_class.cc:
        Auto merged
      sql/sql_class.h:
        Auto merged
      sql/sql_parse.cc:
        Auto merged
      sql/sql_table.cc:
        Auto merged
      sql/sql_update.cc:
        Auto merged
      sql/share/errmsg.txt:
        Auto merged
      sql/sql_yacc.yy:
        Auto merged
      libmysqld/CMakeLists.txt:
        Manual merge.
      libmysqld/lib_sql.cc:
        Manual merge.
      mysql-test/t/disabled.def:
        Manual merge.
      4175806e
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.1-27430 · 4b13b5cb
      unknown authored
      into  bodhi.(none):/opt/local/work/mysql-5.1-27430
      
      
      sql/sql_base.cc:
        Manual merge.
      4b13b5cb
    • unknown's avatar
      Bug#27430 "Crash in subquery code when in PS and table DDL changed after · 37b2c32d
      unknown authored
      PREPARE": rename members, methods, classes to follow the spec 
      (a code review request)
      
      
      sql/mysql_priv.h:
        enum_metadata_type -> enum_table_ref_type
      sql/sp_head.cc:
        Metadata_version_observer -> Reprepare_observer
      sql/sql_base.cc:
        metadata -> table_ref
      sql/sql_class.cc:
        Replace an abstract interface with a concrete implementation.
      sql/sql_class.h:
        enum_metadata_type -> enum_table_ref_type
      sql/sql_prepare.cc:
        Move implementation of Execute_observer to sql_class.cc and
        rename the class to Reprepare_observer.
        Use getters instead of direct access to the members.
      sql/table.h:
        metadata -> table_ref
      37b2c32d
  2. 19 May, 2008 3 commits
  3. 18 May, 2008 5 commits
    • unknown's avatar
      Merge host.loc:/work/bk/5.0-bugteam · c5865cfd
      unknown authored
      into  host.loc:/work/bk/5.1-bugteam
      
      
      sql/sql_update.cc:
        Auto merged
      c5865cfd
    • unknown's avatar
      Merge host.loc:/work/bugs/5.0-bugteam-36676 · 8bc987ab
      unknown authored
      into  host.loc:/work/bk/5.0-bugteam
      
      
      8bc987ab
    • unknown's avatar
      Fixed bug#36676: multiupdate using LEFT JOIN updates only · 29e7fa25
      unknown authored
                       first row or fails with an error:
        ERROR 1022 (23000): Can't write; duplicate key in table ''
      
      The server uses intermediate temporary table to store updated
      row data.  The first column of this table contains rowid.
      Current server implementation doesn't reset NULL flag of that
      column even if the server fills a column with rowid.
      To keep each rowid unique, there is an unique index.
      An insertion into an unique index takes into account NULL
      flag of key value and ignores real data if NULL flag is set.
      So, insertion of actually different rowids may lead to two
      kind of problems.  Visible effect of each of these problems
      depends on an initial engine type of temporary table:
      
      1. If multiupdate initially creates temporary table as
      a MyISAM table (a table contains blob columns, and the
      create_tmp_table function assumes, that this table is
      large), it inserts only one single row and updates
      only rows with one corresponding rowid. Other rows are
      silently ignored. 
      
      2. If multiupdate initially creates MEMORY temporary
      table, fills it with data and reaches size limit for
      MEMORY tables (max_heap_table_size), multiupdate
      converts MEMORY table into MyISAM table and fails
      with an error:
        ERROR 1022 (23000): Can't write; duplicate key in table ''
      
      
      Multiupdate has been fixed to update the NULL flag of
      temporary table rowid columns.
      
      
      
      mysql-test/r/multi_update_tiny_hash.result:
        Added test case for bug#36676.
      mysql-test/t/multi_update_tiny_hash-master.opt:
        Added test case for bug#36676.
      mysql-test/t/multi_update_tiny_hash.test:
        Added test case for bug#36676.
      sql/sql_update.cc:
        Fixed bug#36676: multiupdate using LEFT JOIN updates only
                         first row or fails with an error:
          ERROR 1022 (23000): Can't write; duplicate key in table ''
        
        The multi_update::send_data method has been modified to reset null bits of
        fields containing rowids.
      29e7fa25
    • unknown's avatar
      Merge magare.gmz:/home/kgeorge/mysql/work/mysql-5.0-bugteam · 314e6e25
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/work/merge-5.1-bugteam
      
      
      sql/handler.cc:
        Auto merged
      configure.in:
        merge 5.0-bugteam to 5.1-bugteam
      314e6e25
    • unknown's avatar
      Fix mysql_client_test failure in pushbuild 5.1-27430 · 1c12291b
      unknown authored
      (Bug#27430)
      
      
      sql/sql_prepare.cc:
        Fix a simple coding mistake.
      1c12291b
  4. 17 May, 2008 2 commits
    • unknown's avatar
      Implement some code review fixes for the fix for Bug#27430 · 1cf0b5cb
      unknown authored
      "Crash in subquery code when in PS and table DDL changed after PREPARE"
      
      
      include/my_sys.h:
        Add two new flags for my_error(). These flags help parameterize
        behavoiur of my_message_sql()
      sql/item.cc:
        Update comments.
        Fix a typo in Item_param::set_param_type_and_swap_value()
      sql/mysqld.cc:
        Implement two additional flags for my_error():
         - if ME_NO_SP_HANDLER is specified, ignore stored procedure continue/
            exit handlers
         - if ME_NO_WARNING_FOR_ERROR is specified, do not push warning
      sql/sql_base.cc:
        Update comments.
        Rename a few methods.
      sql/sql_class.h:
        Update and improve comments.
      sql/sql_prepare.cc:
        Update comments.
        Style changes.
      sql/table.h:
        Update comments.
        Style changes.
        Rename a few methods.
      tests/mysql_client_test.c:
        Zero the bind array, to follow C API requirements.
      1cf0b5cb
    • unknown's avatar
      Bug #36705 key_buffer_size of >= 2G allocates all availabel virtual memory on 64-bit wondo. · f197f3ab
      unknown authored
      temporary variables of 'long' types were used to store ulong values,
      that causes init_key_cache to receive distorted parameters
      
      
      sql/handler.cc:
        Bug #36705 key_buffer_size of >= 2G allocates all availabel virtual memory on 64-bit wondo.
        
        types of temporary variables changed to match init_key_cache() parameters
      f197f3ab
  5. 16 May, 2008 24 commits
  6. 15 May, 2008 2 commits