1. 12 Aug, 2015 1 commit
    • Aditya A's avatar
      Bug #21025880 DUPLICATE UK VALUES IN READ-COMMITTED (AGAIN) · 608efca4
      Aditya A authored
      PROBLEM
      
      Whenever we insert in unique secondary index we take shared
      locks on all possible duplicate record present in the table.
      But while during a replace on the unique secondary index ,
      we take exclusive and locks on the all duplicate record.
      When the records are deleted, they are first delete marked
      and later purged by the purge thread. While purging the
      record we call the lock_update_delete() which in turn calls
      lock_rec_inherit_to_gap() to inherit locks of the deleted
      records. In repeatable read mode we inherit all the locks
      from the record to the next record  but in the read commited
      mode we skip inherting them as gap type locks. We make a
      exception here if the lock on the records is  in shared mode
      ,we assume that it is set during insert for unique secondary
      index and needs to be inherited to stop constraint violation.
      We didnt handle the case when exclusive locks are set during
      replace, we skip inheriting locks of these records and hence
      causing constraint violation.
      
      FIX
      
      While inheriting the locks,check whether the transaction is
      allowed to do TRX_DUP_REPLACE/TRX_DUP_IGNORE, if true
      inherit the locks.
      
      [ Revewied by Jimmy #rb9709]
      608efca4
  2. 10 Aug, 2015 1 commit
  3. 07 Aug, 2015 2 commits
    • Ajo Robert's avatar
      Merge branch 'mysql-5.1' into mysql-5.5 · 552b1c8a
      Ajo Robert authored
      552b1c8a
    • Ajo Robert's avatar
      Bug #20760261 mysqld crashed in materialized_cursor:: · f3dce250
      Ajo Robert authored
      send_result_set_metadata
      
      Analysis
      --------
      Cursor inside trigger accessing NEW/OLD row leads server exit.
      
      The reason for the bug was that implementation of function
      create_tmp_table() was not considering Item::TRIGGER_FIELD_ITEM
      as possible alternative for type of class being instantiated.
      This was resulting in a mismatch between a number of columns
      in result list and temp table definition. This mismatch leads
      to the failure of assertion
      DBUG_ASSERT(send_result_set_metadata.elements == item_list.elements)
      in the method Materialized_cursor::send_result_set_metadata
      in debug mode.
      
      Fix:
      ---
      Added code to consider Item::TRIGGER_FIELD_ITEM as valid
      type while creating fields.
      f3dce250
  4. 05 Aug, 2015 2 commits
  5. 04 Aug, 2015 2 commits
  6. 03 Aug, 2015 4 commits
  7. 29 Jul, 2015 2 commits
  8. 24 Jul, 2015 1 commit
  9. 23 Jul, 2015 1 commit
    • Nisha Gopalakrishnan's avatar
      BUG#19886430: VIEW CREATION WITH NAMED COLUMNS, OVER UNION, · b5380e09
      Nisha Gopalakrishnan authored
                    IS REJECTED.
      
      Analysis
      ========
      
      View creation with named columns over UNION is rejected.
      Consider the following view definition:
      
      CREATE VIEW v1 (fld1, fld2) AS SELECT 1 AS a, 2 AS b
      UNION ALL SELECT 1 AS a, 1 AS a;
      
      A 'duplicate column' error was reported due to the duplicate
      alias name in the secondary SELECT. The VIEW column names
      are either explicitly specified or determined from the
      first SELECT (which can be auto generated if not specified).
      Since a duplicate column name check was performed even
      for the secondary SELECTs, an error was reported.
      
      Fix
      ====
      
      Check for duplicate column names only for the named
      columns if specified or only for the first SELECT.
      b5380e09
  10. 16 Jul, 2015 1 commit
    • Sreeharsha Ramanavarapu's avatar
      Bug #21143080: UPDATE ON VARCHAR AND TEXT COLUMNS PRODUCE · 888fabd6
      Sreeharsha Ramanavarapu authored
                     INCORRECT RESULTS
      
      Issue:
      -----
      Updating varchar and text fields in the same update
      statement can produce incorrect results. When a varchar
      field is assigned to the text field and the varchar field
      is then set to a different value, the text field's result
      contains the varchar field's new value.
      
      SOLUTION:
      ---------
      Currently the blob type does not allocate space for the
      string to be stored. Instead it contains a pointer to the
      varchar string. So when the varchar field is changed as
      part of the update statement, the value contained in the
      blob also changes.
      
      The fix would be to actually store the value by allocating
      space for the blob's string. We can avoid allocating this
      space when the varchar field is not being written into.
      888fabd6
  11. 14 Jul, 2015 1 commit
  12. 13 Jul, 2015 2 commits
    • Tor Didriksen's avatar
      Bug #20168526 YASSL: CORRUPT SSL-KEY CRASHES CLIENT · 067ae38c
      Tor Didriksen authored
      Post-push fix: broken build on windows.
      The problem is min/max macros from windows.h
      which interfere with a template function callex max.
      
      Solution: ADD_DEFINITIONS(-DNOMINMAX)
      067ae38c
    • Sreeharsha Ramanavarapu's avatar
      Bug #20777016: DELETE CHECKS PRIVILEGES ON THE WRONG · 6fb2cdbc
      Sreeharsha Ramanavarapu authored
                     DATABASE WHEN USING TABLE ALIASES
      
      Issue:
      -----
      When using table aliases for deleting, MySQL checks
      privileges against the current database and not the
      privileges on the actual table or database the table
      resides.
      
      
      SOLUTION:
      ---------
      While checking privileges for multi-deletes,
      correspondent_table should be used since it points to the
      correct table and database.
      6fb2cdbc
  13. 10 Jul, 2015 3 commits
  14. 08 Jul, 2015 5 commits
    • Robert Golebiowski's avatar
      Bug #20774956: THREAD_POOL.THREAD_POOL_CONNECT HANGS WHEN RUN ON A · 7255ae6c
      Robert Golebiowski authored
      YASSL-COMPILED SERVER/CLIENT
      
      Description: thread_pool.thread_pool_connect hangs when the server and
      client are compiled with yaSSL.
      
      Bug-fix: Test thread_pool.thread_pool_connect was temporary disabled for
      yaSSL. However, now that yaSSL is fixed it runs OK. The bug was
      introduced by one of the yaSSL updates. set_current was not working for
      i == 0. Now this is fixed. YASSL is updated to 2.3.7d
      7255ae6c
    • Robert Golebiowski's avatar
      Bug #21025377 CAN'T CONNECT TO SSL ENABLED SERVER FIRST 30 SEC AFTER · e7ff2040
      Robert Golebiowski authored
      INITIAL STARTUP
      
      Description: By using mysql_ssl_rsa_setup to get SSL enabled server
      (after running mysqld --initialize) server don't answer properly
      to "mysqladmin ping" first 30 secs after startup.
      
      Bug-fix: YASSL validated certificate date to the minute but should have
      to the second. This is why the ssl on the server side was not up right
      away after new certs were created with mysql_ssl_rsa_setup. The fix for
      that was submitted by Todd. YASSL was updated to 2.3.7c.
      e7ff2040
    • Robert Golebiowski's avatar
      Bug #20168526 YASSL: CORRUPT SSL-KEY CRASHES CLIENT · c9685a78
      Robert Golebiowski authored
      Affects at least 5.6 and 5.7. In customer case, the "client" happened to
      be a replication slave, therefore his server crashed.
      
      Bug-fix:
      The bug was in yassl. Todd Ouska has provided us with the patch.
      
      (cherry picked from commit 42ffa91aad898b02f0793b669ffd04f5c178ce39)
      c9685a78
    • Shishir Jaiswal's avatar
      Bug #20802751 - SEGMENTATION FAILURE WHEN RUNNING · bf681d6b
      Shishir Jaiswal authored
                      MYSQLADMIN -U ROOT -P
      
      DESCRIPTION
      ===========
      Crash occurs when no command is given while executing
      mysqladmin utility.
      
      ANALYSIS
      ========
      In mask_password() the final write to array 'temp_argv'
      is done without checking if corresponding index 'argc'
      is valid (non-negative) or not. In case its negative
      (would happen when this function is called with 'argc'=0),
      it may cause a SEGFAULT. Logically in such a case,
      mask_password() should not have been called as it would do
      no valid thing.
      
      FIX
      ===
      mask_password() is now called after checking 'argc'. This
      function is now called only when 'argc' is positive
      otherwise the process terminates
      bf681d6b
    • Debarun Banerjee's avatar
      BUG#16613004 PARTITIONING DDL, CRASH IN FIELD_VARSTRING::CMP_MAX · 359f102a
      Debarun Banerjee authored
      Problem :
      ---------
      The specific issue reported in this bug is with range/list column
      value that is allocated and initialized by evaluating partition
      expression(item tree) during execution. After evaluation the range
      list value is marked fixed [part_column_list_val]. During next
      execution, we don't re-evaluate the expression and use the old value
      since it is marked fixed.
      
      Solution :
      ----------
      One way to solve the issue is to mark all column values as not fixed
      during clone so that the expression is always re-evaluated once we
      attempt partition_info::fix_column_value_functions() after cloning
      the part_info object during execution of DDL on partitioned table.
      Reviewed-by: default avatarJimmy Yang <Jimmy.Yang@oracle.com>
      Reviewed-by: default avatarMattias Jonsson <mattias.jonsson@oracle.com>
      
      RB: 9424
      359f102a
  15. 03 Jul, 2015 1 commit
  16. 02 Jul, 2015 1 commit
    • Praveenkumar Hulakund's avatar
      Bug#18487951 - QUERY_CACHE_MIN_RES_UNIT SET TO ZERO, CRASHES IN QUERY_CACHE::FIND_BIN · 7ce304df
      Praveenkumar Hulakund authored
      Valid min value for query_cache_min_res_unit is 512. But attempt
      to set value greater than or equal to the ULONG_MAX(max value) is
      resulting query_cache_min_res_unit value to 0. This result in
      crash while searching for memory block lesser than the valid
      min value to store query results.
      
      Free memory blocks in query cache are stored in bins according
      to their size. The bins are stored in size descending order.
      For the memory block request the appropriate bin is searched using
      binary search algorithm. The minimum free memory block request
      expected is 512 bytes. And the appropriate bin is searched for block
      greater than or equals to 512 bytes.
      
      Because of the bug the query_cache_min_res_unit is set to 0. Due
      to which there is a chance of request for memory blocks lesser
      than the minimum size in free memory block bins. Search for bin
      for this invalid input size fails and returns garbage index.
      Accessing bins array element with this index is causing the issue
      reported.
      
      The valid value range for the query_cache_min_res_unit is
      512 to ULONG_MAX(when value is greater than the max allowed value,
      max allowed value is used i.e ULONG_MAX). While setting result unit
      block size (query_cache_min_res_unit), size is memory aligned by
      using a macro ALIGN_SIZE. The ALIGN_SIZE logic is as below,
      
        (input_size + sizeof(double) - 1) & ~(sizeof(double) - 1)
      
      For unsigned long type variable when input_size is greater than
      equal to ULONG_MAX-(sizeof(double)-1), above expression is
      resulting in value 0.
      
      Fix:
      -----
      Comparing value set for query_cache_min_res_unit with max
      aligned value which can be stored in ulong type variable.
      If it is greater then setting it to the max aligned value for
      ulong type variable.
      7ce304df
  17. 30 Jun, 2015 1 commit
    • Arun Kuruvila's avatar
      Bug #20772273 : MYSQLIMPORT --USE-THREADS DOESN'T USE · 7c5d18e2
      Arun Kuruvila authored
                      MULTIPLE THREADS
      
      Description:- The utility "mysqlimport" does not use
      multiple threads for the execution with option
      "--use-threads". "mysqlimport" while importing multiple
      files and multiple tables, uses a single thread even if the
      number of threads are specified with "--use-threads" option.
      
      Analysis:- This utility uses ifdef HAVE_LIBPTHREAD to check
      for libpthread library and if defined uses libpthread
      library for mutlithreaing. Since HAVE_LIBPTHREAD is not
      defined anywhere in the source, "--use-threads" option is
      silently ignored.
      
      Fix:- "-DTHREADS" is set to the COMPILE_FLAGS  which will
      enable pthreads. HAVE_LIBPTHREAD macro is removed.
      7c5d18e2
  18. 25 Jun, 2015 1 commit
  19. 24 Jun, 2015 2 commits
    • Yashwant Sahu's avatar
    • Debarun Banerjee's avatar
      BUG#20310212 PARTITION DDL- CRASH AFTER THD::NOCHECK_REGISTER_ITEM_ · 0eadadad
      Debarun Banerjee authored
      Problem :
      ---------
      Issue-1: The root cause for the issues is that (col1 > 1) is not a
      valid partition function and we should have thrown error at much early
      stage [partition_info::check_partition_info]. We are not checking
      sub-partition expression when partition expression is NULL.
      
      Issue-2: Potential issue for future if any partition function needs to
      change item tree during open/fix_fields. We should release changed
      items, if any, before doing closefrm when we open the partitioned table
      during creation in create_table_impl.
      
      Solution :
      ----------
      1.check_partition_info() - Check for sub-partition expression even if no
      partition expression.
      [partition by ... columns(...) subpartition by hash(<expr>)]
      
      2.create_table_impl() - Assert that the change list is empty before doing
      closefrm for partitioned table. Currently no supported partition function
      seems to be changing item tree during open.
      Reviewed-by: default avatarMattias Jonsson <mattias.jonsson@oracle.com>
      
      RB: 9345
      0eadadad
  20. 23 Jun, 2015 3 commits
  21. 22 Jun, 2015 2 commits
  22. 19 Jun, 2015 1 commit
    • Annamalai Gurusami's avatar
      Bug #20762798 FK DDL: CRASH IN DICT_FOREIGN_REMOVE_FROM_CACHE · db2ed27e
      Annamalai Gurusami authored
      Problem:
      
      If we add a referential integrity constraint with a duplicate
      name, an error occurs.  The foreign key object would not have
      been added to the dictionary cache.  In the error path, there
      is an attempt to remove this foreign key object. Since this
      object is not there, the search returns a NULL result.
      De-referencing the null object results in this crash.
      
      Solution:
      
      If the search to the foreign key object failed, then don't
      attempt to access it.
      
      rb#9309 approved by Marko.
      db2ed27e