1. 03 Sep, 2010 1 commit
  2. 02 Sep, 2010 2 commits
  3. 01 Sep, 2010 5 commits
  4. 31 Aug, 2010 10 commits
    • Alexander Nozdrin's avatar
      6fa0df0f
    • Alexander Nozdrin's avatar
      Bug#55980 Character sets: supplementary character _bin ordering is wrong · 8b4af2a2
      Alexander Nozdrin authored
      Problem:
      - ORDER BY for utf8mb4_bin, utf16_bin and utf32_bin returned
        results in a wrong order, because old functions
        (supporting only BMP range) were used to handle these collations.
      - Additionally, utf16_bin did not sort supplementary characters
        between U+D700 and U+E000, as WL#1213 specification specified.
      
      include/m_ctype.h:
        Adding prototypes.
      mysql-test/include/ctype_filesort2.inc:
        Adding a new shared test file.
      mysql-test/t/ctype_utf8mb4.test:
        Adding tests.
      strings/ctype-ucs2.c:
        - Fixing my_strncoll[sp]_utf16_bin to compare
          binary representation instead of code points,
          to make columns with indexes sort correct.
        - Fixing my_collation_handler_utf32_bin and
          my_collation_handler_utf16_bin to use new
          functions.
      strings/ctype-utf8.c:
        - Adding my_strnxfrm[len]_unicode_fill_bin()
          to handle utf8mb4_bin, utf16_bin and utf32_bin,
          using 3 bytes per weight.
          This function also performs special reordering in case of utf16_bin.
        - Fixing my_collation_utf8mb4_bin handler to use the
          new function.
      8b4af2a2
    • Alexander Nozdrin's avatar
      Bug#27480 (Extend CREATE TEMPORARY TABLES privilege · 680b33dc
      Alexander Nozdrin authored
      to allow temp table operations) -- prerequisite patch #3.
      
      Rename open_temporary_table() to open_table_uncached().
      open_temporary_table() will be introduced in following patches
      to open temporary tables for a statement.
      680b33dc
    • Alexander Nozdrin's avatar
      Remove check_merge_table_access(). · 5c7f99fd
      Alexander Nozdrin authored
      check_merge_table_access() used to do two things:
        - set proper database for every merge table child;
        - check SELECT | UPDATE | DELETE for merge table children.
      
      Setting database is not needed anymore, since it's done
      on the parsing stage.
      
      Thus, check_merge_table_access() can be removed;
      needed privileges can be checked using check_table_access().
      5c7f99fd
    • Alexander Nozdrin's avatar
      Polish check_grant(): name TABLE_LIST instance "tl", not "table". · 6a937e99
      Alexander Nozdrin authored
      This allows to avoid mixing it up with pointer to TABLE object
      which will be introduced to this function in one of upcoming
      patches.
      6a937e99
    • Alexander Nozdrin's avatar
      Remove unused enum (enum open_table_mode). · 19e6c7cd
      Alexander Nozdrin authored
      It was added by mistake during backport from 6.0.
      19e6c7cd
    • Alexander Nozdrin's avatar
      Bug#27480 (Extend CREATE TEMPORARY TABLES privilege · 6303bd89
      Alexander Nozdrin authored
      to allow temp table operations) -- prerequisite patch #2.
      
      Introduce a new form of find_temporary_table() function:
      find_temporary_table() by a table key. It will be used
      in further patches.
      
      Replace find_temporary_table(table_list->db, table_list->name)
      by more appropiate find_temporary_table(table_list) across
      the codebase.
      6303bd89
    • Alexander Nozdrin's avatar
      Fix TABLE::init() comment. · ec52dcaf
      Alexander Nozdrin authored
      ec52dcaf
    • Dmitry Lenev's avatar
      Bug #56137 "Assertion `thd->lock == 0' failed on upgrading · c1e9f2a3
      Dmitry Lenev authored
      from 5.1.50 to 5.5.6".
      
      Debug builds of the server aborted due to an assertion
      failure when DROP DATABASE statement was run on an
      installation which had outdated or corrupt mysql.proc table.
      Particularly this affected the mysql_upgrade tool which is
      run as part of 5.1 to 5.5 upgrade.
      
      The problem was that sp_drop_db_routines(), which was invoked
      during dropping of the database, could have returned without
      closing and unlocking mysql.proc table in cases when this
      table was not up-to-date with the current server. As a result
      further attempt to open and lock the mysql.event table, which
      was necessary to complete dropping of the database, ended up
      with an assert.
      
      This patch solves this problem by ensuring that
      sp_drop_db_routines() always closes mysql.proc table and
      releases metadata locks on it. This is achieved by changing
      open_proc_table_for_update() function to close tables and
      release metadata locks acquired by it in case of failure.
      This step also makes behavior of the latter function
      consistent with behavior of open_proc_table_for_read()/
      open_and_lock_tables().
      
      
      Test case for this bug was added to sp-destruct.test.
      c1e9f2a3
    • Alexander Nozdrin's avatar
      Auto-merge from mysql-5.5-merge. · e0622c5a
      Alexander Nozdrin authored
      e0622c5a
  5. 30 Aug, 2010 10 commits
    • Gleb Shchepa's avatar
      af604962
    • Gleb Shchepa's avatar
      Bug #53034: Multiple-table DELETE statements not accepting · 07024ab7
      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.
      07024ab7
    • Alexander Nozdrin's avatar
      Auto-merge from mysql-5.5-merge. · 8a50a7a2
      Alexander Nozdrin authored
      8a50a7a2
    • Magnus Blåudd's avatar
      Bug#56117 ha_ndbcluster_tables.h included by mysqldump but not used · 90eef290
      Magnus Blåudd authored
       - Remove include of ha_ndbcluster_tables.h from mysqldump.c
      90eef290
    • Dmitry Shulga's avatar
      Follow-up for Bug#29751: FLUSH LOGS doesn't create -old file, · 9a9e7a2f
      Dmitry Shulga authored
      so test case has to be updated.
      9a9e7a2f
    • Alexander Nozdrin's avatar
      Auto-merge from mysql-5.5. · e2dd2e73
      Alexander Nozdrin authored
      e2dd2e73
    • Alexander Nozdrin's avatar
      c5ca4142
    • Alexander Nozdrin's avatar
      Auto-merge from mysql-5.5-bugfixing. · bef62cb6
      Alexander Nozdrin authored
      bef62cb6
    • Alexey Kopytov's avatar
      Automerge. · c2a3d3c5
      Alexey Kopytov authored
      c2a3d3c5
    • unknown's avatar
      Bug #54579 Wrong unsafe warning for INSERT DELAYED in SBR · 3b1a7ebb
      unknown authored
            
      The lock_type is upgrade to TL_WRITE from TL_WRITE_DELAYED for
      INSERT DELAYED when inserting multi values in one statement.
      It's safe. But it causes an unsafe warning in SBR.
            
      Make INSERT DELAYED safe by logging it as INSERT without DELAYED.
      
      
      mysql-test/extra/binlog_tests/binlog_insert_delayed.test:
        Updated the test file to test multi INSERT DELAYED statement
        is no longer causes an unsafe warning and binlogged as INSERT
        without DELAYED.
      mysql-test/extra/rpl_tests/create_recursive_construct.inc:
        Updated for the patch of bug#54579.
      mysql-test/suite/binlog/r/binlog_row_binlog.result:
        Updated for the patch of bug#54579.
      mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result:
        Test result for BUG#54579.
      mysql-test/suite/binlog/r/binlog_stm_binlog.result:
        Updated for the patch of bug#54579.
      mysql-test/suite/binlog/r/binlog_unsafe.result:
        Updated for the patch of bug#54579.
      mysql-test/suite/binlog/t/binlog_unsafe.test:
        Updated for the patch of bug#54579.
      sql/sql_insert.cc:
        Added code to genetate a new query string for removing
        DELAYED keyword for multi INSERT DEALAYED statement.
      sql/sql_yacc.yy:
        Added code to record the DELAYED keyword position and remove the setting
        of unsafe statement for INSERT DELAYED statement
      3b1a7ebb
  6. 28 Aug, 2010 1 commit
  7. 27 Aug, 2010 7 commits
    • Marc Alff's avatar
      local merge · 3b56ef04
      Marc Alff authored
      3b56ef04
    • Sergey Vojtovich's avatar
      Merge 5.1-bugteam to 5.5-merge. · 98df5f7c
      Sergey Vojtovich authored
      98df5f7c
    • Alexey Kopytov's avatar
      Bug #54465: assert: field_types == 0 || field_types[field_pos] · 36e234a8
      Alexey Kopytov authored
                  == MYSQL_TYPE_LONGLONG
      
      A MIN/MAX() function with a subquery as its argument could lead
      to a debug assertion on debug builds or wrong data on release
      ones.
      
      The problem was a combination of the following factors:
      
      - Item_sum_hybrid::fix_fields() might use the argument
      (args[0]) to calculate 'hybrid_field_type' which was later used
      to decide how the data should be sent to the client.
      
      - Item_sum::make_field() might use the argument again to
      calculate the field's type when sending result set metadata to
      the client.
      
      - The argument could be changed in between these two calls via
        Item::set_arg() leading to inconsistent metadata being
        reported.
      
      Here is what was happening for the bug's test case:
      
      1. Item_sum_hybrid::fix_fields() calculates hybrid_field_type
      as MYSQL_TYPE_LONGLONG based on args[0] which is an
      Item::SUBSELECT_ITEM at that time.
      
      2. A temporary table is created to execute the
      query. create_tmp_field_from_item() creates a Field_long object
      according to the subselect's max_length.
      
      3. The subselect item in Item_sum_hybrid is replaced by the
      Item_field object referencing the newly created Field_long.
      
      4. Item_sum::make_field() rightfully returns the
      MYSQL_TYPE_LONG type when calculating the result set metadata.
      
      5. When sending the actual data, Item::send() relies on the
      virtual field_type() function which in our case returns
      previously calculated hybrid_field_type == MYSQL_TYPE_LONGLONG.
      
      It looks like the only solution is to never refer to the
      argument's metadata after the result metadata has been
      calculated in fix_fields(), since the argument itself may be
      different by then. In this sense, Item_sum::make_field() should
      never be used, because it may rely on the argument's metadata
      and is only called after fix_fields(). The "default"
      implementation in Item::make_field() should be used instead as
      it relies only on field_type(), but not on the argument's type.
      
      Fixed by removing Item_sum::make_field() so that the superclass
      implementation Item::make_field() is always used.
      
      mysql-test/r/func_group.result:
        Added a test case for bug #54465.
      mysql-test/t/func_group.test:
        Added a test case for bug #54465.
      sql/item_sum.cc:
        Removed Item_sum::make_field() so that the superclass
        implementation Item::make_field() is always used.
      sql/item_sum.h:
        Removed Item_sum::make_field() so that the superclass
        implementation Item::make_field() is always used.
      36e234a8
    • Alexander Nozdrin's avatar
      Bug#27480 (Extend CREATE TEMPORARY TABLES privilege · 985780fc
      Alexander Nozdrin authored
      to allow temp table operations) -- prerequisite patch #1.
        
      Move a piece of code that initialiazes TABLE instance
      after it was successfully opened into a separate function.
      This function will be reused in the following patches.
      985780fc
    • Ramil Kalimullin's avatar
      Fix for bug #54253: memory leak when using I_S plugins w/o deinit method · e433cb33
      Ramil Kalimullin authored
      Free memory allocated by the server for all plugins,
      with or without deinit() method.
      
      e433cb33
    • Sergey Vojtovich's avatar
      e1af6730
    • Sergey Vojtovich's avatar
      BUG#52821 - plugin_ftparser.h and plugin_audit.h are · 8f773e6f
      Sergey Vojtovich authored
                  not tested by ABI check
      
      plugin_audit.h and plugin_ftparser.h are now subject
      for ABI check. plugin.h is now tested implicitly.
      
      Also fixed broken ABI check cmake rules.
      
      Makefile.am:
        plugin_audit.h and plugin_ftparser.h are now subject
        for ABI check. plugin.h is now tested implicitly.
      cmake/abi_check.cmake:
        plugin_audit.h and plugin_ftparser.h are now subject
        for ABI check. plugin.h is now tested implicitly.
        
        Also fixed broken ABI check rules: -DMYSQL_ABI_CHECK is
        compiler (not cmake) definition, incorrect definitions
        were passed to do_abi_check.cmake for abi_check_all rule.
      cmake/do_abi_check.cmake:
        Inform sources that we do ABI check.
      include/mysql/plugin.h.pp:
        plugin.h is now tested implicitly.
      include/mysql/plugin_audit.h.pp:
        plugin_audit.h is now subject for ABI check.
      include/mysql/plugin_ftparser.h.pp:
        plugin_ftparser.h is now subject for ABI check.
      8f773e6f
  8. 26 Aug, 2010 4 commits