1. 13 May, 2008 1 commit
    • unknown's avatar
      Fixed bug #36488: regexp returns false matches, concatenating · 61bb9c86
      unknown authored
                        with previous rows.
      
      The WHERE clause containing expression:
        CONCAT(empty_field1, empty_field2, ..., 'literal constant', ...)
          REGEXP 'regular expression'
      may return wrong matches.
      
      Optimization of the CONCAT function has been fixed.
      
      
      
      mysql-test/r/func_concat.result:
        Added test case for bug #36488.
      mysql-test/t/func_concat.test:
        Added test case for bug #36488.
      sql/item_strfunc.cc:
        Fixed bug #36488.
        The Item_func_concat::val_str method is optimized to
        use first non-empty argument of the CONCAT function for in-place
        result accumulation. This optimization is acceptable if that
        first argument is not a constant.
        However, current implementation checks this condition only for
        the first actual argument of the CONCAT function.
        So, the Item_func_concat::val_str method can corrupt values
        of, for example, literal strings by appending random data.
        
        The Item_func_concat::val_str method has been modified to take
        into account the ability to be modified in-place for the first
        non-empty argument.
      61bb9c86
  2. 06 May, 2008 2 commits
    • unknown's avatar
      revert the push of bug 35616. · 2da382de
      unknown authored
      2da382de
    • unknown's avatar
      Bug#35616: memory overrun on 64-bit linux on setting large values for keybuffer-size · 496de028
      unknown authored
      We could allocate chunks larger than 4GB, but did our size-accounting in 32-bit
      values. This could lead to spurious warnings, inaccurate accounting, and, in
      theory, data loss.
      
      Affected: 64-bit platforms. Debug-build (with safemalloc). At least one buffer
      larger than 4GB. For potential data loss, a re-alloc on such a buffer would be
      necessary.
      
      
      mysys/my_static.c:
        Make memory-accounting 64-bit safe.
      mysys/my_static.h:
        Make memory-accounting 64-bit safe.
        Move in struct for better alignment when 64-bit.
      496de028
  3. 05 May, 2008 1 commit
  4. 02 May, 2008 5 commits
  5. 01 May, 2008 4 commits
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0-bugteam · 1bbdacf6
      unknown authored
      into  pcrews-mac-local.local:/Users/pcrews/usr/local/bin/data0/build_work/mysql-5.0-trigs
      
      1bbdacf6
    • unknown's avatar
      Bug#36026 - Test funcs_1.<engine>_trig_03 failing on Windows · 2785c111
      unknown authored
      Bug#36028 - Test funcs_1.<engine>_trig_03e failing on Windows
      Bug#36029 - Test funcs_1.<engine>_trig_0407 failing on Windows
      Bug#36030 - Test funcs_1.<engine>_trig_08 failing on Windows
      
      Adding $MASTER_MYSOCK to init_win_path()
      When path names are short, master.sock ends up in MYSQL_TMP_DIR, but with longer path names,
      master.sock ends up in /tmp/<random_string>/ and these tests will fail due to path delimiter difference.
      
      New changeset to start with 5.0 -- Not all of these tests are present in 5.0, but want to keep mysqltest the same
      
      2785c111
    • unknown's avatar
      Fix for bug #35298: GROUP_CONCAT with DISTINCT can crash the server · 4769a764
      unknown authored
      The bug is a regression introduced by the patch for bug32798.
      
      The code in Item_func_group_concat::clear() relied on the 'distinct'
      variable to check if 'unique_filter' was initialized. That, however,
      is not always valid because Item_func_group_concat::setup() can do
      shortcuts in some cases w/o initializing 'unique_filter'.
      
      Fixed by checking the value of 'unique_filter' instead of 'distinct'
      before dereferencing.
      
      
      mysql-test/r/func_gconcat.result:
        Added test cases for bugs #35298 and #36024.
      mysql-test/t/func_gconcat.test:
        Added test cases for bugs #35298 and #36024.
      sql/item_sum.cc:
        Check if unique_filter != NULL before dereferencing it. Non-zero value
        of distinct does not always mean that unique_filter is initialized
        because Item_func_group_concat::setup() can do shortcuts is some cases
      4769a764
    • unknown's avatar
      Merge bk-internal:/home/bk/mysql-5.0 · e514cc59
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/work/merge-5.0-bugteam
      
      e514cc59
  6. 30 Apr, 2008 1 commit
  7. 28 Apr, 2008 5 commits
  8. 24 Apr, 2008 1 commit
    • unknown's avatar
      Bug#36023: Incorrect handling of zero length caused an assertion to fail. · 51b980ad
      unknown authored
      When a zero length is provided to the my_decimal_length_to_precision
      function along with unsigned_flag set to false it returns a negative value.
      For queries that employs temporary tables may cause failed assertion or
      excessive memory consumption while temporary table creation.
      
      Now the my_decimal_length_to_precision and the my_decimal_precision_to_length
      functions take unsigned_flag into account only if the length/precision
      argument is non-zero.
      
      
      mysql-test/t/type_decimal.test:
        Added a test case for the bug#36023: Incorrect handling of zero length caused
         an assertion to fail.
      mysql-test/r/type_decimal.result:
        Added a test case for the bug#36023: Incorrect handling of zero length caused
         an assertion to fail.
      sql/my_decimal.h:
        Bug#36023: Incorrect handling of zero length caused an assertion to fail.
        Now the my_decimal_length_to_precision and the my_decimal_precision_to_length
        functions take unsigned_flag into account only if the length/precision
        argument is non-zero.
      51b980ad
  9. 23 Apr, 2008 2 commits
  10. 22 Apr, 2008 3 commits
    • unknown's avatar
      Merge host.loc:/home/uchum/work/5.0-bugteam-35993 · dee04cb5
      unknown authored
      into  host.loc:/home/uchum/work/5.0-bugteam
      
      dee04cb5
    • unknown's avatar
      Fixed bug#36005: server crashes inside NOT IN clause subquery with · 5bb4282e
      unknown authored
                       impossible WHERE/HAVING clause
                       (subselect_single_select_engine::exec).
      
      Allocation and initialization of joined table list t1, t2... of
      subqueries like:
      
          NOT IN (SELECT ... FROM t1,t2,... WHERE 0)
      
      is optimized out, however server tries to traverse this list.
      
      
      mysql-test/r/subselect3.result:
        Added test case for bug#36005.
      mysql-test/t/subselect3.test:
        Added test case for bug#36005.
      sql/sql_select.cc:
        Fixed bug#36005.
        
        1. JOIN::prepare initializes JOIN::table counter (actually a size
           of the JOIN::join_tab array) and sets it to a number of joined tables.
        
        2. The make_join_statistics function (when called from JOIN::optimize)
           allocates and fills the JOIN::join_tab array.
           However, when optimizing subselect has impossible (definite false)
           WHERE or HAVING clause, optimizer skips call to make_join_statistics
           and leaves JOIN::join_tab == NULL.
        
        3. subselect_single_select_engine::exec does traversal of the JOIN::join_tab
           array and the server dies because array is not allocated but array
           counter is greater than 0.
        
        The JOIN::optimize method has been modified to reset the JOIN::table
        counter to 0 in cause of impossible WHERE/HAVING clause.
      5bb4282e
    • unknown's avatar
      Fixed bug #35993: memory corruption and crash with multibyte conversion. · 39e9cf67
      unknown authored
      Grouping or ordering of long values in not indexed BLOB/TEXT columns
      with GBK or BIG5 charsets crashes the server.
      
      MySQL server uses sorting (the filesort procedure) in the temporary
      table to evaluate the GROUP BY clause in case of lack of suitable index.
      That procedure takes into account only first @max_sort_length bytes
      (system variable, usually 1024) of TEXT/BLOB sorting key string.
      The my_strnxfrm_gbk and my_strnxfrm_big5 fill temporary keys
      with data of whole blob length instead of @max_sort_length bytes
      length. That buffer overrun has been fixed.
      
      
      mysql-test/r/ctype_gbk.result:
        Added test case for bug #35993.
      mysql-test/t/ctype_gbk.test:
        Added test case for bug #35993.
      strings/ctype-big5.c:
        Fixed bug #35993: memory corruption and crash with multibyte conversion.
        
        Buffer overrun has been fixed in the my_strnxfrm_big5 function.
      strings/ctype-gbk.c:
        Fixed bug #35993: memory corruption and crash with multibyte conversion.
        
        Buffer overrun has been fixed in the my_strnxfrm_gbk function.
      39e9cf67
  11. 21 Apr, 2008 1 commit
    • unknown's avatar
      BUG#36139 "float, zerofill, crash with subquery" · 84182140
      unknown authored
      - Make convert_zerofill_number_to_string() take into account that the 
        constant it is converting may evaluate to NULL.
      
      
      mysql-test/r/subselect.result:
        BUG#36139 "float, zerofill, crash with subquery"
        - Testcase
      mysql-test/t/subselect.test:
        BUG#36139 "float, zerofill, crash with subquery"
        - Testcase
      84182140
  12. 18 Apr, 2008 1 commit
  13. 17 Apr, 2008 1 commit
    • unknown's avatar
      Fix for Bug #34291 compile-amd64-debug-max-no-ndb missing · 9f8abf5c
      unknown authored
          
      Include several "BUILD/compile-*" files in a source tarball ("make dist" target)
      which might be useful to community users who want to build from source.
      
      When merging this up, the "BUILD/compile-*" file list needs to be checked.
      
      
      BUILD/Makefile.am:
        Fix for   Bug #34291  compile-amd64-debug-max-no-ndb missing
        
        Include several "BUILD/compile-*" files in a source tarball ("make dist" target)
        which might be useful to community users who want to build from source.
      9f8abf5c
  14. 10 Apr, 2008 2 commits
  15. 09 Apr, 2008 3 commits
    • unknown's avatar
      Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776/my50-bug15776 · cb420d60
      unknown authored
      into  zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776-encore/my50-bug15776-encore
      
      
      sql/field.cc:
        Auto merged
      sql/item_create.cc:
        Auto merged
      sql/sql_yacc.yy:
        Auto merged
      sql/share/errmsg.txt:
        Auto merged
      sql/unireg.h:
        Auto merged
      mysql-test/r/type_blob.result:
        manual merge.
      mysql-test/t/type_blob.test:
        manual merge.
      cb420d60
    • unknown's avatar
      Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776/my50-bug15776 · 2a999890
      unknown authored
      into  zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-build
      
      
      mysql-test/r/type_blob.result:
        Auto merged
      mysql-test/t/type_blob.test:
        Auto merged
      sql/field.cc:
        Auto merged
      sql/unireg.h:
        Auto merged
      2a999890
    • unknown's avatar
      Follow-up to B-g#15776, test failures on 64-bit linux. · 777ea051
      unknown authored
      Make maximum blob size to be 2**32-1, regardless of word size.
      
      Fix failure of timestamp with size of 2**31-1.  The method of
      rounding up to the nearest even number would overflow.
      
      
      mysql-test/r/type_blob.result:
        2**32-1 is not a special case for timestamp.
        
        Test 2**32-1 and 2**64 as the reliable test points for both 32-
        and 64-bit machines.  I'd like to test 2**32, but that would make 
        tests that vary between architectures.
        
        I'd like to generalize the tests by pulling the max blob size from
        the server, and then "eval"ing N-1, N, and N+1 instead of all these
        literal numbers, but I have not found a way to get UINT_MAX.
      mysql-test/t/type_blob.test:
        2**32-1 is not a special case for timestamp.
        
        Test 2**32-1 and 2**64 as the reliable test points for both 32-
        and 64-bit machines.  I'd like to test 2**32, but that would make 
        tests that vary between architectures.
        
        I'd like to generalize the tests by pulling the max blob size from
        the server, and then "eval"ing N-1, N, and N+1 instead of all these
        literal numbers, but I have not found a way to get UINT_MAX.
      sql/field.cc:
        Fix a bug where the round-to-even code for TIMESTAMP fields
        failed where the size would overflow the size to zero and then
        fail.
        
        Also, since we silently truncate the size of TIMESTAMP fields, set
        the maximum size we report is allowable to be the largest parsable
        number.
      sql/unireg.h:
        Make BLOB size the maximum that the packed value in 
        field_blob::get_length() allows.
      777ea051
  16. 04 Apr, 2008 3 commits
  17. 03 Apr, 2008 4 commits