1. 04 Mar, 2011 1 commit
    • Magnus Blåudd's avatar
      Bug#60111 storage type for table not saved in .frm · c7c047f7
      Magnus Blåudd authored
       - Add new "format section" in extra data segment with additional table and
         column properties. This was originally introduced in 5.1.20 based MySQL Cluster
       - Remove hardcoded STORAGE DISK for table and instead
         output the real storage format used. Keep both TABLESPACE
         and STORAGE inside same version guard.
       - Implement default version of handler::get_tablespace_name() since tablespace
         is now available in share and it's unnecessary for each handler  to implement.
         (the function could actually be removed totally now).
       - Add test for combinations of TABLESPACE  and STORAGE with CREATE TABLE
         and ALTER TABLE
       - Add test to show that 5.5 now can read a .frm file created by MySQL Cluster
         7.0.22. Although it does not yet show the column level attributes, they are read.
      c7c047f7
  2. 21 Feb, 2011 7 commits
    • Jorgen Loland's avatar
      BUG#11762751: UPDATE STATEMENT THROWS AN ERROR, BUT STILL · 16c90215
      Jorgen Loland authored
                    UPDATES THE TABLE ENTRIES (formerly 55385)
      BUG#11764529: MULTI UPDATE+INNODB REPORTS ER_KEY_NOT_FOUND 
                    IF A TABLE IS UPDATED TWICE (formerly 57373)
                  
      If multiple-table update updates a row through two aliases and
      the first update physically moves the row, the second update will
      fail to locate the row. This results in different errors
      depending on storage engine:
        * MyISAM: Got error 134 from storage engine
        * InnoDB: Can't find record in 'tbl'
      None of these errors accurately describe the problem. 
            
      Furthermore, since MyISAM is non-transactional, the update
      executed first will be performed while the second will not.
      In addition, for two equal multiple-table update statements,
      one could succeed and the other fail based on whether or not
      the record actually moved or not. This was inconsistent.
            
      Two update operations may physically move a row:
        1) Update of a column in a clustered primary key
        2) Update of a column used to calculate which partition the 
           row belongs to
                 
      BUG#11764529 is about case 1) above, BUG#11762751 was about case 2).
            
      The fix for these bugs is to return with an error if multiple-table 
      update is about to:
        a) Update a table through multiple aliases, and
        b) Perform an update that may physically more the row 
           in at least one of these aliases
          
      This avoids 
        * partial updates as described for MyISAM above,
        * provides the same error message that describes the actual problem
          for all SEs
        * inconsistent behavior where a statement fails or succeeds based on
          e.g. the partitioning algorithm of the table.
      
      mysql-test/r/multi_update.result:
        Add test for bug#57373
      mysql-test/r/multi_update_innodb.result:
        Add test for bug#57373
      mysql-test/r/partition.result:
        Add test for bug#55385
      mysql-test/t/multi_update.test:
        Add test for bug#57373
      mysql-test/t/multi_update_innodb.test:
        Add test for bug#57373
      mysql-test/t/partition.test:
        Add test for bug#55385
      sql/handler.cc:
        Translate handler error HA_ERR_RECORD_DELETED to server error
      sql/share/errmsg-utf8.txt:
        New error message for multi-table update where the same table is updated multiple times.
      sql/sql_update.cc:
        Add function unsafe_key_update()
      16c90215
    • Magnus Blåudd's avatar
      Merge · a9472669
      Magnus Blåudd authored
      a9472669
    • Jon Olav Hauglid's avatar
      Bug #11754461 CANNOT ALTER TABLE WHEN KEY PREFIX TOO LONG · fe5dcec2
      Jon Olav Hauglid authored
      The problem was that doing ALTER TABLE on a table which had a key
      on a TEXT/BLOB column with a prefix longer than the maximum number
      of characteres in this column (as per the character set), by mistake,
      caused an error (Error 1170 - ER_BLOB_KEY_WITHOUT_LENGTH).
      
      This bug not repeatable in 5.5.
      
      This patch adds a regression test to alter_table.test and
      contains no code changes.
      fe5dcec2
    • Magnus Blåudd's avatar
      Remove last traces of HAVE_NDBCLUSTER_DB define - it has not had an effect in... · 2d18764e
      Magnus Blåudd authored
      Remove last traces of HAVE_NDBCLUSTER_DB define - it has not had an effect in a long time and is just confusing.
      At the same time backport the removal of OPT_NDB_CONNECTSTRING and OPT_NDBCLUSTER values from "enum options_client"
      2d18764e
    • Sergey Vojtovich's avatar
      Merge. · 5326ac76
      Sergey Vojtovich authored
      5326ac76
    • Nirbhay Choubey's avatar
    • Nirbhay Choubey's avatar
      Bug#11766310 : 59398: MYSQLDUMP 5.1 CAN'T HANDLE A DASH · bc048093
      Nirbhay Choubey authored
                     ("-") IN DATABASE NAMES IN ALTER DATABASE.
      
      mysqldump did not quote database name in 'ALTER DATABASE'
      statements in its output. This can further cause a failure
      while loading if database name contains a hyphen '-'.
      
      This happened as, while printing the 'ALTER DATABASE'
      statements, the database name was not quoted.
      
      Fixed by quoting the database name.
      
      
      client/mysqldump.c:
        Bug#11766310 : 59398: MYSQLDUMP 5.1 CAN'T HANDLE A DASH
                       ("-") IN DATABASE NAMES IN ALTER DATABASE.
        
        Modified the print statement in order to print the quoted
        database name for 'ALTER DATABASE' statements.
      mysql-test/r/mysqldump.result:
        Added a test case for bug#11766310.
      mysql-test/t/mysqldump.test:
        Added a test case for bug#11766310.
      bc048093
  3. 18 Feb, 2011 12 commits
    • Alexander Barkov's avatar
      Merging from 5.1 · 31723515
      Alexander Barkov authored
      31723515
    • Alexander Barkov's avatar
      A post-fix for b58036. · 9204b7ff
      Alexander Barkov authored
      9204b7ff
    • Alexander Barkov's avatar
      869c0310
    • Alexander Barkov's avatar
      Bug#11765108 (Bug#58036) client utf32, utf16, ucs2 should be disallowed, they crash server · e4090f81
      Alexander Barkov authored
      A separate fix for 5.1 (as 5.1 and 5.5 have seriously
      differged in the related pieces of the code).
      A patch for 5.5 was approved earlier.
      
      Problem: ucs2 was correctly disallowed in "SET NAMES" only,
      while mysql_real_connect() and mysql_change_user() still allowed
      to use ucs2, which made server crash.
      
      Fix: disallow ucs2 in mysql_real_connect() and mysql_change_user().
      
        @ sql/sql_priv.h
          - changing return type for thd_init_client_charset() to bool,
            to return errors to the caller
      
        @ sql/sql_var.cc
          - using new function
      
        @ sql/sql_connect.cc
          - thd_client_charset_init:
            in case of unsupported client character set send error and return true;
            in case of success return false
          - check_connection:
            Return error if character set initialization failed
      
        @ sql/sql_parse.cc
          - check charset in the very beginnig of the CMD_CHANGE_USER handling code
      
        @ tests/mysql_client_test.c
          - adding tests
      e4090f81
    • Vasil Dimov's avatar
      Merge mysql-5.1 -> mysql-5.5 (empty) · 025dab50
      Vasil Dimov authored
      025dab50
    • Vasil Dimov's avatar
      Merge mysql-5.5-innodb -> mysql-5.5 · d077cf03
      Vasil Dimov authored
      d077cf03
    • Vasil Dimov's avatar
      Merge mysql-5.1-innodb -> mysql-5.1 · 064e5371
      Vasil Dimov authored
      064e5371
    • Martin Hansson's avatar
      Merge of fix for Bug#11766675. · 76fcda9c
      Martin Hansson authored
      76fcda9c
    • Martin Hansson's avatar
      Bug#11766675 - 59839: Aggregation followed by subquery yields wrong result · 9d6b82a6
      Martin Hansson authored
      The loop that was looping over subqueries' references to outer field used a
      local boolean variable to tell whether the field was grouped or not. But the
      implementor failed to reset the variable after each iteration. Thus a field
      that was not directly aggregated appeared to be.
      
      Fixed by resetting the variable upon each new iteration.
      9d6b82a6
    • Alexander Barkov's avatar
      Bug#11765108 (Bug#58036) client utf32, utf16, ucs2 should be disallowed, they crash server · 001b560c
      Alexander Barkov authored
      Problem: ucs2 was correctly disallowed in "SET NAMES" only,
      while mysql_real_connect() and mysql_change_user() still allowed
      to use ucs2, which made server crash.
      
      Fix: disallow ucs2 in mysql_real_connect() and mysql_change_user().
      
        @ sql/set_var.cc
          Using new function.
      
        @ sql/sql_acl.cc
          - Return error if character set initialization failed
          - Getting rid of pointer aliasing:
            Initialize user_name to NULL, to avoid double free().
      
        @ sql/sql_connect.cc
          - in case of unsupported client character set send error and return true
          - in case of success return false
      
        @ sql/sql_connect.h
          - changing return type for thd_init_client_charset() to bool,
            to return errors to the caller
      
        @ sql/sql_parse.h
          - introducing a new function, to reuse in all places where we need
          to check client character set.
      
        @ tests/mysql_client_test.c
          Adding test
      001b560c
    • Sergey Vojtovich's avatar
      BUG#11766720 - setting storage engine to null segfaults mysqld · 31f18db6
      Sergey Vojtovich authored
      MONTHNAME(0) claims that it is about to return NOT NULL
      value, whereas it actually returns NULL.
      
      As a result storage_engine variable (which cannot be NULL)
      protection was bypassed and NULL value was accepted, causing
      server crash.
      
      Fixed MONTHNAME(0) to report valid NULL flag.
      
      mysql-test/r/func_time.result:
        A test case for BUG#11766720.
      mysql-test/t/func_time.test:
        A test case for BUG#11766720.
      sql/item_timefunc.cc:
        MONTHNAME(0) must report NULL, as opposed to base class
        MONTH(0) which is NOT NULL.
        
        Fixed Item_func_monthname to inherit from Item_str_func
        instead of Item_func_month.
      sql/item_timefunc.h:
        MONTHNAME(0) must report NULL, as opposed to base class
        MONTH(0) which is NOT NULL.
        
        Fixed Item_func_monthname to inherit from Item_str_func
        instead of Item_func_month.
      31f18db6
    • Alexander Barkov's avatar
      Bug#60101 COALESCE with cp1251 tables causes [Err] 1267 - Illegal mix of collations · ba711916
      Alexander Barkov authored
            
      Problem:
        IF() did not copy collation derivation and repertoire from
        an argument if the opposite argument was NULL:
          IF(cond, res1, NULL)
          IF(cond, NULL, res2)
        only CHARSET_INFO pointer was copied.
        This resulted in illegal mix of collations error.
      
      Fix:
        copy all collation parameters from the non-NULL argument:
        CHARSET_INFO pointer, derivation, repertoire.
      ba711916
  4. 17 Feb, 2011 15 commits
  5. 16 Feb, 2011 5 commits