1. 25 Mar, 2011 1 commit
    • Magnus Blåudd's avatar
      Bug#60111 storage type for table not saved in .frm · 3d8d6724
      Magnus Blåudd authored
       (aka BUG#11766883)
        - fix review comments
        - Rewrite last usage of handler::get_tablespace_name to use
          table->s->tablespace directly
        - Remove(revert) the addition of default implementation for
          handler::get_tablespace_name
        - Add comments describing the new TABLE_SHARE members default_storage_media
          and tablespace
        - Fix usage of incorrect mask for column_format bits, i.e COLUMN_FORMAT_MASK
      3d8d6724
  2. 04 Mar, 2011 1 commit
    • Magnus Blåudd's avatar
      Bug#60111 storage type for table not saved in .frm · 6c85d653
      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.
      6c85d653
  3. 21 Feb, 2011 7 commits
    • Jorgen Loland's avatar
      BUG#11762751: UPDATE STATEMENT THROWS AN ERROR, BUT STILL · 44b41979
      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.
      44b41979
    • Magnus Blåudd's avatar
      Merge · c9601845
      Magnus Blåudd authored
      c9601845
    • Jon Olav Hauglid's avatar
      Bug #11754461 CANNOT ALTER TABLE WHEN KEY PREFIX TOO LONG · 5d42003f
      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.
      5d42003f
    • Magnus Blåudd's avatar
      Remove last traces of HAVE_NDBCLUSTER_DB define - it has not had an effect in... · 6ae9c150
      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"
      6ae9c150
    • Sergey Vojtovich's avatar
      Merge. · 549f63ab
      Sergey Vojtovich authored
      549f63ab
    • Nirbhay Choubey's avatar
    • Nirbhay Choubey's avatar
      Bug#11766310 : 59398: MYSQLDUMP 5.1 CAN'T HANDLE A DASH · a8e6f7c6
      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.
      a8e6f7c6
  4. 18 Feb, 2011 12 commits
    • Alexander Barkov's avatar
      Merging from 5.1 · 4da300da
      Alexander Barkov authored
      4da300da
    • Alexander Barkov's avatar
      A post-fix for b58036. · cd3a8131
      Alexander Barkov authored
      cd3a8131
    • Alexander Barkov's avatar
      ef997768
    • Alexander Barkov's avatar
      Bug#11765108 (Bug#58036) client utf32, utf16, ucs2 should be disallowed, they crash server · 8a960129
      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
      8a960129
    • Vasil Dimov's avatar
      Merge mysql-5.1 -> mysql-5.5 (empty) · 91ef7b5d
      Vasil Dimov authored
      91ef7b5d
    • Vasil Dimov's avatar
      Merge mysql-5.5-innodb -> mysql-5.5 · 95d02c5c
      Vasil Dimov authored
      95d02c5c
    • Vasil Dimov's avatar
      Merge mysql-5.1-innodb -> mysql-5.1 · f912dcd8
      Vasil Dimov authored
      f912dcd8
    • Martin Hansson's avatar
      Merge of fix for Bug#11766675. · 8ab3e4f3
      Martin Hansson authored
      8ab3e4f3
    • Martin Hansson's avatar
      Bug#11766675 - 59839: Aggregation followed by subquery yields wrong result · cd4c263d
      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.
      cd4c263d
    • Alexander Barkov's avatar
      Bug#11765108 (Bug#58036) client utf32, utf16, ucs2 should be disallowed, they crash server · b97cdadb
      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
      b97cdadb
    • Sergey Vojtovich's avatar
      BUG#11766720 - setting storage engine to null segfaults mysqld · 4daaa028
      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.
      4daaa028
    • Alexander Barkov's avatar
      Bug#60101 COALESCE with cp1251 tables causes [Err] 1267 - Illegal mix of collations · 498ff446
      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.
      498ff446
  5. 17 Feb, 2011 15 commits
  6. 16 Feb, 2011 4 commits