1. 30 Sep, 2008 1 commit
  2. 29 Sep, 2008 1 commit
    • Alexey Botchkov's avatar
      Bug#37949 Crash if argument to SP is a subquery that returns more than one row · 67e34ee4
      Alexey Botchkov authored
           JOIN for the subselect wasn't cleaned if we came upon an error
           during sub_select() execution. That leads to the assertion failure
           in close_thread_tables()
      
           part of the 6.0 code backported
      
      per-file comments:
        mysql-test/r/sp-error.result
      Bug#37949 Crash if argument to SP is a subquery that returns more than one row 
          test result
      
        mysql-test/t/sp-error.test
      Bug#37949 Crash if argument to SP is a subquery that returns more than one row 
          test case
      
        sql/sp_head.cc
      Bug#37949 Crash if argument to SP is a subquery that returns more than one row 
          lex->unit.cleanup() call added if not substatement
      67e34ee4
  3. 23 Sep, 2008 1 commit
  4. 20 Sep, 2008 4 commits
    • Kristofer Pettersson's avatar
      Automerge · 99d71ad1
      Kristofer Pettersson authored
      99d71ad1
    • Kristofer Pettersson's avatar
      Bug#38469 invalid memory read and/or crash with utf8 text field, stored procedure, uservar · 222f5c44
      Kristofer Pettersson authored
                  
      A stored procedure involving substrings could crash the server on certain
      platforms because of invalid memory reads.
                
      During storing the new blob-field value, the cached value's address range
      overlapped that of the new field value. This caused problems when the 
      cached value storage was reallocated to provide access for a new 
      characater set representation. The patch checks the address ranges, and if
      they overlap, the new field value is copied to a new storage before it is
      converted to the new character set.
      
      
      mysql-test/r/sp.result:
        Added result set
      mysql-test/t/sp.test:
        Added test case
      sql/field.cc:
        The source and destination address ranges of a character conversion must not overlap or the 'from' address will be invalidated as the temporary value-
        object is re-allocated to fit the new character set.
      sql/field.h:
        Added comments
      222f5c44
    • Davi Arnaut's avatar
      Restore team tree name. · d85bc6d2
      Davi Arnaut authored
      d85bc6d2
    • Patrick Crews's avatar
      Bug#38311 Some tests use 'rm' which is not portable · aecdac4a
      Patrick Crews authored
      Substituted use of MTR's remove_file function in the tests
      Started with 5.0 tree and will clean up any offenders discovered during upmerge.
      aecdac4a
  5. 18 Sep, 2008 2 commits
  6. 17 Sep, 2008 2 commits
    • Tatiana A. Nurnberg's avatar
      auto-merge · 46969bd9
      Tatiana A. Nurnberg authored
      46969bd9
    • Tatiana A. Nurnberg's avatar
      Bug#37114: sql_mode NO_BACKSLASH_ESCAPES does not work properly with LOAD DATA INFILE · 3454250a
      Tatiana A. Nurnberg authored
      NO_BACKSLASH_ESCAPES was not heeded in LOAD DATA INFILE
      and SELECT INTO OUTFILE.  It is now.
      
      mysql-test/r/loaddata.result:
        Show that SQL-mode NO_BACKSLASH_ESCAPES is heeded in
        INFILE/OUTFILE, and that dump/restore cycles work!
      mysql-test/t/loaddata.test:
        Show that SQL-mode NO_BACKSLASH_ESCAPES is heeded in
        INFILE/OUTFILE, and that dump/restore cycles work!
      sql/sql_class.cc:
        Add function to enquire whether ESCAPED BY was given.
        When doing SELECT...OUTFILE, use ESCAPED BY if specifically
        given; otherwise use sensible default value depending on
        SQL-mode features NO_BACKSLASH_ESCAPES.
      sql/sql_class.h:
        Add function to enquire whether ESCAPED BY was given.
      sql/sql_load.cc:
        When doing LOAD DATA INFILE, use ESCAPED BY if specifically
        given; otherwise use sensible default value depending on
        SQL-mode features NO_BACKSLASH_ESCAPES.
      3454250a
  7. 16 Sep, 2008 2 commits
    • Matthias Leich's avatar
      Fix for Bug#38184 : main.federated fails sporadically · 756483c7
      Matthias Leich authored
      Details:
      - backport of some improvements which prevent sporadic
        failures from 5.1 to 5.0
      - @@GLOBAL.CONCURRENT_INSERT= 0 also for slave server
      - --sorted_result before all selects which have result
        sets with more than one row
      - Replace error numbers by error names
      756483c7
    • Vladislav Vaintroub's avatar
      Bug#35987 - post-review fix · 98e010de
      Vladislav Vaintroub authored
      Correct usage of strncat() in get_symbol_path()
      
      3rd parameter to strncat is changed to be count of 
      remaining bytes in the output buffer minus 1.
      
      
      98e010de
  8. 15 Sep, 2008 2 commits
    • Patrick Crews's avatar
      Bug#37938 Test "mysqldump" lacks various INSERT statements / values · ae88da9a
      Patrick Crews authored
      Moved fix for this bug to 5.0 as other mysqldump bugs seem tied to concurrent_insert being on
      Setting concurrent_insert off during this test as INSERTs weren't being 
      completely processed before the calls to mysqldump, resulting in failing tests.
      
      Altered .test file to turn concurrent_insert off during the test and to restore it
      to whatever the value was at the start of the test when complete.
      
      Re-recorded .result file to account for changes to variables in the test.
      ae88da9a
    • Vladislav Vaintroub's avatar
      Bug#35987 - crash report on windows doesn't resolve stack traces. · 1089cb91
      Vladislav Vaintroub authored
      The problem here is that symbols can not be loaded, because symbol
      path is not set and  default path does not include the directory
      where PDB is located.
      
      The problem is _not_ reproducible on the same machine where
      mysqld.exe is built - if PDB is not found in the symbol path,
      dbghelp would fallback to fully qualified PDB path as given in the
      executable header and on the build host this will succeed.
      
      The solution is to calculate symbol path and pass it to SymInitialize()
      call.
      1089cb91
  9. 11 Sep, 2008 1 commit
  10. 10 Sep, 2008 2 commits
  11. 09 Sep, 2008 1 commit
    • Ramil Kalimullin's avatar
      Fix for bug#37526: asymertic operator <=> in trigger · 835f3528
      Ramil Kalimullin authored
      Problem: <=> operator may return wrong results 
      comparing NULL and a DATE/DATETIME/TIME value.
      
      Fix: properly check NULLs.
      
      
      mysql-test/r/type_datetime.result:
        Fix for bug#37526: asymertic operator <=> in trigger
          - test result.
      mysql-test/t/type_datetime.test:
        Fix for bug#37526: asymertic operator <=> in trigger
          - test case.
      sql/item_cmpfunc.cc:
        Fix for bug#37526: asymertic operator <=> in trigger
          - if is_nulls_eq is TRUE Arg_comparator::compare_datetime() 
        should return 1 only if both arguments are NULL.
      835f3528
  12. 05 Sep, 2008 3 commits
    • unknown's avatar
      Merge from mysql-5.0.68-release · aa3341c1
      unknown authored
      aa3341c1
    • Ramil Kalimullin's avatar
      Fix for bug #39021: SELECT REGEXP BINARY NULL never returns · f024a8b6
      Ramil Kalimullin authored
      Problem: SELECT ... REGEXP BINARY NULL may lead to server crash/hang.
      
      Fix: properly handle NULL regular expressions.
      
      
      mysql-test/r/func_regexp.result:
        Fix for bug #39021: SELECT REGEXP BINARY NULL never returns
          - test result.
      mysql-test/t/func_regexp.test:
        Fix for bug #39021: SELECT REGEXP BINARY NULL never returns
          - test case.
      sql/item_cmpfunc.cc:
        Fix for bug #39021: SELECT REGEXP BINARY NULL never returns
          - checking regular expressions' null_value
        we tested it without a val_xxx() call before, which is wrong.
        Now Item_func_regex::regcomp() returns -1 in the case
        and allows to handle NULL expessions properly.
      sql/item_cmpfunc.h:
        Fix for bug #39021: SELECT REGEXP BINARY NULL never returns
          - checking regular expressions' null_value
        we tested it without a val_xxx() call before, which is wrong.
        Now Item_func_regex::regcomp() returns -1 in the case
        and allows to handle NULL expessions properly.
      f024a8b6
    • Ramil Kalimullin's avatar
      Merge · bb92371b
      Ramil Kalimullin authored
      bb92371b
  13. 03 Sep, 2008 3 commits
    • Ramil Kalimullin's avatar
      Fix for bug#38821: Assert table->auto_increment_field_not_null failed · 644471d5
      Ramil Kalimullin authored
      in open_table()
      
      Problem: repeating "CREATE... ( AUTOINCREMENT) ... SELECT" may lead to
      an assertion failure.
      
      Fix: reset table->auto_increment_field_not_null after each record 
      writing.
      
      
      mysql-test/r/create.result:
        Fix for bug#38821: Assert table->auto_increment_field_not_null failed 
        in open_table()
          - test result.
      mysql-test/t/create.test:
        Fix for bug#38821: Assert table->auto_increment_field_not_null failed 
        in open_table()
          - test case.
      sql/sql_insert.cc:
        Fix for bug#38821: Assert table->auto_increment_field_not_null failed 
        in open_table()
          - reset table->auto_increment_field_not_null after writing a record
        for "{CREATE, INSERT}..SELECT".
      644471d5
    • Gleb Shchepa's avatar
      merge with local tree · 25624b0a
      Gleb Shchepa authored
      25624b0a
    • Gleb Shchepa's avatar
      Bug #39002: The server crashes on the query: · 0e9cba18
      Gleb Shchepa authored
        INSERT .. SELECT .. ON DUPLICATE KEY UPDATE col=DEFAULT
      
      In order to get correct values from update fields that
      belongs to the SELECT part in the INSERT .. SELECT .. ON
      DUPLICATE KEY UPDATE statement, the server adds referenced
      fields to the select list. Part of the code that does this
      transformation is shared between implementations of
      the DEFAULT(col) function and the DEFAULT keyword (in
      the col=DEFAULT expression), and an implementation of
      the DEFAULT keyword is incomplete.
      
      
      mysql-test/r/default.result:
        Added test case for bug #39002.
      mysql-test/t/default.test:
        Added test case for bug #39002.
      sql/item.cc:
        The Item_default_value::transform() function has been
        modified to take into account the fact that the DEFAULT
        keyword has no arguments unlike the DEFAULT(col) function
        that always has an argument.
      0e9cba18
  14. 01 Sep, 2008 4 commits
    • Vladislav Vaintroub's avatar
      Bug#37226 Explicit call of my_thread_init() on Windows for every new thread. · 21948500
      Vladislav Vaintroub authored
      Bug#33031 app linked to libmysql.lib crash if run as service in vista under 
      localsystem
        
      
      There are some problems using DllMain hook functions on Windows that 
      automatically do global and per-thread initialization for libmysqld.dll
      
      1)per-thread initialization(DLL_THREAD_ATTACH)
      MySQL internally counts number of active threads that and causes a delay in in 
      my_end() if not all threads are exited. But,there are threads that can be 
      started either by Windows internally (often in TCP/IP scenarios) or by user 
      himself - those threads are not necessarily using libmysql.dll functionality, 
      but nonetheless the contribute to the count of open threads.
      
      2)process-initialization (DLL_PROCESS_ATTACH)
      my_init() calls WSAStartup that itself loads DLLs and can lead to a deadlock in 
      Windows loader.
      
      Fix is to remove dll initialization code from libmysql.dll in general case. I
      still leave an environment variable LIBMYSQL_DLLINIT, which if set to any value 
      will cause the old behavior (DLL init hooks will be called). This env.variable 
      exists only to prevent breakage of existing Windows-only applications that 
      don't do mysql_thread_init() and work ok today. Use of LIBMYSQL_DLLINIT is 
      discouraged and it will be removed in 6.0
      21948500
    • Davi Arnaut's avatar
      Restore tree name after merge from main. · 5dee15c7
      Davi Arnaut authored
      5dee15c7
    • Vladislav Vaintroub's avatar
      merge · 104636fe
      Vladislav Vaintroub authored
      104636fe
    • Mats Kindahl's avatar
      Merging in 5.0-rpl into 5.0-bugteam · d7655a72
      Mats Kindahl authored
      d7655a72
  15. 29 Aug, 2008 1 commit
  16. 28 Aug, 2008 2 commits
  17. 27 Aug, 2008 3 commits
    • Gleb Shchepa's avatar
      Bug #37799: SELECT with a BIT column in WHERE clause · a591f2cb
      Gleb Shchepa authored
                  returns unexpected result
      
      If:
        1. a table has a not nullable BIT column c1 with a length
           shorter than 8 bits and some additional not nullable
           columns c2 etc, and
        2. the WHERE clause is like: (c1 = constant) AND c2 ...,
      the SELECT query returns unexpected result set.
      
      
      The server stores BIT columns in a tricky way to save disk
      space: if column's bit length is not divisible by 8, the
      server places reminder bits among the null bits at the start
      of a record. The rest bytes are stored in the record itself,
      and Field::ptr points to these rest bytes.
      
      However if a bit length of the whole column is less than 8,
      there are no remaining bytes, and there is nothing to store in
      the record at its regular place. In this case Field::ptr points
      to bytes actually occupied by the next column in a record.
      If both columns (BIT and the next column) are NOT NULL,
      the Field::eq function incorrectly deduces that this is the
      same column, so query transformation/equal item elimination
      code (see build_equal_items_for_cond) may mix these columns
      and damage conditions containing references to them.
      
      
      mysql-test/r/type_bit.result:
        Added test case for bug #37799.
      mysql-test/t/type_bit.test:
        Added test case for bug #37799.
      sql/field.h:
        1. The Field::eq function has been modified to take types of
        comparing columns into account to distinguish between BIT and
        not BIT columns referencing the same bytes in a record.
        
        2. Unnecessary type comparison has been removed from the
        Field_bit::eq function (moved to Field::eq).
      a591f2cb
    • Joerg Bruehe's avatar
      Merge the bug fix development (37098: "unpackaged files") · 4bff6550
      Joerg Bruehe authored
      into the 5.0 team tree.
      4bff6550
    • Evgeny Potemkin's avatar
      Bug#38195: Incorrect handling of aggregate functions when loose index scan is · dcf82665
      Evgeny Potemkin authored
      used causes server crash.
            
      When the loose index scan access method is used values of aggregated functions
      are precomputed by it. Aggregation of such functions shouldn't be performed
      in this case and functions should be treated as normal ones.
      The create_tmp_table function wasn't taking this into account and this led to
      a crash if a query has MIN/MAX aggregate functions and employs temporary table
      and loose index scan.
      Now the JOIN::exec and the create_tmp_table functions treat MIN/MAX aggregate
      functions as normal ones when the loose index scan is used.
      
      
      mysql-test/r/group_min_max.result:
        Added a test case for the bug#38195.
      mysql-test/t/group_min_max.test:
        Added a test case for the bug#38195.
      sql/sql_select.cc:
        Bug#38195: Incorrect handling of aggregate functions when loose index scan is
        used causes server crash.
        The JOIN::exec and the create_tmp_table functions treat MIN/MAX aggregate
        functions as normal ones when the loose index scan is used.
      dcf82665
  18. 26 Aug, 2008 5 commits