1. 21 Aug, 2015 1 commit
    • Arun Kuruvila's avatar
      Bug#20198490 : LOWER_CASE_TABLE_NAMES=0 ON WINDOWS LEADS TO · f4ff086a
      Arun Kuruvila authored
                     PROBLEMS
      
      Description:- Server variable "--lower_case_tables_names"
      when set to "0" on windows platform which does not support
      case sensitive file operations leads to problems. A warning
      message is printed in the error log while starting the
      server with "--lower_case_tables_names=0". Also according to
      the documentation, seting "lower_case_tables_names" to "0"
      on a case-insensitive filesystem might lead to index
      corruption.
      
      Analysis:- The problem reported in the bug is:-
      Creating an INNODB table 'a' and executing a query, "INSERT
      INTO a SELECT a FROM A;" on a server started with
      "--lower_case_tables_names=0" and running on a
      case-insensitive filesystem leads innodb to flat spin.
      Optimizer thinks that "a" and "A" are two different tables
      as the variable "lower_case_table_names" is set to "0". As a
      result, optimizer comes up with a plan which does not need a
      temporary table. If the same table is used in select and
      insert, a temporary table is needed. This incorrect
      optimizer plan leads to infinite insertions.
      
      Fix:- If the server is started with
      "--lower_case_tables_names" set to 0 on a case-insensitive
      filesystem, an error, "The server option
      'lower_case_table_names'is configured to use case sensitive
      table names but the data directory is on a case-insensitive
      file system which is an unsupported combination. Please
      consider either using a case sensitive file system for your
      data directory or switching to a case-insensitive table name
      mode.", is printed in the server error log and the server
      exits.
      f4ff086a
  2. 19 Aug, 2015 1 commit
  3. 18 Aug, 2015 2 commits
    • Shishir Jaiswal's avatar
      Bug #16171518 - LOAD XML DOES NOT HANDLE EMPTY ELEMENTS · ee02650b
      Shishir Jaiswal authored
      DESCRIPTION
      ===========
      Inability of mysql LOAD XML command to handle empty XML
      tags i.e. <row><tag/></row>. Also the behaviour is wrong
      and (different than above) when there is a space in empty
      tag i.e. <row><tag /></row>
      
      ANALYSIS
      ========
      In read_xml() the case where we encounter a close tag ('/')
      we're decreasing the 'level' blindly which is wrong.
      Actually when its an without-space-empty-tag (succeeding
      char is '>'), we need to skip the decrement. In other words
      whenever we hit a close tag ('/'), decrease the 'level'
      only when (i) It's not an (without space) empty tag i.e.
      <tag/> or, (ii) It is of format <row col="val" .../>
      
      FIX
      ===
      The switch case for '/' is modified. We've removed the
      blind decrement of 'level'. We do it only when its not an
      without-space-empty-tag. Also we are setting 'in_tag' to
      false to let program know that we're done reading current
      tag (required in the case of format <row col="val" .../>)
      ee02650b
    • Karthik Kamath's avatar
      BUG#11754258: INCORRECT ERROR MESSAGE WHEN CREATING UNSAFE · 93ac0eb1
      Karthik Kamath authored
                    VIEW
      
      
      It appears that the code refactoring done as part of the
      patch for the MySQL BUG#11749859 fixed this issue. This
      issue is not reproducible on MySQL 5.5+ versions now.
      As part of this patch, the test file "mysqldump.test" has
      been updated to remove the comment which was referring to
      the bug and also the line which suppresses the warning.
      93ac0eb1
  4. 17 Aug, 2015 2 commits
    • Mithun C Y's avatar
      Merge branch 'mysql-5.1' into mysql-5.5 · 8fe07088
      Mithun C Y authored
      8fe07088
    • Mithun C Y's avatar
      Bug #21350175: SUBQUERIES IN PROCEDURE CLAUSE OF SELECT STATEMENT CAUSES SERVER FAILURES. · 557a57f3
      Mithun C Y authored
      Analysis :
      ==========
      During JOIN::prepare of sub-query which creates the
      derived tables we call setup_procedure. Here we call
      fix_fields for parameters of procedure clause. Calling
      setup_procedure at this point may cause issue. If
      sub-query is one of parameter being fixed it might
      lead to complicated dependencies on derived tables
      being prepared.
      
      SOLUTION :
      ==========
      In 5.6 with WL#6242, we have made procedure clause
      parameters can only be NUM, so sub-queries are not
      allowed as parameters. So in 5.5 we can block
      sub-queries in procedure clause parameters.
      This eliminates above conflicting dependencies.
      557a57f3
  5. 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
  6. 10 Aug, 2015 1 commit
  7. 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
  8. 05 Aug, 2015 2 commits
  9. 04 Aug, 2015 2 commits
  10. 03 Aug, 2015 4 commits
  11. 29 Jul, 2015 2 commits
  12. 24 Jul, 2015 1 commit
  13. 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
  14. 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
  15. 14 Jul, 2015 1 commit
  16. 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
  17. 10 Jul, 2015 3 commits
  18. 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
  19. 03 Jul, 2015 1 commit
  20. 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
  21. 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
  22. 25 Jun, 2015 1 commit
  23. 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