An error occurred fetching the project authors.
  1. 24 Dec, 2010 1 commit
    • Sergey Glukhov's avatar
      Bug#57810 case/when/then : Assertion failed: length || !scale · bc56dcea
      Sergey Glukhov authored
      ASSERT happens due to improper calculation of the max_length
      in Item_func_div object, if dividend has max_length == 0 then
      Item_func_div::max_length is set to 0 under some circumstances.
      The fix:
      If decimals == NOT_FIXED_DEC then set
      Item_func_div::max_length to max possible
      DOUBLE length value.
      
      
      mysql-test/r/func_math.result:
        test case
      mysql-test/t/func_math.test:
        test case
      sql/item_func.cc:
        The fix:
        If decimals == NOT_FIXED_DEC then set
        Item_func_div::max_length to max possible
        DOUBLE length value.
      bc56dcea
  2. 14 Dec, 2010 1 commit
    • Sergey Glukhov's avatar
      Fixed following problems: · fcb83cbf
      Sergey Glukhov authored
      --Bug#52157 various crashes and assertions with multi-table update, stored function
      --Bug#54475 improper error handling causes cascading crashing failures in innodb/ndb
      --Bug#57703 create view cause Assertion failed: 0, file .\item_subselect.cc, line 846
      --Bug#57352 valgrind warnings when creating view
      --Recently discovered problem when a nested materialized derived table is used
        before being populated and it leads to incorrect result
      
      We have several modes when we should disable subquery evaluation.
      The reasons for disabling are different. It could be
      uselessness of the evaluation as in case of 'CREATE VIEW'
      or 'PREPARE stmt', or we should disable subquery evaluation
      if tables are not locked yet as it happens in bug#54475, or
      too early evaluation of subqueries can lead to wrong result
      as it happened in Bug#19077.
      Main problem is that if subquery items are treated as const
      they are evaluated in ::fix_fields(), ::fix_length_and_dec()
      of the parental items as a lot of these methods have
      Item::val_...() calls inside.
      We have to make subqueries non-const to prevent unnecessary
      subquery evaluation. At the moment we have different methods
      for this. Here is a list of these modes:
      
      1. PREPARE stmt;
      We use UNCACHEABLE_PREPARE flag.
      It is set during parsing in sql_parse.cc, mysql_new_select() for
      each SELECT_LEX object and cleared at the end of PREPARE in
      sql_prepare.cc, init_stmt_after_parse(). If this flag is set
      subquery becomes non-const and evaluation does not happen.
      
      2. CREATE|ALTER VIEW, SHOW CREATE VIEW, I_S tables which
         process FRM files
      We use LEX::view_prepare_mode field. We set it before
      view preparation and check this flag in
      ::fix_fields(), ::fix_length_and_dec().
      Some bugs are fixed using this approach,
      some are not(Bug#57352, Bug#57703). The problem here is
      that we have a lot of ::fix_fields(), ::fix_length_and_dec()
      where we use Item::val_...() calls for const items.
      
      3. Derived tables with subquery = wrong result(Bug19077)
      The reason of this bug is too early subquery evaluation.
      It was fixed by adding Item::with_subselect field
      The check of this field in appropriate places prevents
      const item evaluation if the item have subquery.
      The fix for Bug19077 fixes only the problem with
      convert_constant_item() function and does not cover
      other places(::fix_fields(), ::fix_length_and_dec() again)
      where subqueries could be evaluated.
      
      Example:
      CREATE TABLE t1 (i INT, j BIGINT);
      INSERT INTO t1 VALUES (1, 2), (2, 2), (3, 2);
      SELECT * FROM (SELECT MIN(i) FROM t1
      WHERE j = SUBSTRING('12', (SELECT * FROM (SELECT MIN(j) FROM t1) t2))) t3;
      DROP TABLE t1;
      
      4. Derived tables with subquery where subquery
         is evaluated before table locking(Bug#54475, Bug#52157)
      
      Suggested solution is following:
      
      -Introduce new field LEX::context_analysis_only with the following
       possible flags:
       #define CONTEXT_ANALYSIS_ONLY_PREPARE 1
       #define CONTEXT_ANALYSIS_ONLY_VIEW    2
       #define CONTEXT_ANALYSIS_ONLY_DERIVED 4
      -Set/clean these flags when we perform
       context analysis operation
      -Item_subselect::const_item() returns
       result depending on LEX::context_analysis_only.
       If context_analysis_only is set then we return
       FALSE that means that subquery is non-const.
       As all subquery types are wrapped by Item_subselect
       it allow as to make subquery non-const when
       it's necessary.
      
      
      mysql-test/r/derived.result:
        test case
      mysql-test/r/multi_update.result:
        test case
      mysql-test/r/view.result:
        test case
      mysql-test/suite/innodb/r/innodb_multi_update.result:
        test case
      mysql-test/suite/innodb/t/innodb_multi_update.test:
        test case
      mysql-test/suite/innodb_plugin/r/innodb_multi_update.result:
        test case
      mysql-test/suite/innodb_plugin/t/innodb_multi_update.test:
        test case
      mysql-test/t/derived.test:
        test case
      mysql-test/t/multi_update.test:
        test case
      mysql-test/t/view.test:
        test case
      sql/item.cc:
        --removed unnecessary code
      sql/item_cmpfunc.cc:
        --removed unnecessary checks
        --THD::is_context_analysis_only() is replaced with LEX::is_ps_or_view_context_analysis()
      sql/item_func.cc:
        --refactored context analysis checks
      sql/item_row.cc:
        --removed unnecessary checks
      sql/item_subselect.cc:
        --removed unnecessary code
        --added DBUG_ASSERT into Item_subselect::exec()
          which asserts that subquery execution can not happen
          if LEX::context_analysis_only is set, i.e. at context
          analysis stage.
        --Item_subselect::const_item()
          Return FALSE if LEX::context_analysis_only is set.
          It prevents subquery evaluation in ::fix_fields &
          ::fix_length_and_dec at context analysis stage.
      sql/item_subselect.h:
        --removed unnecessary code
      sql/mysql_priv.h:
        --Added new set of flags.
      sql/sql_class.h:
        --removed unnecessary code
      sql/sql_derived.cc:
        --added LEX::context_analysis_only analysis intialization/cleanup
      sql/sql_lex.cc:
        --init LEX::context_analysis_only field
      sql/sql_lex.h:
        --New LEX::context_analysis_only field
      sql/sql_parse.cc:
        --removed unnecessary code
      sql/sql_prepare.cc:
        --removed unnecessary code
        --added LEX::context_analysis_only analysis intialization/cleanup
      sql/sql_select.cc:
        --refactored context analysis checks
      sql/sql_show.cc:
        --added LEX::context_analysis_only analysis intialization/cleanup
      sql/sql_view.cc:
        --added LEX::context_analysis_only analysis intialization/cleanup
      fcb83cbf
  3. 22 Nov, 2010 1 commit
  4. 11 Nov, 2010 1 commit
    • Tatiana A. Nurnberg's avatar
      Bug#43233: Some server variables are clipped during "update," not "check" stage · c4fa6a38
      Tatiana A. Nurnberg authored
      Bug#55794: ulonglong options of mysqld show wrong values.
      
      Port the few remaining system variables to the correct mechanism --
      range-check in check-stage (and throw error or warning at that point
      as needed and depending on STRICTness), update in update stage.
      Fix some signedness errors when retrieving sysvar values for display.
      
      mysql-test/r/variables.result:
        Show that we throw warnings or errors depending on strictness
        even for "special" variables now.
      mysql-test/t/variables.test:
        Show that we throw warnings or errors depending on strictness
        even for "special" variables now.
      sql/item_func.cc:
        show sys_var_ulonglong_ptr and SHOW_LONGLONG type variables as unsigned.
      sql/set_var.cc:
        move range-checking from update stage to check stage for the remaining
        few sys-vars that broke the pattern
      sql/set_var.h:
        add check functions.
      c4fa6a38
  5. 10 Nov, 2010 1 commit
  6. 27 Oct, 2010 1 commit
    • Sergey Glukhov's avatar
      Bug#57477 SIGFPE when dividing a huge number a negative number · c7371c9e
      Sergey Glukhov authored
      The problem is dividing by const value when
      the result is out of supported range.
      The fix:
      -return LONGLONG_MIN if the result is out of supported range for DIV operator.
      -return 0 if divisor is -1 for MOD operator.
      
      
      mysql-test/r/func_math.result:
        test case
      mysql-test/t/func_math.test:
        test case
      sql/item_func.cc:
        -return LONGLONG_MIN if the result is out of supported range for DIV operator.
        -return 0 if divisor is -1 for MOD operator.
      c7371c9e
  7. 18 Oct, 2010 1 commit
    • Sergey Glukhov's avatar
      Bug#54484 explain + prepared statement: crash and Got error -1 from storage engine · 127c721c
      Sergey Glukhov authored
      Subquery executes twice, at top level JOIN::optimize and ::execute stages.
      At first execution create_sort_index() function is called and
      FT_SELECT object is created and destroyed. HANDLER::ft_handler is cleaned up
      in the object destructor and at second execution FT_SELECT::get_next() method
      returns error.
      The fix is to reinit HANDLER::ft_handler field before re-execution of subquery.
      
      
      mysql-test/r/fulltext.result:
        test case
      mysql-test/t/fulltext.test:
        test case
      sql/item_func.cc:
        reinit ft_handler before re-execution of subquery
      sql/item_func.h:
        Fixed method name
      sql/sql_select.cc:
        reinit ft_handler before re-execution of subquery
      127c721c
  8. 14 Oct, 2010 1 commit
    • Davi Arnaut's avatar
      Bug#56096: STOP SLAVE hangs if executed in parallel with user sleep · 1d43e72a
      Davi Arnaut authored
      The root of the problem is that to interrupt a slave SQL thread
      wait, the STOP SLAVE implementation uses thd->awake(THD::NOT_KILLED).
      This appears as a spurious wakeup (e.g. from a sleep on a
      condition variable) to the code that the slave SQL thread is
      executing at the time of the STOP. If the code is not written
      to be spurious-wakeup safe, unexpected behavior can occur. For
      the reported case, this problem led to an infinite loop around
      the interruptible_wait() function in item_func.cc (SLEEP()
      function implementation).  The loop was not being properly
      restarted and, consequently, would not come to an end. Since the
      SLEEP function sleeps on a timed event in order to be killable
      and to perform periodic checks until the requested time has
      elapsed, the spurious wake up was causing the requested sleep
      time to be reset every two seconds.
      
      The solution is to calculate the requested absolute time only
      once and to ensure that the thread only sleeps until this
      time is elapsed. In case of a spurious wake up, the sleep is
      restarted using the previously calculated absolute time. This
      restores the behavior present in previous releases. If a slave
      thread is executing a SLEEP function, a STOP SLAVE statement
      will wait until the time requested in the sleep function
      has elapsed.
      
      mysql-test/extra/rpl_tests/rpl_start_stop_slave.test:
        Add test case for Bug#56096.
      mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result:
        Add test case result for Bug#56096.
      sql/item_func.cc:
        Reorganize interruptible_wait into a class so that the absolute
        time can be preserved across calls to the wait function. This
        allows the sleep to be properly restarted in the presence of
        spurious wake ups, including those generated by a STOP SLAVE.
      1d43e72a
  9. 20 Aug, 2010 1 commit
    • Georgi Kodinov's avatar
      Bug #55826: create table .. select crashes with when · 6bea77ae
      Georgi Kodinov authored
        KILL_BAD_DATA is returned
      
      Two problems discovered with the LEAST()/GREATEST() 
      functions:
      1. The check for a null value should happen even 
      after the second call to val_str() in the args. This is
      important because two subsequent calls to the same
      Item::val_str() may yield different results.
      Fixed by checking for NULL value before dereferencing
      the string result.
      
      2. While looping over the arguments and evaluating them 
      the loop should stop if there was an error evaluating so far
      or the statement was killed. Fixed by checking for error
      and bailing out.
      6bea77ae
  10. 19 Aug, 2010 1 commit
    • Alexander Barkov's avatar
      Bug#54916 GROUP_CONCAT + IFNULL truncates output · 7f987142
      Alexander Barkov authored
      Problem: a few functions did not calculate their max_length correctly.
      This is an after-fix for WL#2649 Number-to-string conversions".
      
      Fix: changing the buggy functions to calculate max_length
      using fix_char_length() introduced in WL#2649,
      instead of setting max_length directly
      
        mysql-test/include/ctype_numconv.inc
           Adding new tests
      
        mysql-test/r/ctype_binary.result
           Adding new tests
      
        mysql-test/r/ctype_cp1251.result
           Adding new tests
      
        mysql-test/r/ctype_latin1.result
           Adding new tests
      
        mysql-test/r/ctype_ucs.result
           Adding new tests
      
        mysql-test/r/ctype_utf8.result
           Adding new tests
      
        mysql-test/t/ctype_utf8.test
          Including ctype_numconv
      
        sql/item.h
          - Introducing new method fix_char_length_ulonglong(),
          for the cases when length is potentially greater
          than UINT_MAX32. This method removes a few
          instances of duplicate code, e.g. in item_strfunc.cc.
          - Setting collation in Item_copy properly. This change
          fixes wrong metadata on client side in some cases, when
          "binary" instead of the real character set was reported.
      
        sql/item_cmpfunc.cc
          - Using fix_char_length() and max_char_length() methods,
          instead of direct access to max_length, to calculate
          item length properly.
          - Moving count_only_length() in COALESCE after
          agg_arg_charsets_for_string_result(). The old
          order was incorrect and led to wrong length
          calucation in case of multi-byte character sets.
          
        sql/item_func.cc
          Fixing that count_only_length() didn't work
          properly for multi-byte character sets.
          Using fix_char_length() and max_char_length()
          instead of direct access to max_length.
      
        sql/item_strfunc.cc
          - Using fix_char_length(), fix_char_length_ulonglong(),
          max_char_length() instead of direct access to max_length.
          - Removing wierd condition: "if (collation.collation->mbmaxlen > 0)",
          which is never FALSE.
      7f987142
  11. 16 Aug, 2010 1 commit
  12. 13 Aug, 2010 2 commits
    • Georgi Kodinov's avatar
      merge · 53e0b31e
      Georgi Kodinov authored
      53e0b31e
    • Georgi Kodinov's avatar
      Bug #55615 and bug #55564 · 4bf81165
      Georgi Kodinov authored
      An user assignment variable expression that's 
      evaluated in a logical expression context 
      (Item::val_bool()) can be pre-calculated in a 
      temporary table for GROUP BY.
      However when the expression value is used after the
      temp table creation it was re-evaluated instead of
      being read from the temp table due to a missing 
      val_bool_result() method.
      Fixed by implementing the method.
      4bf81165
  13. 01 Aug, 2010 1 commit
    • Gleb Shchepa's avatar
      Bug #54461: crash with longblob and union or update with subquery · 80aa8824
      Gleb Shchepa authored
      Queries may crash, if
        1) the GREATEST or the LEAST function has a mixed list of
           numeric and LONGBLOB arguments and
        2) the result of such a function goes through an intermediate
           temporary table.
      
      An Item that references a LONGBLOB field has max_length of
      UINT_MAX32 == (2^32 - 1).
      
      The current implementation of GREATEST/LEAST returns REAL
      result for a mixed list of numeric and string arguments (that
      contradicts with the current documentation, this contradiction
      was discussed and it was decided to update the documentation).
      
      The max_length of such a function call was calculated as a
      maximum of argument max_length values (i.e. UINT_MAX32).
      
      That max_length value of UINT_MAX32 was used as a length for
      the intermediate temporary table Field_double to hold
      GREATEST/LEAST function result.
      
      The Field_double::val_str() method call on that field
      allocates a String value.
      
      Since an allocation of String reserves an additional byte
      for a zero-termination, the size of String buffer was
      set to (UINT_MAX32 + 1), that caused an integer overflow:
      actually, an empty buffer of size 0 was allocated.
      
      An initialization of the "first" byte of that zero-size
      buffer with '\0' caused a crash.
      
      The Item_func_min_max::fix_length_and_dec() has been
      modified to calculate max_length for the REAL result like
      we do it for arithmetical operators.
      
      
      ******
      Bug #54461: crash with longblob and union or update with subquery
      
      Queries may crash, if
        1) the GREATEST or the LEAST function has a mixed list of
           numeric and LONGBLOB arguments and
        2) the result of such a function goes through an intermediate
           temporary table.
      
      An Item that references a LONGBLOB field has max_length of
      UINT_MAX32 == (2^32 - 1).
      
      The current implementation of GREATEST/LEAST returns REAL
      result for a mixed list of numeric and string arguments (that
      contradicts with the current documentation, this contradiction
      was discussed and it was decided to update the documentation).
      
      The max_length of such a function call was calculated as a
      maximum of argument max_length values (i.e. UINT_MAX32).
      
      That max_length value of UINT_MAX32 was used as a length for
      the intermediate temporary table Field_double to hold
      GREATEST/LEAST function result.
      
      The Field_double::val_str() method call on that field
      allocates a String value.
      
      Since an allocation of String reserves an additional byte
      for a zero-termination, the size of String buffer was
      set to (UINT_MAX32 + 1), that caused an integer overflow:
      actually, an empty buffer of size 0 was allocated.
      
      An initialization of the "first" byte of that zero-size
      buffer with '\0' caused a crash.
      
      The Item_func_min_max::fix_length_and_dec() has been
      modified to calculate max_length for the REAL result like
      we do it for arithmetical operators.
      
      
      
      mysql-test/r/func_misc.result:
        Test case for bug #54461.
        
        ******
        Test case for bug #54461.
      mysql-test/t/func_misc.test:
        Test case for bug #54461.
        
        ******
        Test case for bug #54461.
      sql/item_func.cc:
        Bug #54461: crash with longblob and union or update with subquery
        
        The Item_func_min_max::fix_length_and_dec() has been
        modified to calculate max_length for the REAL result like
        we do it for arithmetical operators.
        
        ******
        Bug #54461: crash with longblob and union or update with subquery
        
        The Item_func_min_max::fix_length_and_dec() has been
        modified to calculate max_length for the REAL result like
        we do it for arithmetical operators.
      80aa8824
  14. 14 Jul, 2010 1 commit
    • Georgi Kodinov's avatar
      Bug #51876: crash/memory underrun when loading data with ucs2 · dbb643d6
      Georgi Kodinov authored
      and reverse() function
            
      3 problems fixed : 
      1. The reported problem : caused by incorrect parsing of 
      the file as ucs data resulting in wrong length of the parsed
      string. Fixed by truncating the invalid trailing bytes 
      (non-complete multibyte characters) when reading from the file
      2. LOAD DATA when reading from a proper UCS2 file wasn't 
      recognizing the new line characters. Fixed by first looking 
      if a byte is a new line (or any other special) character before
      reading it as a part of a multibyte character.
      3. When using user variables to hold the column data in LOAD
      DATA the character set of the user variable was set incorrectly
      to the database charset. Fixed by setting it to the charset
      specified by LOAD DATA (if any). 
      dbb643d6
  15. 08 Jul, 2010 1 commit
    • Davi Arnaut's avatar
      Bug#34043: Server loops excessively in _checkchunk() when safemalloc is enabled · f56dd32b
      Davi Arnaut authored
      Essentially, the problem is that safemalloc is excruciatingly
      slow as it checks all allocated blocks for overrun at each
      memory management primitive, yielding a almost exponential
      slowdown for the memory management functions (malloc, realloc,
      free). The overrun check basically consists of verifying some
      bytes of a block for certain magic keys, which catches some
      simple forms of overrun. Another minor problem is violation
      of aliasing rules and that its own internal list of blocks
      is prone to corruption.
      
      Another issue with safemalloc is rather the maintenance cost
      as the tool has a significant impact on the server code.
      Given the magnitude of memory debuggers available nowadays,
      especially those that are provided with the platform malloc
      implementation, maintenance of a in-house and largely obsolete
      memory debugger becomes a burden that is not worth the effort
      due to its slowness and lack of support for detecting more
      common forms of heap corruption.
      
      Since there are third-party tools that can provide the same
      functionality at a lower or comparable performance cost, the
      solution is to simply remove safemalloc. Third-party tools
      can provide the same functionality at a lower or comparable
      performance cost. 
      
      The removal of safemalloc also allows a simplification of the
      malloc wrappers, removing quite a bit of kludge: redefinition
      of my_malloc, my_free and the removal of the unused second
      argument of my_free. Since free() always check whether the
      supplied pointer is null, redudant checks are also removed.
      
      Also, this patch adds unit testing for my_malloc and moves
      my_realloc implementation into the same file as the other
      memory allocation primitives.
      
      client/mysqldump.c:
        Pass my_free directly as its signature is compatible with the
        callback type -- which wasn't the case for free_table_ent.
      f56dd32b
  16. 25 Jun, 2010 1 commit
    • Alexander Nozdrin's avatar
      Backport of revid:ingo.struewing@sun.com-20091223200354-r2uzbdkj2v6yv111 · 8f521b41
      Alexander Nozdrin authored
         Bug#47633 - assert in ha_myisammrg::info during OPTIMIZE
       
         The server crashed on an attempt to optimize a MERGE table with
         non-existent child table.
       
         mysql_admin_table() relied on the table to be successfully open
         if a table object had been allocated.
       
         Changed code to check return value of the open function before
         calling a handler:: function on it.
      
      mysql-test/r/merge.result:
        Backport of revid:ingo.struewing@sun.com-20091223200354-r2uzbdkj2v6yv111
            Bug#47633 - assert in ha_myisammrg::info during OPTIMIZE
            Updated result file.
      mysql-test/t/merge.test:
        Backport of revid:ingo.struewing@sun.com-20091223200354-r2uzbdkj2v6yv111
            Bug#47633 - assert in ha_myisammrg::info during OPTIMIZE
            Changed tests to respect changed TEMPORARY MERGE locking (unrelated).
            Changed tests to respect changed CREATE TABLE ... LIKE (unrelated).
            Changed tests to respect that no new tables can be created
            under LOCK TABLE (unrelated).
            Added test for Bug#47633.
        Changed error numbers to symbolic names.
        Added test for child locking for ALTER under LOCK TABLE.
        
        Since Bug 36171 is not pushed yet, not the whole patch has been backported.
      mysys/my_delete.c:
        Backport of revid:ingo.struewing@sun.com-20091223200354-r2uzbdkj2v6yv111
            Bug#47633 - assert in ha_myisammrg::info during OPTIMIZE
            Fixed error reporting.
            Fixed indentation.
      mysys/my_mmap.c:
        Backport of revid:ingo.struewing@sun.com-20091223200354-r2uzbdkj2v6yv111
            Bug#47633 - assert in ha_myisammrg::info during OPTIMIZE
            Added DBUG.
      sql/item_func.cc:
        Backport of revid:ingo.struewing@sun.com-20091223200354-r2uzbdkj2v6yv111
        Added Debug Sync point, required by merge_sync.test.
      sql/sql_table.cc:
        Backport of revid:ingo.struewing@sun.com-20091223200354-r2uzbdkj2v6yv111
            Bug#47633 - assert in ha_myisammrg::info during OPTIMIZE
            Do not call handler:: functions if the table was not opened
            successfully.
        Added Debug Sync point, required by merge_sync.test.
      storage/myisam/mi_check.c:
        Backport of revid:ingo.struewing@sun.com-20091223200354-r2uzbdkj2v6yv111
            Bug#47633 - assert in ha_myisammrg::info during OPTIMIZE
            Unmap memory before exchanging data files. Needed on Windows.
      storage/myisammrg/ha_myisammrg.cc:
        Backport of revid:ingo.struewing@sun.com-20091223200354-r2uzbdkj2v6yv111
        Added Debug Sync point, required by merge_sync.test.
        
        merge_sync.test will be introduced by a patch for Bug 36171,
        which is not pushed yet.
      8f521b41
  17. 14 May, 2010 1 commit
    • Alexander Nozdrin's avatar
      Patch for Bug#21818 (Return value of ROW_COUNT() is incorrect · 4333980a
      Alexander Nozdrin authored
      for ALTER TABLE, LOAD DATA).
      
      ROW_COUNT is now assigned according to the following rules:
      
        - In my_ok():
          - for DML statements: to the number of affected rows;
          - for DDL statements: to 0.
      
        - In my_eof(): to -1 to indicate that there was a result set.
      
          We derive this semantics from the JDBC specification, where int
          java.sql.Statement.getUpdateCount() is defined to (sic) "return the
          current result as an update count; if the result is a ResultSet
          object or there are no more results, -1 is returned".
      
        - In my_error(): to -1 to be compatible with the MySQL C API and
          MySQL ODBC driver.
      
        - For SIGNAL statements: to 0 per WL#2110 specification. Zero is used
          since that's the "default" value of ROW_COUNT in the diagnostics area.
      
      sql/protocol.cc:
        Fix a typo.
      sql/sql_class.h:
        - Introduce THD::get_row_count_func() / THD::set_row_count_func();
        - Remove the CF_HAS_ROW_COUNT define
      sql/sql_parse.cc:
        CF_HAS_ROW_COUNT was eliminated.
      4333980a
  18. 07 Apr, 2010 1 commit
    • Mats Kindahl's avatar
      WL#5030: Splitting mysql_priv.h · 46bd78b9
      Mats Kindahl authored
      Adding my_global.h first in all files using
      NO_EMBEDDED_ACCESS_CHECKS.
      
      Correcting a merge problem resulting from a changed definition
      of check_some_access compared to the original patches.
      46bd78b9
  19. 31 Mar, 2010 1 commit
    • Mats Kindahl's avatar
      WL#5030: Split and remove mysql_priv.h · 23d8586d
      Mats Kindahl authored
      This patch:
      
      - Moves all definitions from the mysql_priv.h file into
        header files for the component where the variable is
        defined
      - Creates header files if the component lacks one
      - Eliminates all include directives from mysql_priv.h
      - Eliminates all circular include cycles
      - Rename time.cc to sql_time.cc
      - Rename mysql_priv.h to sql_priv.h
      23d8586d
  20. 19 Mar, 2010 1 commit
    • Andrei Elkin's avatar
      Bug #51648 DBUG_SYNC_POINT is not defined on all platforms and mtr cant pre-check that · c3cd608a
      Andrei Elkin authored
      DBUG_SYNC_POINT has at least one strong limitation that it's not defined
      on all platforms. It has issues cooperating with @@debug.
      All in all its functionality is superseded by DEBUG_SYNC facility and
      there is no reason to maintain the old less flexible one.
      
      Fixed with adding debug_sync_set_action() function as a facility to set up
      a sync-action in the server sources code and re-writing existing simulations
      (found 3) to use it.
      Couple of tests have been reworked as well.
      
      The patch offers a pattern for setting sync-points in replication threads
      where the standard DEBUG_SYNC does not suffice to reach goals.
      
      
      
      
      
      mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test:
        rewriting the test from GET_LOCK()-based to DEBUG_SYNC-based;
        a pattern of usage DEBUG_SYNC for replication testing is provided.
      mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result:
        results are changed.
      mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test:
        rewriting the test from GET_LOCK()-based to DEBUG_SYNC-based;
        limiting the test to run only with MIXED binlog-format as the test last
        some 10 secs sensitively contributing to the total of tests run.
      mysql-test/suite/rpl/t/rpl_show_slave_running.test:
        rewriting the test from GET_LOCK()-based to DEBUG_SYNC-based.
      sql/debug_sync.cc:
        adding debug_sync_set_action() function as a facility to set up
        a sync-action in the server sources code.
      sql/debug_sync.h:
        externalizing debug_sync_set_action().
      sql/item_func.cc:
        purging sources from DBUG_SYNC_POINT.
      sql/mysql_priv.h:
        purging sources from DBUG_SYNC_POINT.
      sql/slave.cc:
        rewriting failure simulations to base on DEBUG_SYNC rather than GET_LOCK()-based DBUG_SYNC_POINT.
      sql/sql_repl.cc:
        removing an orphan failure simulation line because no counterpart in tests existing.
      c3cd608a
  21. 18 Mar, 2010 1 commit
    • Alexey Kopytov's avatar
      Bug #8433: Overflow must be an error · 2acfdc50
      Alexey Kopytov authored
       
      All numeric operators and functions on integer, floating point 
      and DECIMAL values now throw an 'out of range' error rather 
      than returning an incorrect value or NULL,  when the result is 
      out of supported range for the corresponding data type. 
       
      Some test cases in the test suite had to be updated 
      accordingly either because the test case itself relied on a 
      value returned in case of a numeric overflow, or because a 
      numeric overflow was the root cause of the corresponding bugs. 
      The latter tests are no longer relevant, since the expressions 
      used to trigger the corresponding bugs are not valid anymore. 
      However, such test cases have been adjusted and kept "for the 
      record". 
      
      mysql-test/r/func_math.result:
        Added test cases for bug #8433. 
        Updated results of the test case for bug #31236.
      mysql-test/r/func_misc.result:
        Streamlined test cases.
      mysql-test/r/func_test.result:
        Streamlined test cases.
      mysql-test/r/select.result:
        Streamlined test cases.
      mysql-test/r/sp.result:
        Streamlined test cases.
      mysql-test/r/strict.result:
        Streamlined test cases.
      mysql-test/r/type_newdecimal.result:
        Streamlined test cases.
      mysql-test/suite/sys_vars/r/sql_slave_skip_counter_basic.result:
        Streamlined test cases.
      mysql-test/suite/sys_vars/t/sql_slave_skip_counter_basic.test:
        Streamlined test cases.
      mysql-test/t/func_math.test:
        Added test cases for bug #8433. 
        Updated results of the test case for bug #31236.
      mysql-test/t/func_misc.test:
        Streamlined test cases.
      mysql-test/t/func_test.test:
        Streamlined test cases.
      mysql-test/t/select.test:
        Streamlined test cases.
      mysql-test/t/sp.test:
        Streamlined test cases.
      mysql-test/t/strict.test:
        Streamlined test cases.
      mysql-test/t/type_newdecimal.test:
        Streamlined test cases.
      sql/item_create.cc:
        Changed Item_func_cot() to be defined as a standalone Item
        rather than a combination of "1 / TAN(x)".
      sql/item_func.cc:
        Throw an 'out of range' error rather than returning an  
        incorrect value or NULL,  when the result of a numeric 
        operator or a function is out of supported range for  
        the corresponding data type.
      sql/item_func.h:
        Added validation helpers as inline methods of Item_func.
      sql/share/errmsg-utf8.txt:
        New ER_DATA_OUT_OF_RANGE error.
      2acfdc50
  22. 17 Mar, 2010 1 commit
    • Luis Soares's avatar
      BUG#51426: overflow for auto_increment column causes slave to stop · 92b5e586
      Luis Soares authored
      In BUG#49562 we fixed the case where numeric user var events
      would not serialize the flag stating whether the value was signed
      or unsigned (unsigned_flag). This fixed the case that the slave
      would get an overflow while treating the unsigned values as
      signed.
            
      In this bug, we find that the unsigned_flag can sometimes change
      between the moment that the user value is recorded for binlogging
      purposes and the actual binlogging time. Since we take the
      unsigned_flag from the runtime variable data, at binlogging time,
      and the variable value is comes from the copy taken earlier in
      the execution, there may be inconsistency in the
      User_var_log_event between the variable value and its
      unsigned_flag.
            
      We fix this by also copying the unsigned_flag of the
      user_var_entry when its value is copied, for binlogging
      purposes. Later, at binlogging time, we use the copied
      unsigned_flag and not the one in the runtime user_var_entry
      instance.
      92b5e586
  23. 23 Feb, 2010 1 commit
    • Vladislav Vaintroub's avatar
      Bug#43201 : Stack overrun when running sp-error test. · e451c502
      Vladislav Vaintroub authored
      It appears that stack overflow checks for recusrive stored procedure
      calls, that run in the normal server, did not work in embedded and were
       dummified with preprocessor magic( #ifndef EMBEDDED_SERVER ).
            
       The fix is to remove ifdefs, there is no reason not to run overflow checks
       and crash in deeply recursive calls. 
            
       Note: Start of the stack (thd->thread_stack variable) in embedded is not
      necessarily exact but stil provides the best guess. Unless the caller of 
      mysql_read_connect()   is already deep in the stack, thd->thread_stack 
      variable should approximate stack  start address well.
      e451c502
  24. 11 Feb, 2010 1 commit
    • Alexander Barkov's avatar
      WL#2649 Number-to-string conversions · 702166bc
      Alexander Barkov authored
      added:
        include/ctype_numconv.inc
        mysql-test/include/ctype_numconv.inc
        mysql-test/r/ctype_binary.result
        mysql-test/t/ctype_binary.test
        Adding tests
      
      modified:
      
        mysql-test/r/bigint.result
        mysql-test/r/case.result
        mysql-test/r/create.result
        mysql-test/r/ctype_cp1251.result
        mysql-test/r/ctype_latin1.result
        mysql-test/r/ctype_ucs.result
        mysql-test/r/func_gconcat.result
        mysql-test/r/func_str.result
        mysql-test/r/metadata.result
        mysql-test/r/ps_1general.result
        mysql-test/r/ps_2myisam.result
        mysql-test/r/ps_3innodb.result
        mysql-test/r/ps_4heap.result
        mysql-test/r/ps_5merge.result
        mysql-test/r/show_check.result
        mysql-test/r/type_datetime.result
        mysql-test/r/type_ranges.result
        mysql-test/r/union.result
        mysql-test/suite/ndb/r/ps_7ndb.result
        mysql-test/t/ctype_cp1251.test
        mysql-test/t/ctype_latin1.test
        mysql-test/t/ctype_ucs.test
        mysql-test/t/func_str.test
          Fixing tests
      
      
        @ sql/field.cc
           - Return str result using my_charset_numeric.
           - Using real multi-byte aware str_to_XXX functions
             to handle tricky charset values propely (e.g. UCS2)
        @ sql/field.h
           - Changing derivation of non-string field types to DERIVATION_NUMERIC.
           - Changing binary() for numeric/datetime fields to always
           return TRUE even if charset is not my_charset_bin. We need
           this to keep ha_base_keytype() return HA_KEYTYPE_BINARY.
           - Adding BINARY_FLAG into some fields, because it's not
           being set automatically anymore with
           "my_charset_bin to my_charset_numeric" change.
          - Changing derivation for numeric/datetime datatypes to a weaker
            value, to make "SELECT concat('string', field)" use character
            set of the string literal for the result of the function.
        @ sql/item.cc
           - Implementing generic val_str_ascii().
           - Using max_char_length() instead of direct read of max_length
             to make "tricky" charsets like UCS2 work.
             NOTE: in the future we'll possibly remove all direct reads of max_length
           - Fixing Item_num::safe_charset_converter().
             Previously it alligned binary string to
             character string (for example by adding leading 0x00
             when doing binary->UCS2 conversion). Now it just
             converts from my_charset_numbner to "tocs".
           - Using val_str_ascii() in Item::get_time() to make UCS2 arguments work.
           - Other misc changes
        @ sql/item.h
           - Changing MY_COLL_CMP_CONV and MY_COLL_ALLOW_CONV to
             bit operations instead of hard-coded bit masks.
           - Addding new method DTCollation.set_numeric().
           - Adding new methods to Item.
           - Adding helper functions to make code look nicer:
             agg_item_charsets_for_string_result()
             agg_item_charsets_for_comparison()
           - Changing charset for Item_num-derived items
             from my_charset_bin to my_charset_numeric
             (which is an alias for latin1).
        @ sql/item_cmpfunc.cc
           - Using new helper functions
           - Other misc changes
        @ sql/item_cmpfunc.h
           - Fixing strcmp() to return max_length=2.
             Previously it returned 1, which was wrong,
             because it did not fit '-1'.
        @ sql/item_func.cc
           - Using new helper functions
           - Other minor changes
        @ sql/item_func.h
           - Removing unused functions
           - Adding helper functions
             agg_arg_charsets_for_string_result()
             agg_arg_charsets_for_comparison()
           - Adding set_numeric() into constructors of numeric items.
           - Using fix_length_and_charset() and fix_char_length()
             instead of direct write to max_length.
        @ sql/item_geofunc.cc
           - Changing class for Item_func_geometry_type and
             Item_func_as_wkt from Item_str_func to
             Item_str_ascii_func, to make them return UCS2 result
             properly (when character_set_connection=ucs2).
        @ sql/item_geofunc.h
           - Changing class for Item_func_geometry_type and
             Item_func_as_wkt from Item_str_func to
             Item_str_ascii_func, to make them return UCS2 result
             properly (when @@character_set_connection=ucs2).
        @ sql/item_strfunc.cc
           - Implementing Item_str_func::val_str().
           - Renaming val_str to val_str_ascii for some items,
             to make them work with UCS2 properly.
           - Using new helper functions
           - All single-argument functions that expect string
             result now call this method:
             agg_arg_charsets_for_string_result(collation, args, 1);
             This enables character set conversion to @@character_set_connection
             in case of pure numeric input.
        @ sql/item_strfunc.h
           - Introducing Item_str_ascii_func - for functions
             which return pure ASCII data, for performance purposes,
             as well as for the cases when the old implementation
             of val_str() was heavily 8-bit oriented and implementing
             a UCS2-aware version is tricky.
        @ sql/item_sum.cc
           - Using new helper functions.
        @ sql/item_timefunc.cc
           - Using my_charset_numeric instead of my_charset_bin.
           - Using fix_char_length(), fix_length_and_charset()
             and fix_length_and_charset_datetime()
             instead of direct write to max_length.
           - Using tricky-charset aware function str_to_time_with_warn()
        @ sql/item_timefunc.h
           - Using new helper functions for charset and length initialization.
           - Changing base class for Item_func_get_format() to make
             it return UCS2 properly (when character_set_connection=ucs2).
        @ sql/item_xmlfunc.cc
           - Using new helper function
        @ sql/my_decimal.cc
           - Adding a new DECIMAL to CHAR converter
             with real multibyte support (e.g. UCS2)
      
        @ sql/mysql_priv.h
           - Introducing a new derivation level for numeric/datetime data types.
           - Adding macros for my_charset_numeric and MY_REPERTOIRE_NUMERIC.
           - Adding prototypes for str_set_decimal()
           - Adding prototypes for character-set aware str_to_xxx() functions.
        @ sql/protocol.cc
           - Changing charsetnr to "binary" client-side metadata for
             numeric/datetime data types.
        @ sql/time.cc
           - Adding to_ascii() helper function, to convert a string
             in any character set to ascii representation. In the
             future can be extended to understand digits written
             in various non-Latin word scripts.
           - Adding real multy-byte character set aware versions for str_to_XXXX,
             to make these these type of queries work correct:
               INSERT INTO t1 SET datetime_column=ucs2_expression;
         @  strings/ctype-ucs2.c
           - endptr was not calculated correctly. INSERTing of UCS2
             values into numeric columns returned warnings about
             truncated wrong data.
      702166bc
  25. 12 Jan, 2010 1 commit
  26. 07 Jan, 2010 1 commit
  27. 22 Dec, 2009 3 commits
    • Alexey Botchkov's avatar
      Bug#46570 test udf fails with valgrind · 4431827f
      Alexey Botchkov authored
          the value obtained by String::c_ptr() method not always
          has the ending zero. Particularly in this bug the
          dlsym() expects zero-ending string.
          The String::c_ptr_safe() is more correct here.
      
      per-file comments:
        sql/item_func.cc
      Bug#46570      test udf fails with valgrind
          c_ptr_safe() used for UDF parameters as the library expects
          zero-ending strings.
      4431827f
    • Sergey Glukhov's avatar
      Bug#47371 reference by same column name · 081bcb3b
      Sergey Glukhov authored
      At the end of execution top level join execution
      we cleanup this join with true argument.
      It leads to underlying join cleanup(subquery) with true argument too
      and to tmp_table_param->field array cleanup which is required later.
      The problem is that Item_func_set_user_var does not set
      result_filed which leads to unnecessary repeated excution of subquery
      on final stage.
      The fix is to set result_field for Item_func_set_user_var.
      
      
      mysql-test/r/count_distinct.result:
        test result
      mysql-test/r/user_var.result:
        test result
      mysql-test/t/count_distinct.test:
        test case
      mysql-test/t/user_var.test:
        test case
      sql/item_func.cc:
        At the end of execution top level join execution
        we cleanup this join with true argument.
        It leads to underlying join cleanup(subquery) with true argument too
        and to tmp_table_param->field array cleanup which is required later.
        The problem is that Item_func_set_user_var does not set
        result_filed which leads to unnecessary repeated excution of subquery
        on final stage.
        The fix is to set result_field for Item_func_set_user_var.
      081bcb3b
    • Sergei Golubchik's avatar
      WL#4738 streamline/simplify @@variable creation process · 1ad5bb1a
      Sergei Golubchik authored
      Bug#16565 mysqld --help --verbose does not order variablesBug#20413 sql_slave_skip_counter is not shown in show variables
      Bug#20415 Output of mysqld --help --verbose is incomplete
      Bug#25430 variable not found in SELECT @@global.ft_max_word_len;
      Bug#32902 plugin variables don't know their names
      Bug#34599 MySQLD Option and Variable Reference need to be consistent in formatting!
      Bug#34829 No default value for variable and setting default does not raise error
      Bug#34834 ? Is accepted as a valid sql mode
      Bug#34878 Few variables have default value according to documentation but error occurs  
      Bug#34883 ft_boolean_syntax cant be assigned from user variable to global var.
      Bug#37187 `INFORMATION_SCHEMA`.`GLOBAL_VARIABLES`: inconsistent status
      Bug#40988 log_output_basic.test succeeded though syntactically false.
      Bug#41010 enum-style command-line options are not honoured (maria.maria-recover fails)
      Bug#42103 Setting key_buffer_size to a negative value may lead to very large allocations 
      Bug#44691 Some plugins configured as MYSQL_PLUGIN_MANDATORY in can be disabled
      Bug#44797 plugins w/o command-line options have no disabling option in --help
      Bug#46314 string system variables don't support expressions
      Bug#46470 sys_vars.max_binlog_cache_size_basic_32 is broken
      Bug#46586 When using the plugin interface the type "set" for options caused a crash.
      Bug#47212 Crash in DBUG_PRINT in mysqltest.cc when trying to print octal number
      Bug#48758 mysqltest crashes on sys_vars.collation_server_basic in gcov builds
      Bug#49417 some complaints about mysqld --help --verbose output
      Bug#49540 DEFAULT value of binlog_format isn't the default value
      Bug#49640 ambiguous option '--skip-skip-myisam' (double skip prefix)
      Bug#49644 init_connect and \0
      Bug#49645 init_slave and multi-byte characters
      Bug#49646 mysql --show-warnings crashes when server dies
      
      
      CMakeLists.txt:
        Bug#44691 Some plugins configured as MYSQL_PLUGIN_MANDATORY in can be disabled
      client/mysql.cc:
        don't crash with --show-warnings when mysqld dies
      config/ac-macros/plugins.m4:
        Bug#44691 Some plugins configured as MYSQL_PLUGIN_MANDATORY in can be disabled
      include/my_getopt.h:
        comments
      include/my_pthread.h:
        fix double #define
      mysql-test/mysql-test-run.pl:
        run sys_vars suite by default
        properly recognize envirinment variables (e.g. MTR_MAX_SAVE_CORE) set to 0
        escape gdb command line arguments
      mysql-test/suite/sys_vars/r/rpl_init_slave_func.result:
        init_slave+utf8 bug
      mysql-test/suite/sys_vars/t/rpl_init_slave_func.test:
        init_slave+utf8 bug
      mysys/my_getopt.c:
        Bug#34599 MySQLD Option and Variable Reference need to be consistent in formatting!
        Bug#46586 When using the plugin interface the type "set" for options caused a crash.
        Bug#49640 ambiguous option '--skip-skip-myisam' (double skip prefix)
      mysys/typelib.c:
        support for flagset
      sql/ha_ndbcluster.cc:
        backport from telco tree
      sql/item_func.cc:
        Bug#49644 init_connect and \0
        Bug#49645 init_slave and multi-byte characters
      sql/sql_builtin.cc.in:
        Bug#44691 Some plugins configured as MYSQL_PLUGIN_MANDATORY in can be disabled
      sql/sql_plugin.cc:
        Bug#44691 Some plugins configured as MYSQL_PLUGIN_MANDATORY in can be disabled
        Bug#32902 plugin variables don't know their names
        Bug#44797 plugins w/o command-line options have no disabling option in --help
      sql/sys_vars.cc:
        all server variables are defined here
      storage/myisam/ft_parser.c:
        remove unnecessary updates of param->quot
      storage/myisam/ha_myisam.cc:
        myisam_* variables belong here
      strings/my_vsnprintf.c:
        %o and %llx
      unittest/mysys/my_vsnprintf-t.c:
        %o and %llx tests
      vio/viosocket.c:
        bugfix: fix @@wait_timeout to work with socket timeouts (vs. alarm thread)
      1ad5bb1a
  28. 10 Dec, 2009 1 commit
  29. 02 Dec, 2009 1 commit
    • Tor Didriksen's avatar
      Bug #49130 Running mtr tests with valgrind and debug produces lots of warnings · e22de3a3
      Tor Didriksen authored
      Use safe output formats for strings that are not null terminated.
      
      
      sql/item_func.cc:
        Use "%*.s" rather than "%s" format.
      sql/protocol.cc:
        Use "%*.s" rather than "%s" format.
      sql/sql_test.cc:
        Improve output from print_where()
         - output (nil) predicate if predicate is null
         - also output pointer value, for tracing of assignment and copying of predicates
      sql/sql_view.cc:
        Use "%*.s" rather than "%s" format.
      e22de3a3
  30. 25 Nov, 2009 1 commit
    • MySQL Build Team's avatar
      Backport into build-200911241145-5.1.40sp1 · ffea9806
      MySQL Build Team authored
      > ------------------------------------------------------------
      > revno: 3148.8.5
      > revision-id: davi.arnaut@sun.com-20091102112139-pztthzy6qj8jzomn
      > parent: svoj@sun.com-20091103091902-vwszwwpfi1f4zrpn
      > committer: Davi Arnaut <Davi.Arnaut@Sun.COM>
      > branch nick: 48370-5.1
      > timestamp: Mon 2009-11-02 09:21:39 -0200
      > message:
      >   Bug#48370: Absolutely wrong calculations with GROUP BY and decimal fields when using IF
      >   Bug#45261: Crash, stored procedure + decimal
      >   
      >   Revert fix for Bug#45261 due to unforeseen bugs.
      ffea9806
  31. 20 Nov, 2009 1 commit
    • Georgi Kodinov's avatar
      Bug #45261 : Crash, stored procedure + decimal · a21cd97c
      Georgi Kodinov authored
      Bug #48370  Absolutely wrong calculations with GROUP BY and
        decimal fields when using IF
      
      Added the test cases in the above two bugs for regression
      testing.
      Added additional tests that demonstrate a incomplete fix.
      Added a new factory method for Field_new_decimal to 
      create a field from an (decimal returning) Item.
      In the new method made sure that all the precision and 
      length variables are capped in a proper way. 
      This is required because Item's can have larger precision
      than the decimal fields and thus need to be capped when
      creating a field based on an Item type.
      Fixed the wrong typecast to Item_decimal.
      a21cd97c
  32. 10 Nov, 2009 3 commits
    • Davi Arnaut's avatar
      Backport of Bug#15192 to mysql-next-mr · e879919a
      Davi Arnaut authored
      ------------------------------------------------------------
      revno: 2597.4.17
      revision-id: sp1r-davi@mysql.com/endora.local-20080328174753-24337
      parent: sp1r-anozdrin/alik@quad.opbmk-20080328140038-16479
      committer: davi@mysql.com/endora.local
      timestamp: Fri 2008-03-28 14:47:53 -0300
      message:
        Bug#15192 "fatal errors" are caught by handlers in stored procedures
      
        The problem is that fatal errors (e.g.: out of memory) were being
        caught by stored procedure exception handlers which could cause
        the execution to not be stopped due to a continue handler.
      
        The solution is to not call any exception handler if the error is
        fatal and send the fatal error to the client.
      
      mysql-test/r/sp-error.result:
        Add test case result for Bug#15192
      mysql-test/t/sp-error.test:
        Add test case for Bug#15192
      mysys/my_alloc.c:
        Pass flag to signal fatal error in memory root allocations.
      sql/event_data_objects.cc:
        Use init_sql_alloc to initialize memory roots, which uses
        the sql error handler to push errors.
      sql/ha_partition.cc:
        Pass flag to signal fatal error instead of calling fatal_error.
      sql/item_func.cc:
        Pass flag to signal fatal error instead of calling fatal_error.
      sql/item_subselect.cc:
        Remove redundant fatal error, memory root already pushes error.
      sql/opt_sum.cc:
        Pass flag to signal fatal error instead of calling fatal_error.
      sql/sp_head.cc:
        Allocator already sets fatal error.
      sql/sql_class.h:
        A error must exist for it to be fatal. Pass flag to signal fatal
        error instead of calling fatal_error.
      sql/sql_insert.cc:
        Pass flag to signal fatal error instead of calling fatal_error.
      sql/sql_list.h:
        Pass flag to signal fatal error instead of calling fatal_error.
      sql/sql_parse.cc:
        Pass flag to signal fatal error instead of calling fatal_error.
      sql/sql_partition.cc:
        Pass flag to signal fatal error instead of calling fatal_error.
      sql/sql_select.cc:
        Pass flag to signal fatal error instead of calling fatal_error.
      sql/sql_servers.cc:
        Use init_sql_alloc to initialize memory roots, which uses
        the sql error handler to push errors.
      sql/sql_show.cc:
        Pass flag to signal fatal error instead of calling fatal_error.
      sql/sql_trigger.cc:
        Use init_sql_alloc to initialize memory roots, which uses
        the sql error handler to push errors.
      sql/sql_update.cc:
        Pass flag to signal fatal error instead of calling fatal_error.
      sql/tztime.cc:
        Use init_sql_alloc to initialize memory roots, which uses
        the sql error handler to push errors.
      e879919a
    • Davi Arnaut's avatar
      Backport of Bug#41860 to mysql-next-mr · 17871ade
      Davi Arnaut authored
      ------------------------------------------------------------
      revno: 3317
      revision-id: davi.arnaut@sun.com-20090522170916-fzc5ca3tjs9roy1t
      parent: patrick.crews@sun.com-20090522152933-ole8s3suy4zqyvku
      committer: Davi Arnaut <Davi.Arnaut@Sun.COM>
      branch nick: 41860-6.0
      timestamp: Fri 2009-05-22 14:09:16 -0300
      message:
        Bug#41860: Without Windows named pipe
      
        The problem was that the patch for Bug#10374 broke named pipe
        and shared memory transports on Windows due to a failure to
        implement a dummy poll method for transports other than BSD
        sockets. Another problem was that mysqltest lacked support
        for named pipe and shared memory connections, which lead to
        misleading test cases that were supposed run common queries
        over both transports.
      
        The solution is to properly implement, at the VIO layer, the
        poll and is_connected methods. The is_connected method is
        implemented for every suppported transport and the poll one
        only where it makes sense. Furthermore, support for named pipe
        and shared memory connections is added to mysqltest as to
        enable testing of both transports using the test suite.
      
      client/mysqltest.cc:
        Add support for named pipe and shared memory connections.
      include/violite.h:
        Move private functions to vio/vio_priv.h
        Add poll_read and is_connected methods.
      mysql-test/t/named_pipe.test:
        Run tests over a named pipe connection.
      mysql-test/t/shm.test:
        Run tests over a shared memory connection.
      sql/item_func.cc:
        Rename method.
      sql/sql_class.cc:
        Remove higher-level vio_is_connected implementation.
      sql/sql_class.h:
        Rename vio_is_connected to not conflict with the vio one.
        Verify that there is a valid vio.
      vio/vio.c:
        Add poll_read and is_connected methods.
      vio/vio_priv.h:
        Add private functions.
      vio/viosocket.c:
        Implement the is_connected method for the various transports.
      17871ade
    • Davi Arnaut's avatar
      Backport of Bug#10374 to mysql-next-mr · 80582b00
      Davi Arnaut authored
      ------------------------------------------------------------
      revno: 2597.37.3
      revision-id: sp1r-davi@mysql.com/endora.local-20080328123626-16430
      parent: sp1r-anozdrin/alik@quad.opbmk-20080327125300-11290
      committer: davi@mysql.com/endora.local
      timestamp: Fri 2008-03-28 09:36:26 -0300
      message:
        Bug#10374 GET_LOCK does not let connection to close on the server side if it's aborted
      
        The problem is that the server doesn't detect aborted connections which
        are waiting on a lock or sleeping (user sleep), wasting system resources
        for a connection that is already dead.
      
        The solution is to peek at the connection every five seconds to verify if
        the connection is not aborted. A aborted connection is detect by polling
        the connection socket for available data to be read or end of file and in
        case of eof, the wait is aborted and the connection killed.
      
      include/violite.h:
        Export vio_peek_read function.
      mysql-test/r/dirty_close.result:
        Add test case result for Bug#10374
      mysql-test/t/dirty_close.test:
        Add test case for Bug#10374
      sql/item_func.cc:
        While waiting for a condition to be signaled, check if the connection
        is not broken every INTERRUPT_INTERVAL seconds.
      sql/sql_class.cc:
        Add function which checks if the client connection was aborted.
      sql/sql_class.h:
        Add function prototype.
      vio/viosocket.c:
        Add poll and peek functions for Windows and Unix.
      80582b00
  33. 02 Nov, 2009 1 commit
  34. 14 Oct, 2009 1 commit
    • Konstantin Osipov's avatar
      Backport of: · 9b41c753
      Konstantin Osipov authored
      ----------------------------------------------------------
      revno: 2617.22.5
      committer: Konstantin Osipov <kostja@sun.com>
      branch nick: mysql-6.0-runtime
      timestamp: Tue 2009-01-27 05:08:48 +0300
      message:
        Remove non-prefixed use of HASH.
        Always use my_hash_init(), my_hash_inited(), my_hash_search(),
        my_hash_element(), my_hash_delete(), my_hash_free() rather
        than non-prefixed counterparts (hash_init(), etc).
        Remove the backward-compatible defines.
      9b41c753
  35. 13 Oct, 2009 1 commit
    • Alexey Kopytov's avatar
      Backport of the patch for bug #8457 "Precision math: DIV · 7e3b4d21
      Alexey Kopytov authored
      returns incorrect result with large decimal value" 
       
      For the DIV operator, neither operands nor result were checked 
      for integer overflows. 
       
      This patch changes the DIV behavior for non-integer operands as 
      follows: if either of the operands has a non-integer type, 
      convert both operands to the DECIMAL type, then calculate the 
      division using DECIMAL arithmetics. Convert the resulting 
      DECIMAL value into BIGINT [UNSIGNED] if it fits into the 
      corresponding range, or throw an 'out of range' error 
      otherwise. 
      
      mysql-test/r/func_math.result:
        Added a test case for bug #8457.
        Fixed results for a test case depending on the wrong behavior.
      mysql-test/r/type_varchar.result:
        Fixed results for a test case depending on the wrong behavior.
      mysql-test/t/func_math.test:
        Added a test case for bug #8457.
      sql/item_func.cc:
        If either of the operands has a non-integer type, convert both 
        operands to the DECIMAL type, then calculate the division using 
        DECIMAL arithmetics. Convert the resulting DECIMAL value into 
        BIGINT [UNSIGNED] if it fits into the corresponding range, or 
        throw an 'out of range' error otherwise.
      7e3b4d21