1. 05 Jul, 2011 1 commit
  2. 21 Jun, 2011 1 commit
    • Alexander Nozdrin's avatar
      Patch for Bug 12652769 - 61470: CASE OPERATOR IN STORED ROUTINE RETAINS · 8b1566aa
      Alexander Nozdrin authored
      OLD VALUE OF INPUT PARAMETER.
      
      The user-visible problem was that CASE-control-flow function
      (not CASE-statement) misbehaved in stored routines under some
      circumstances. The problem resulted in a crash or wrong data
      returned. The error happened when expressions in CASE-function
      were not of the same character set.
      
      A CASE-function should return values of the same character set
      for all branches. Internally, that means a new Item-instance
      for the CONVERT(... USING <some charset>)-function is added
      to the item tree when needed. The problem was that such changes
      were not properly recorded using THD::change_item_tree(),
      thus dangling pointers remain in the item tree after
      THD::rollback_item_tree_changes(), which lead to undefined
      behavior (i.e. crash / wrong data) for subsequent executions of
      the stored routine.
      
      This bug was introduced by a patch for Bug 11753363
      (44793 - CHARACTER SETS: CASE CLAUSE, UCS2 OR UTF32, FAILURE).
      
      The fixed function is Item_func_case::fix_length_and_dec().
      New CONVERT-items are added in agg_item_set_converter(),
      which calls THD::change_item_tree().
      
      The problem was that an intermediate array was passed
      to agg_item_set_converter(). Thus, THD::change_item_tree() there
      was called on intermediate objects.
      
      Note: those intermediate objects are allocated on THD's
      memory root, so it's Ok to put them into "changed item lists".
      
      The fix is to track changes on the correct objects.
      8b1566aa
  3. 13 Jun, 2011 1 commit
  4. 10 Jun, 2011 1 commit
  5. 08 Jun, 2011 1 commit
  6. 06 Jun, 2011 6 commits
  7. 03 Jun, 2011 11 commits
  8. 02 Jun, 2011 1 commit
  9. 01 Jun, 2011 6 commits
    • Bjorn Munch's avatar
      Followup to 12607800, testing it in PB2 didn't work, trying again · aca402b6
      Bjorn Munch authored
      Be more explicit about path to (potential) plugin tests dirs
      aca402b6
    • Georgi Kodinov's avatar
      BUG 12610784: SET PASSWORD INCORRECTLY KEEP AN OLD EMPTY PASSWORD · dfd4dd67
      Georgi Kodinov authored
      The check for empty password in the user account was checking the wrong field.
      Fixed to check the proper password hash.
      Test case added.
      Fixed native_password and old_password plugins that suffered from the same
      problems.
      Unambuguated the auth_string ACL_USER member : previously it was used for 
      both password and the authentication string (depending on the plugin). Now
      fixed to contain either the authentication string specified or empty string.
      dfd4dd67
    • Jon Olav Hauglid's avatar
      Bug#11853126 RE-ENABLE CONCURRENT READS WHILE CREATING · edcd89ee
      Jon Olav Hauglid authored
                   SECONDARY INDEX IN INNODB
      
      This is a follow-up patch.
      
      This patch moves part of the new test coverage to a test
      file that is only run on debug builds since it used debug-
      only features and therefore broke the test case on
      release builds.
      edcd89ee
    • Bjorn Munch's avatar
      Bug #12607800 ADD HOOK TO INSTALL TESTS FROM IMPORTED FEATURE TREES · fd717fb5
      Bjorn Munch authored
      Sets INSTALL_PLUGINTESTDIR if any plugin/*/tests exist
      fd717fb5
    • Vinay Fisrekar's avatar
      Adding testcases for WL#5743 InnoDB: Lift the limit of index key prefixes · 46c2089d
      Vinay Fisrekar authored
      innodb_prefix_index_liftedlimit.test used for functional testing of increase in prefix index limit
      46c2089d
    • Jon Olav Hauglid's avatar
      Bug#11853126 RE-ENABLE CONCURRENT READS WHILE CREATING · 9b076952
      Jon Olav Hauglid authored
                   SECONDARY INDEX IN INNODB
      
      The patches for Bug#11751388 and Bug#11784056 enabled concurrent
      reads while creating secondary indexes in InnoDB. However, they
      introduced a regression. This regression occured if ALTER TABLE
      failed after the index had been added, for example during the
      lock upgrade needed to update .FRM. If this happened, InnoDB
      and the server got out of sync with regards to which indexes
      actually existed. Therefore the patch for Bug#11815600 again
      disabled concurrent reads.
      
      This patch re-enables concurrent reads. The original regression
      is fixed by splitting the ADD INDEX operation into two parts.
      First the new index is created but not made active. This is
      done while concurrent reads are allowed. The second part of
      the operation makes the index active (or reverts the change).
      This is done after lock upgrade, which prevents the original
      regression.
      
      In order to implement this change, the patch changes the storage
      API for in-place index creation. handler::add_index() is split
      into two functions, handler_add_index() and
      handler::final_add_index(). The former for creating indexes without
      making them visible and the latter for commiting (i.e. making
      visible) new indexes or reverting the changes.
      
      Large parts of this patch were written by Marko Mäkelä.
      
      Test case added to innodb_mysql_lock.test.
      9b076952
  10. 31 May, 2011 2 commits
  11. 30 May, 2011 4 commits
    • Davi Arnaut's avatar
      Bug#11766349 - 59443: query_cache_debug.test is occasionally very slow · c7d2ec7d
      Davi Arnaut authored
      The test case problem stemmed from the fact that a debug sync
      signal is a global variable that persists until overwritten
      by a new signal. This means that if two different signals
      are raised in sequence, a thread waiting for the first signal
      might miss it if the second signal sets the global variable
      before the thread wakes up.
      
      The solution is to deliver a subsequent signal only after the
      waiting thread has received it.
      
      mysql-test/t/query_cache_debug.test:
        Wait for signal to be delivered.
      c7d2ec7d
    • Bjorn Munch's avatar
      Bug #12604711 MTR SHOULD READ PLUGIN.DEFS FILES FROM IMPORTED FEATURE TREES · ec0b030f
      Bjorn Munch authored
      Added reading from plugin.defs files under plugins/*
      ec0b030f
    • Davi Arnaut's avatar
      Merge of mysql-5.1 into mysql-5.5. · 9f6ec599
      Davi Arnaut authored
      9f6ec599
    • Davi Arnaut's avatar
      Bug#12563279: REGRESSION IN HANDLING PRE-4.1 AUTHENTICATION PACKET · 9b68760f
      Davi Arnaut authored
      The problem is that clients implementing the 4.0 version of the
      protocol (that is, mysql-4.0) do not null terminate a string
      at the end of the authentication packet. These clients denote
      the end of the string with the end of the packet.
      
      Although this goes against the documented (see MySQL Internals
      ClientServer Protocol wiki) description of the protocol, these
      old clients still need to be supported.
      
      The solution is to support the documented and actual behavior
      of the clients. If a client is using the pre-4.1 version of
      the protocol, the end of a string in the authentication packet
      can either be denoted with a null character or by the end of
      the packet. This restores backwards compatibility with old
      clients implementing either the documented or actual behavior.
      
      sql/password.c:
        The scrambled message, as provided by the user, might not be
        properly null terminated. If this is the case, uninitialized
        memory past the end of the buffer could theoretically be
        accessed. To ensure that this is never the case, copy the
        scrambled message over to a null terminated auxiliar buffer.
      sql/sql_connect.cc:
        Use different execution paths to read strings depending on the
        protocol being used. If version 4.0 of the protocol is used,
        end of string can be denoted with a NUL character or by the
        end of the packet.
        
        If there are not enough bytes left after the current position
        of the buffer to satisfy the current string, the string is
        considered to be empty. This is required because old clients
        do not send the password string field if the password is empty.
      9b68760f
  12. 27 May, 2011 5 commits