1. 18 May, 2008 1 commit
    • gshchepa/uchum@host.loc's avatar
      Fixed bug#36676: multiupdate using LEFT JOIN updates only · 2459d3a9
      gshchepa/uchum@host.loc 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.
      2459d3a9
  2. 13 May, 2008 1 commit
  3. 12 May, 2008 2 commits
    • gshchepa/uchum@host.loc's avatar
      Merge host.loc:/work/bugs/5.0-bugteam-36055 · 486ef1ba
      gshchepa/uchum@host.loc authored
      into  host.loc:/work/bk/5.0-bugteam
      486ef1ba
    • gshchepa/uchum@host.loc's avatar
      Fixed bug #36055: mysql_upgrade doesn't really 'upgrade' tables · 1e7be565
      gshchepa/uchum@host.loc authored
      The REPAIR TABLE ... USE_FRM query silently corrupts data of tables
      with old .FRM file version.
      The mysql_upgrade client program or the REPAIR TABLE query (without
      the USE_FRM clause) can't prevent this trouble, because in the
      common case they don't upgrade .FRM file to compatible structure.
      
      1. Evaluation of the REPAIR TABLE ... USE_FRM query has been
         modified to reject such tables with the message:
         "Failed repairing incompatible .FRM file".
      
      2. REPAIR TABLE query (without USE_FRM clause) evaluation has been
         modified to upgrade .FRM files to current version.
      
      3. CHECK TABLE ... FOR UPGRADE query evaluation has been modified
         to return error status when .FRM file has incompatible version.
      
      4. mysql_upgrade and mysqlcheck client programs call CHECK TABLE
         FOR UPGRADE and REPAIR TABLE queries, so their behaviors have
         been changed too to upgrade .FRM files with incompatible
         version numbers.
      1e7be565
  4. 08 May, 2008 2 commits
  5. 06 May, 2008 3 commits
  6. 05 May, 2008 1 commit
  7. 02 May, 2008 5 commits
  8. 01 May, 2008 4 commits
  9. 30 Apr, 2008 1 commit
  10. 28 Apr, 2008 5 commits
  11. 24 Apr, 2008 1 commit
    • evgen@moonbone.local's avatar
      Bug#36023: Incorrect handling of zero length caused an assertion to fail. · e9e66793
      evgen@moonbone.local authored
      When a zero length is provided to the my_decimal_length_to_precision
      function along with unsigned_flag set to false it returns a negative value.
      For queries that employs temporary tables may cause failed assertion or
      excessive memory consumption while temporary table creation.
      
      Now the my_decimal_length_to_precision and the my_decimal_precision_to_length
      functions take unsigned_flag into account only if the length/precision
      argument is non-zero.
      e9e66793
  12. 23 Apr, 2008 2 commits
  13. 22 Apr, 2008 3 commits
  14. 21 Apr, 2008 1 commit
  15. 18 Apr, 2008 1 commit
  16. 17 Apr, 2008 1 commit
  17. 10 Apr, 2008 2 commits
  18. 09 Apr, 2008 3 commits
  19. 04 Apr, 2008 1 commit