An error occurred fetching the project authors.
  1. 28 Feb, 2008 1 commit
    • unknown's avatar
      Bug#33851 Passing UNSIGNED param to EXECUTE returns ERROR 1210 · 8d4c99e3
      unknown authored
      The problem is that passing anything other than a integer to a limit
      clause in a prepared statement would fail. This limitation was introduced
      to avoid replication problems (e.g: replicating the statement with a
      string argument would cause a parse failure in the slave).
      
      The solution is to convert arguments to the limit clause to a integer
      value and use this converted value when persisting the query to the log.
      
      
      mysql-test/r/limit.result:
        Update test case result.
      mysql-test/r/ps.result:
        Add test case result for Bug#33851
      mysql-test/r/rpl_user_variables.result:
        Test case result for replication of prepared statement with
        limit clause.
      mysql-test/t/limit.test:
        Test parameters to limit clause.
      mysql-test/t/ps.test:
        Add test case for Bug#33851
      mysql-test/t/rpl_user_variables.test:
        Test replication of a parameter which value is converted.
      sql/item.cc:
        Convert value to integer if it's a parameter to a limit clause.
      sql/item.h:
        Flag signal that item is a parameter to a limit clause.
      sql/item_func.cc:
        Const member functions, object is not mutated.
      sql/sql_class.h:
        Const member functions, object is not mutated.
      sql/sql_yacc.yy:
        Flag that item is a parameter to a limit clause.
      8d4c99e3
  2. 14 Jan, 2008 1 commit
    • unknown's avatar
      Bug#33143: Incorrect ORDER BY for ROUND()/TRUNCATE() result · 01557dde
      unknown authored
      The ROUND(X, D) function would change the Item::decimals field during
      execution to achieve the effect of a dynamic number of decimal digits.
      This caused a series of bugs:
      Bug #30617:Round() function not working under some circumstances in InnoDB
      Bug #33402:ROUND with decimal and non-constant cannot round to 0 decimal places
      Bug #30889:filesort and order by with float/numeric crashes server
      Fixed by never changing the number of shown digits for DECIMAL when
      used with a nonconstant number of decimal digits.
      
      
      mysql-test/r/type_decimal.result:
        Bug#33143: Test result
      mysql-test/t/type_decimal.test:
        Bug#33143: Test case
      sql/item_func.cc:
        Bug#33143: 
        - Moved the DECIMAL_MAX_SCALE limitation to fix_length_and_dec.
        - Removed resetting of Item::decimals field.
        - set the frac field of the output value to current scale.
      strings/decimal.c:
        Bug#33143: It is necessary to set all digits in the buffer following the 
        rounded one to zero, as they may now be displayed.
      01557dde
  3. 06 Dec, 2007 1 commit
    • unknown's avatar
      Bug#31177: Server variables can't be set to their current values · 240f0f27
      unknown authored
      additional fixes for BDB and correct assignment of both signed
      and unsigned 64-bit data to unsigned system variables
      
      
      mysql-test/r/ps_2myisam.result:
        account for UNSIGNED_FLAG
      mysql-test/r/ps_3innodb.result:
        account for UNSIGNED_FLAG
      mysql-test/r/ps_4heap.result:
        account for UNSIGNED_FLAG
      mysql-test/r/ps_5merge.result:
        account for UNSIGNED_FLAG
      mysql-test/r/ps_6bdb.result:
        account for UNSIGNED_FLAG
      mysql-test/r/ps_7ndb.result:
        account for UNSIGNED_FLAG
      mysys/my_getopt.c:
        We have correct signed/unsigned information now, so we no longer
        need to err on the side of caution.
      sql/item_func.cc:
        Copy unsigned info over from entry so the item's data
        correctly describe it.
      sql/mysqld.cc:
        BDB log buffer size: default can't be less than minimum
      sql/set_var.cc:
        Handle signedness of in-values correctly when assigning to
        unsigned types, all the way up to 64-bit. Use handler from
        all three unsigned sysvar types.
      sql/set_var.h:
        thd_ulonglong: Override default check with one for unsigned types
      240f0f27
  4. 27 Nov, 2007 1 commit
    • unknown's avatar
      Bug #30355: Incorrect ordering of UDF results · 56973f1b
      unknown authored
      There's currently no way of knowing the determinicity of an UDF.
      And the optimizer and the sequence() UDFs were making wrong
      assumptions about what the is_const member means.
      Plus there was no implementation of update_system_tables()
      causing the optimizer to overwrite the information returned by
      the <udf>_init function.
      
      Fixed by equating the assumptions about the semantics of 
      is_const and providing a implementation of update_used_tables().
      Added a TODO item for the UDF API change needed to make a better 
      implementation.
      
      
      include/mysql_com.h:
        Bug #30355: comment added
      mysql-test/r/udf.result:
        Bug #30355: test case
      mysql-test/t/udf.test:
        Bug #30355: test case
      sql/item_func.cc:
        Bug #30355: keep const_item_cache and used_tables_cache in sync
      sql/item_func.h:
        Bug #30355: 
         - a better implementation of update_used_tables()
         - keep const_item_cache and used_tables_cache in sync
      sql/udf_example.c:
        Bug #30355: Wrong value for const_item fixed.
      56973f1b
  5. 26 Nov, 2007 1 commit
    • unknown's avatar
      Bug #32436 KILL QUERY completely deadlocks mysqld · 6bf5fd40
      unknown authored
      Sending several "KILL QUERY" statements to target a connection running
      "SELECT SLEEP" could freeze the server.
      
      The locking order in Item_func_sleep was wrong and this could lead to a
      dead lock.
      
      This patch solves the issue by resolving the locking order properly.
      
      
      sql/item_func.cc:
        - Moved LOCK_user_locks critical region so that it doesn't share space with
          mysys_var->mutex region; this can lead to deadlock.
      6bf5fd40
  6. 29 Oct, 2007 1 commit
    • unknown's avatar
      Bug#30889: filesort and order by with float/numeric crashes server · a03c7251
      unknown authored
      There are two problems with ROUND(X, D) on an exact numeric 
      (DECIMAL, NUMERIC type) field of a table:
      1) The implementation of the ROUND function would change the number of decimal
      places regardless of the value decided upon in fix_length_and_dec. When the
      number of decimal places is not constant, this would cause an inconsistent
      state where the number of digits was less than the number of decimal places,
      which crashes filesort.
      
      Fixed by not allowing the ROUND operation to add any more decimal places than
      was decided in fix_length_and_dec.
      
      2) fix_length_and_dec would allow the number of decimals to be greater than
      the maximium configured value for constant values of D. This led to the same 
      crash as in (1).
      
      Fixed by not allowing the above in fix_length_and_dec.
      
      
      mysql-test/r/type_decimal.result:
        Bug#30889: Test result
      mysql-test/t/type_decimal.test:
        Bug#30889: Test case
      sql/item_func.cc:
        Bug#30889: 
        - Avoid setting number of digits after decimal point (scale) higher than its 
          maximum value.
        - Avoid increasing the number of decimal places in ::decimal_op
      sql/item_func.h:
        Bug#30889: Added comments to the declarations of Item_func_numhybrid::<type>_op
        family of methods.
      a03c7251
  7. 24 Oct, 2007 1 commit
    • unknown's avatar
      BUG#31159 - fulltext search on ucs2 column crashes server · 353ecd9a
      unknown authored
      ucs2 doesn't provide required by fulltext ctype array. Crash
      happens because fulltext attempts to use unitialized ctype
      array.
      
      Fixed by converting ucs2 fields to compatible utf8 analogue.
      
      
      include/my_sys.h:
        Added a function to find compatible character set with ctype array
        available. Currently used by fulltext search to find compatible
        substitute for ucs2 collations.
      mysql-test/r/ctype_ucs.result:
        A test case for BUG#31159.
      mysql-test/t/ctype_ucs.test:
        A test case for BUG#31159.
      mysys/charset.c:
        Added a function to find compatible character set with ctype array
        available. Currently used by fulltext search to find compatible
        substitute for ucs2 collations.
      sql/item_func.cc:
        Convert ucs2 fields to utf8. Fulltext requires ctype array, but
        ucs2 doesn't provide it.
      353ecd9a
  8. 17 Oct, 2007 1 commit
    • unknown's avatar
      Bug #29804 UDF parameters don't contain correct string length · 24cb2b34
      unknown authored
          
      Previously, UDF *_init functions were passed constant strings with erroneous lengths. The length came from the containing variable's size, not the length of the value itself.
          
      Now the *_init functions get the constant as a null terminated string with the correct length supplied too.
      
      
      mysql-test/r/udf.result:
        Test case to check constants passed UDFs.
      mysql-test/t/udf.test:
        Test case to check constants passed UDFs.
      sql/item_func.cc:
        UDF _init functions are now passed the length of the constants, rather than the max length of the var containing the constant.
      sql/udf_example.c:
        Added check_const_len functions. The check_const_len_init functions checks that lengths of constants are correctly passed.
      sql/udf_example.def:
        Add new example functions to windows dll export list.
      24cb2b34
  9. 04 Oct, 2007 2 commits
    • unknown's avatar
      apply patch for bug#31035 to 5.0.50 release clone · eedea805
      unknown authored
      mysql-test/r/sp.result:
        apply patch for bug#31035
      mysql-test/t/sp.test:
        apply patch for bug#31035
      sql/item_func.cc:
        apply patch for bug#31035
      eedea805
    • unknown's avatar
      Fix for BUG#31035: select from function, group by result crasher. · c6c68c45
      unknown authored
      This actually, fix for the patch for bug-27354. The problem with
      the patch was that Item_func_sp::used_tables() was updated, but
      Item_func_sp::const_item() was not. So, for Item_func_sp, we had
      the following inconsistency:
        - used_tables() returned RAND_TABLE, which means that the item
          can produce "random" results;
        - but const_item() returned TRUE, which means that the item is
          a constant one.
      
      The fix is to change Item_func_sp::const_item() behaviour: it must
      return TRUE (an item is a constant one) only if a stored function
      is deterministic and each of its arguments (if any) is a constant
      item.
      
      
      mysql-test/r/sp.result:
        Update result file.
      mysql-test/t/sp.test:
        Add test cases for BUG-31035, BUG-31191, BUG-31226
      sql/item_func.cc:
        Make Item::const_item() be consistent with Item::used_tables().
      c6c68c45
  10. 28 Sep, 2007 1 commit
    • unknown's avatar
      Bug #30587: mysql crashes when trying to group by TIME div NUMBER · 17b09640
      unknown authored
      When calculating the result length of an integer DIV function 
      the number of decimals was used without checking the result type
      first. Thus an uninitialized number of decimals was used for some 
      types. This caused an excessive amount of memory to be allocated 
      for the field's buffer and crashed the server.
      
       
      Fixed by using the number of decimals only for data types that 
      can have decimals and thus have valid decimals number.
      
      
      mysql-test/r/func_math.result:
        Bug #30587: test case
      mysql-test/t/func_math.test:
        Bug #30587: test case
      sql/item_func.cc:
        Bug #30587: Don't use decimals on a type that doesn't have them.
      17b09640
  11. 22 Sep, 2007 1 commit
    • unknown's avatar
      Bug#27216: functions with parameters of different date types may return wrong · f8321b5a
      unknown authored
      type of the result.
      
      There are several functions that accept parameters of different types.
      The result field type of such functions was determined based on
      the aggregated result type of its arguments. As the DATE and the DATETIME
      types are represented by the STRING type, the result field type
      of the affected functions was always STRING for DATE/DATETIME arguments.
      The affected functions are COALESCE, IF, IFNULL, CASE, LEAST/GREATEST, CASE.
      
      Now the affected functions aggregate the field types of their arguments rather
      than their result types and return the result of aggregation as their result
      field type.
      The cached_field_type member variable is added to the number of classes to
      hold the aggregated result field type.
      The str_to_date() function's result field type now defaults to the
      MYSQL_TYPE_DATETIME.
      The agg_field_type() function is added. It aggregates field types with help
      of the Field::field_type_merge() function.
      The create_table_from_items() function now uses the 
      item->tmp_table_field_from_field_type() function to get the proper field
      when the item is a function with a STRING result type.
      
      
      libmysql/libmysql.c:
        Bug#27216: functions with parameters of different date types may return wrong
        type of the result.
        The client library now accepts the NEWDATE type as a string.
      sql/item_cmpfunc.cc:
        Bug#27216: functions with parameters of different date types may return wrong
        type of the result.
        Now the fix_length_and_dec functions of the
        Item_func_ifnull,Item_func_if, Item_func_case, Item_func_coalesce
        classes are use agg_field_type function to find out the type of their 
        result field.
      sql/item_cmpfunc.h:
        Bug#27216: functions with parameters of different date types may return wrong
        type of the result.
        The cached_field type is added to the Item_func_case, Item_func_if and
        Item_func_coalesce classes.
        The field_type function is added to the Item_func_ifnull, Item_func_if,
        Item_func_coalesce, Item_func_case classes.
      sql/item_func.cc:
        Bug#27216: functions with parameters of different date types may return wrong
        type of the result.
        The Item_func_min_max::fix_length_and_dec function now uses the agg_field_type
        function to find out the correct type of the result field.
      sql/item_func.h:
        Bug#27216: functions with parameters of different date types may return wrong
        type of the result.
        The cached_field_type variable is added to the Item_func_min_max class.
      sql/item_timefunc.cc:
        Bug#27216: functions with parameters of different date types may return wrong
        type of the result.
        The result of the str_to_date function now defaults to the
        DATETIME type.
      sql/mysql_priv.h:
        Bug#27216: functions with parameters of different date types may return wrong
        type of the result.
        The prototype of the agg_field_type function is added.
      sql/protocol.cc:
        Bug#27216: functions with parameters of different date types may return wrong
        type of the result.
        The Protocol_simple::store function is now used to store fields of NEWDATE type.
      sql/sql_insert.cc:
        Bug#27216: functions with parameters of different date types may return wrong
        type of the result.
        The create_table_from_items function now uses the
        tmp_table_field_from_field_type function to get field for items with the
        STRING result type.
      mysql-test/r/date_formats.result:
        A test case result corrected after fixing bug#27216.
      mysql-test/r/type_datetime.result:
        Added a test case for the bug#27216: functions with parameters of different
        date types may return wrong type of the result.
      mysql-test/t/type_datetime.test:
        Added a test case for the bug#27216: functions with parameters of different
        date types may return wrong type of the result.
      f8321b5a
  12. 05 Sep, 2007 1 commit
    • unknown's avatar
      Bug #29804 UDF parameters don't contain correct string length · 1c03de85
      unknown authored
        
      Previously, UDF *_init functions were passed constant strings with erroneous lengths.
      The length came from the containing variable's size, not the length of the value itself.
        
      Now the *_init functions get the constant as a null terminated string with the correct
      length supplied too.
      
      
      mysql-test/r/udf.result:
        Test case to check constants passed UDFs.
      mysql-test/t/udf.test:
        Test case to check constants passed UDFs.
      sql/item_func.cc:
        UDF _init functions are now passed the length of the constants, rather than the max
        length of the var containing the constant.
      sql/udf_example.c:
        Added check_const_len functions. The check_const_len_init functions checks that the
        lengths of constants are correctly passed.
      sql/udf_example.def:
        Add new example functions to windows dll export list.
      1c03de85
  13. 03 Aug, 2007 1 commit
    • unknown's avatar
      Bug#28875 Conversion between ASCII and LATIN1 charsets does not function · a6430db2
      unknown authored
      (Regression, caused by a patch for the bug 22646).
      Problem: when result type of date_format() was changed from
      binary string to character string, mixing date_format()
      with a ascii column in CONCAT() stopped to work.
      Fix:
      - adding "repertoire" flag into DTCollation class,
      to mark items which can return only pure ASCII strings.
      - allow character set conversion from pure ASCII to other character sets.
      
      
      include/m_ctype.h:
        Defining new flags.
        Adding new function prototypes.
      mysql-test/r/ctype_ucs.result:
        Adding tests.
      mysql-test/r/ctype_utf8.result:
        Adding tests.
      mysql-test/r/func_time.result:
        Adding tests.
      mysql-test/t/ctype_ucs.test:
        Adding tests.
      mysql-test/t/ctype_utf8.test:
        Adding tests.
      mysql-test/t/func_time.test:
        Adding test.
      mysys/charset.c:
        Adding pure ASCII detection when loading a dynamic character set.
      sql/item.cc:
        - Moving detection of a Unicode superset into function.
        - Adding detection of a ASCII subset.
        - Adding creation of to-ASCII character set convertor when
          safe_charset_converter() failed and when the argument.
          repertoire is know to be pure ASCII.
      sql/item.h:
        - Adding "repertoire" member into DTCollation class.
        - Adding "repertoire" argument to constructors.
        - Adding new methods:
          set_repertoire_from_charset()
          set_repertoire_from_value()
      sql/item_func.cc:
        Adding "repertoire" argument.
      sql/item_strfunc.cc:
        Adding "repertoire" argument.
      sql/item_timefunc.cc:
        Initializing the result repertoire taking into account the "is_ascii"
        flag of the current locale.
      sql/sql_lex.cc:
        Detect 7bit strings, return in Lex->text_string_is_7bit.
      sql/sql_lex.h:
        Adding new member into LEX structure.
        Adding new member into Lex_input_stream
      sql/sql_string.cc:
        Allow simple copy from pure ASCII to a ASCII-based character set.
      sql/sql_yacc.yy:
        Depening on Lex->text_string_is_7bit and character set features,
        create Item_string with MY_REPERTOIRE_ASCII when it is possible.
      strings/conf_to_src.c:
        - Adding printing of the "MY_CS_PUREASCII" flag
        - Adding printing of copyright
      strings/ctype-extra.c:
        Recreating ctype-extra.c: ascii_general_ci and ascii_bin
        are now marked with MY_CS_PUREASCII flag.
      strings/ctype.c:
        Adding new functions.
      a6430db2
  14. 02 Aug, 2007 1 commit
    • unknown's avatar
      Fix for bug #30200: mysqlbinlog.test: connection_id() not restored under ps-protocol · 49e8f218
      unknown authored
      Problem: thd->thread_specific_used flag is not set executing a statement
      containig connection_id() function using PS protocol, that leads to 
      improper binlog event creation.
      
      Fix: set the flag in the Item_func_connection_id::fix_fields().
      
      
      sql/item_create.cc:
        Fix for bug #30200: mysqlbinlog.test: connection_id() not restored under ps-protocol
          - set the thd->thread_specific_used flag in the Item_func_connection_id::fix_fields()
            to have it properly set using PS protocol as well.
      sql/item_func.cc:
        Fix for bug #30200: mysqlbinlog.test: connection_id() not restored under ps-protocol
          - set the thd->thread_specific_used flag in the Item_func_connection_id::fix_fields()
            to have it properly set using PS protocol as well.
      sql/sql_parse.cc:
        Fix for bug #30200: mysqlbinlog.test: connection_id() not restored under ps-protocol
          - reset the thd->thread_specific_used flag in the mysql_reset_thd_for_next_command().
      49e8f218
  15. 01 Aug, 2007 1 commit
    • unknown's avatar
      Fix for bug #29928: INSERT ... VALUES(connection_id(), ...) incorrect · b3da2f00
      unknown authored
      restores from mysqlbinlog out
      
      Problem: using "mysqlbinlog | mysql" for recoveries the connection_id() 
      result may differ from what was used when issuing the statement.
      
      Fix: if there is a connection_id() in a statement, write to binlog
      SET pseudo_thread_id= XXX; before it and use the value later on.
      
      
      mysql-test/r/mysqlbinlog.result:
        Fix for bug #29928: INSERT ... VALUES(connection_id(), ...) incorrect 
        restores from mysqlbinlog out
          - test result.
      mysql-test/t/mysqlbinlog.test:
        Fix for bug #29928: INSERT ... VALUES(connection_id(), ...) incorrect 
        restores from mysqlbinlog out
          - test case.
      sql/item_create.cc:
        Fix for bug #29928: INSERT ... VALUES(connection_id(), ...) incorrect 
        restores from mysqlbinlog out
          - set thread_specific_used flag for the connection_id() function.
      sql/item_func.cc:
        Fix for bug #29928: INSERT ... VALUES(connection_id(), ...) incorrect 
        restores from mysqlbinlog out
          - always return thd->variables.pseudo_thread_id as a connection_id() 
        result, as it contains a proper value for both master and slave.
      sql/log_event.cc:
        Fix for bug #29928: INSERT ... VALUES(connection_id(), ...) incorrect 
        restores from mysqlbinlog out
          - set LOG_EVENT_THREAD_SPECIFIC_F event flag if thread_specific_used
        is set.
      sql/sql_class.cc:
        Fix for bug #29928: INSERT ... VALUES(connection_id(), ...) incorrect 
        restores from mysqlbinlog out
          - thd->thread_specific_used introduced, which is set if thread specific 
        value(s) used in a statement.
      sql/sql_class.h:
        Fix for bug #29928: INSERT ... VALUES(connection_id(), ...) incorrect 
        restores from mysqlbinlog out
          - thd->thread_specific_used introduced, which is set if thread specific 
        value(s) used in a statement.
      b3da2f00
  16. 19 Jul, 2007 1 commit
    • unknown's avatar
      Fixed bug #29338. · 2ececf4e
      unknown authored
      Optimization of queries with DETERMINISTIC functions in the
      WHERE clause was not effective: sequential scan was always
      used.
      Now a SF with the DETERMINISTIC flags is treated as constant
      when it's arguments are constants (or a SF doesn't has arguments).
      
      
      sql/item_func.h:
        Fixed bug #29338.
        The Item_func_sp::used_tables has been removed
        (virtual Item_func::used_tables function is enough).
        The virtual Item_func_sp::update_used_tables function
        has been added.
      sql/item_func.cc:
        Fixed bug #29338.
        The Item_func_sp::update_used_tables and the
        Item_func_sp::fix_field functions have been modified
        to take into account the DETERMINISTIC flag of SF definition.
      mysql-test/r/sp.result:
        Updated test case for bug #29338.
      mysql-test/t/sp.test:
        Updated test case for bug #29338.
      2ececf4e
  17. 16 Jun, 2007 1 commit
    • unknown's avatar
      Fixed bug #28625: · c20c7cac
      unknown authored
      DECIMAL column was used instead of BIGINT for the minimal possible
      BIGINT (-9223372036854775808).
      
      The Item_func_neg::fix_length_and_dec has been adjusted to
      to inherit the type of the argument in the case when it's an 
      Item_int object whose value is equal to LONGLONG_MIN.
      
      
      sql/item_func.cc:
        Fixed bug #28625.
        The Item_func_neg::fix_length_and_dec has been adjusted to
        to inherit the type of the argument in the case when it's an 
        Item_int object whose value is equal to LONGLONG_MIN.
      mysql-test/t/bigint.test:
        Added test result for bug #28625.
      mysql-test/r/bigint.result:
        Added test case for bug #28625.
      c20c7cac
  18. 15 Jun, 2007 1 commit
    • unknown's avatar
      Fixed bug #27932: the function LOCATE returned NULL if any · 414cdbed
      unknown authored
      of its arguments was evaluated to NULL, while the predicate
      LOCATE(str,NULL) IS NULL erroneously was evaluated to FALSE.
      
      This happened because the Item_func_locate::fix_length_and_dec
      method by mistake set the value of the maybe_null flag for 
      the function item to 0. In consequence of this the function 
      was considered as the one that could not ever return NULL.
      
      
      mysql-test/r/func_str.result:
        Added a test case for bug #27932.
      mysql-test/t/func_str.test:
        Added a test case for bug #27932.
      414cdbed
  19. 13 Jun, 2007 2 commits
    • unknown's avatar
      Fixed bug #28980: the result of ROUND(<decimal expr>,<int column>) · 16d45603
      unknown authored
      was erroneously converted to double, while the result of
      ROUND(<decimal expr>, <int literal>) was preserved as decimal.
      As a result of such a conversion the value of ROUND(D,A) could
      differ from the value of ROUND(D,val(A)) if D was a decimal expression.
      
      Now the result of the ROUND function is never converted to 
      double if the first argument is decimal.  
      
      
      mysql-test/r/type_decimal.result:
        Added a test case for bug #28980.
      mysql-test/t/type_decimal.test:
        Added a test case for bug #28980.
      16d45603
    • unknown's avatar
      sql/item_func.cc · 99db65d6
      unknown authored
          Improved check for thread identity in the "embedded" case,
          provided by Monty.
          
          This finishes the fixes for bug#27078.
      
      
      sql/item_func.cc:
        Improved check for thread identity in the "embedded" case,
        provided by Monty.
        
        This finishes the fixes for bug#27078.
      99db65d6
  20. 12 Jun, 2007 1 commit
    • unknown's avatar
      Bug #28992: trigger fails in pushbuild · d62f99f8
      unknown authored
       - fixed wrong test case for bug 20903
       - closed the dangling connections in trigger.test
       - GET_LOCK() and RELEASE_LOCK() now produce more detailed log
       - fixed an omission in GET_LOCK() : assign the thread_id when
          acquiring the lock.
      
      
      mysql-test/r/trigger.result:
        Bug #28992: test case updated
      mysql-test/t/trigger.test:
        Bug #28992: test case updated. dangling connections closed.
      sql/item_func.cc:
        Bug #28992: 
         - GET_LOCK() and RELEASE_LOCK() now produce more detailed log
         - fixed an omission in GET_LOCK() : assign the thread_id when
            acquiring the lock.
      d62f99f8
  21. 03 Jun, 2007 1 commit
    • unknown's avatar
      user_var.result: · a8e7c57a
      unknown authored
        Corrected test case result for the bug#28494.
      item_func.h, item_func.cc:
        Corrected function names after fix for the bug#28494.
      
      
      mysql-test/r/user_var.result:
        Corrected test case result for the bug#28494.
      sql/item_func.h:
        Corrected function names after fix for the bug#28494.
      sql/item_func.cc:
        Corrected function names after fix for the bug#28494.
      a8e7c57a
  22. 02 Jun, 2007 2 commits
    • unknown's avatar
      item_func.cc: · 1a4fb707
      unknown authored
        Post fix for bug#28494.
        The Item_func_set_user_var::check method now silently doesn't use result_field
        if it isn't defined.
      
      
      sql/item_func.cc:
        Post fix for bug#28494.
        The Item_func_set_user_var::check method now silently doesn't use result_field
        if it isn't defined.
      1a4fb707
    • unknown's avatar
      Bug#28494: Grouping by Item_func_set_user_var produces incorrect result. · 26f38860
      unknown authored
      This is an additional fix.
      Item::val_xxx methods are supposed to use original data source and
      Item::val_xxx_result methods to use the item's result field. But for the
      Item_func_set_user_var class val_xxx_result methods were mapped to val_xxx
      methods. This leads, in particular, to producing bad sort keys and thus
      wrong order of the result set of queries with group by/order by clauses.
      
      The set of val_xxx_result methods is added to the Item_func_set_user_var
      class. It's the same as the val_xxx set of method but uses the result_field
      to return a value.
      
      
      mysql-test/t/user_var.test:
        Corrected test case for hte bug#28494.
      mysql-test/r/user_var.result:
        Corrected test case for hte bug#28494.
      sql/item_func.cc:
        Bug#28494: Grouping by Item_func_set_user_var produces incorrect result.
        The set of val_xxx_result methods is added to the Item_func_set_user_var
        class. It's the same as the val_xxx set of method but uses the result_field
        to return a value.
      sql/item_func.h:
        Bug#28494: Grouping by Item_func_set_user_var produces incorrect result.
        The set of val_xxx_result methods is added to the Item_func_set_user_var
        class.
      26f38860
  23. 31 May, 2007 1 commit
    • unknown's avatar
      Bug#28494: Grouping by Item_func_set_user_var produces incorrect result. · f2fb7e78
      unknown authored
      The end_update() function uses the Item::save_org_in_field() function to
      save original values of items into the group buffer. But for the 
      Item_func_set_user_var this method was mapped to the save_in_field method.
      The latter function wrongly decides to use the result_field. This leads to
      saving incorrect value in the grouping buffer and wrong result of the whole
      query.
      
      The can_use_result_field argument of the bool type is added to the
      Item_func_set_user_var::save_in_field() function. If it is set to FALSE
      then the item's result field won't be used. Otherwise it will be detected
      whether the result field will be used (old behaviour).
      Two wrapping functions for the function above are added to the 
      Item_func_set_user_var class:
      the save_in_field(Field *field, bool no_conversions) - it calls the above
      function with the can_use_result_field set to TRUE.
      the save_org_in_field(Field *field) - same, but the can_use_result_field
      is set to FALSE.
      
      
      mysql-test/t/user_var.test:
        Added a test case for the bug#28494: Grouping by Item_func_set_user_var
        produces incorrect result.
      mysql-test/r/user_var.result:
        Added a test case for the bug#28494: Grouping by Item_func_set_user_var
        produces incorrect result.
      sql/item_func.cc:
        Bug#28494: Grouping by Item_func_set_user_var produces incorrect result.
        The can_use_result_field argument of the bool type is added to the
        Item_func_set_user_var::save_in_field() function. If it is set to FALSE
        then the item's result field won't be used. Otherwise it will be detected
        whether the result field will be used (old behaviour).
      sql/item_func.h:
        Bug#28494: Grouping by Item_func_set_user_var produces incorrect result.
        The can_use_result_field argument of the bool type is added to the
        Item_func_set_user_var::save_in_field() function.
        Two wrapping functions for the function above are added to the 
        Item_func_set_user_var class:
        the save_in_field(Field *field, bool no_conversions) - it calls the above
        function with the can_use_result_field set to TRUE.
        the save_org_in_field(Field *field) - same, but the can_use_result_field
        is set to FALSE.
      f2fb7e78
  24. 29 May, 2007 1 commit
    • unknown's avatar
      Bug #28605: SHOW CREATE VIEW with views using stored_procedures no · 0c08d2b2
      unknown authored
       longer showing SP names.
      SHOW CREATE VIEW uses Item::print() methods to reconstruct the 
      statement text from the parse tree.
      The print() method for stored procedure calls needs allocate 
      space to print the function's quoted name.
      It was incorrectly calculating the length of the buffer needed 
      (was too short).
      Fixed to reflect the actual space needed.
      
      
      mysql-test/r/sp.result:
        Bug #28605: test case
      mysql-test/t/sp.test:
        Bug #28605: test case
      sql/item_func.cc:
        Bug #28605: fixed the string length calculation
      0c08d2b2
  25. 23 May, 2007 2 commits
    • unknown's avatar
      Bug#27563: Stored functions and triggers wasn't throwing an error when killed. · 19b0aa5c
      unknown authored
      If a stored function or a trigger was killed it had aborted but no error
      was thrown. This allows the caller statement to continue without a notice.
      This may lead to a wrong data being inserted/updated to/deleted as in such
      cases the correct result of a stored function isn't guaranteed. In the case
      of triggers it allows the caller statement to ignore kill signal and to
      waste time because of re-evaluation of triggers that always will fail
      because thd->killed flag is still on.
      
      Now the Item_func_sp::execute() and the sp_head::execute_trigger() functions
      check whether a function or a trigger were killed during execution and
      throws an appropriate error if so.
      Now the fill_record() function stops filling record if an error was reported
      through thd->net.report_error.
      
      
      sql/item_func.cc:
        Bug#27563: Stored functions and triggers wasn't throwing an error when killed.
        Now the Item_func_sp::execute() function checks whether a trigger was killed
        during execution and throws an appropriate error if so.
      sql/sp_head.cc:
        Bug#27563: Stored functions and triggers wasn't throwing an error when killed.
        Now the sp_head::execute_trigger() function checks whether a function was
        killed during execution and throws an appropriate error if so.
      sql/sql_base.cc:
        Bug#27563: Stored functions and triggers wasn't throwing an error when killed.
        Now the fill_record() function stops filling record if an error was reported
        through thd->net.report_error.
      mysql-test/r/kill.result:
        Added a test case for the bug#27563: Stored functions and triggers wasn't
        throwing an error when killed.
      mysql-test/t/kill.test:
        Added a test case for the bug#27563: Stored functions and triggers wasn't
        throwing an error when killed.
      19b0aa5c
    • unknown's avatar
      Bug #28250: Run-Time Check Failure #3 - The variable 'value' is · ce8a8e08
      unknown authored
      being used without being def
      
      Inside method Item_func_unsigned::val_int, the variable value 
      can be returned without being initialized when the CAST argument
      is of type DECIMAL and has a NULL value. This gives a run-time 
      error when building debug binaries using Visual C++ 2005.
      
      Solution: Initialize value to 0
      
      
      mysql-test/t/cast.test:
        bug#28250: There is no need for an extra test case, but we
        recognize that this one catches the bug.
      sql/item_func.cc:
        bug#28250: initialization of value.
      ce8a8e08
  26. 16 May, 2007 1 commit
    • unknown's avatar
      Fix for bug #28240: "isinf()" cannot be used in C++ for lack of prototype · a8fa3f14
      unknown authored
      - Since isinf() portability across various platforms and
        compilers is a complicated question, we should not use
        it directly. Instead, the my_isinf() macro should be used,
        which is defined as an alias to the system-defined isinf()
        if it is safe to use, or a workaround implementation otherwise
      
      
      configure.in:
        Added a check to define HAVE_ISINF only if it can be used
        in C++ code as well.
      include/my_global.h:
        Define my_isinf() as an alias to isinf(), if it is available
        in both C and C++ code. Otherwise, define it to a workaround
        implementation.
      sql/item_func.cc:
        Replaced isinf() with my_isinf().
      strings/strtod.c:
        Replaced isinf() with my_isinf().
      a8fa3f14
  27. 14 May, 2007 1 commit
  28. 11 May, 2007 1 commit
    • unknown's avatar
      merging fixes · 87f7d168
      unknown authored
      mysql-test/r/type_datetime.result:
        result fixed
      mysql-test/t/type_datetime.test:
        testcase fixed
      sql/item_func.cc:
        my_decimal_length_to_precision used
      sql/my_decimal.h:
        merging fix
      87f7d168
  29. 09 May, 2007 2 commits
    • unknown's avatar
      Bug #27921 View ignores precision for CAST() · eb0d604c
      unknown authored
      Item_decimal_typecast::print properly implemented
      
      
      mysql-test/r/view.result:
        Bug #27921 View ignores precision for CAST()
        test result
      mysql-test/t/view.test:
        Bug #27921 View ignores precision for CAST()
        test case
      sql/field.cc:
        zero decimals handling unified
      sql/item_create.cc:
        Bug #27921 View ignores precision for CAST()
        create_func_cast parameters changed, zero precision handling unified
      sql/item_create.h:
        Bug #27921 View ignores precision for CAST()
        create_func_cast parameters changed
      sql/item_func.cc:
        Bug #27921 View ignores precision for CAST() 
        Item_decimal_typecast::print properly implemented
      sql/item_func.h:
        Bug #27921 View ignores precision for CAST()
        max_length counting fixed
      sql/my_decimal.h:
        Bug #27921 View ignores precision for CAST()
        my_decimal_trim() implemented to unify zero precision handling
      sql/sql_yacc.yy:
        Bug #27921 View ignores precision for CAST()
        create_func_cast calls simplified
      eb0d604c
    • unknown's avatar
      Bug #27957 cast as decimal does not check overflow, also inconsistent with group, subselect · a271c7dc
      unknown authored
      Missing check for overflow added to the Item_decimal_typecast::val_decimal
      
      
      include/decimal.h:
        Bug #27957 cast as decimal does not check overflow, also inconsistent with group, subselect
        decimal_intg() declaration
      mysql-test/r/cast.result:
        Bug #27957 cast as decimal does not check overflow, also inconsistent with group, subselect
        result fixed
      mysql-test/r/type_newdecimal.result:
        Bug #27957 cast as decimal does not check overflow, also inconsistent with group, subselect
        test result
      mysql-test/t/type_newdecimal.test:
        Bug #27957 cast as decimal does not check overflow, also inconsistent with group, subselect
        test case added
      sql/item_func.cc:
        Bug #27957 cast as decimal does not check overflow, also inconsistent with group, subselect
        now we check for possible ovreflow in Item_decimal_typecast::val_decimal
      sql/my_decimal.h:
        Bug #27957 cast as decimal does not check overflow, also inconsistent with group, subselect
        my_decimal_intg() implemented
      strings/decimal.c:
        Bug #27957 cast as decimal does not check overflow, also inconsistent with group, subselect
        decimal_intg() implemented
      a271c7dc
  30. 07 May, 2007 1 commit
    • unknown's avatar
      item_func.cc: · bfe9139b
      unknown authored
        Fixed compiler warnings.
      
      
      sql/item_func.cc:
        Fixed compiler warnings.
      bfe9139b
  31. 04 May, 2007 1 commit
    • unknown's avatar
      Bug#27759: Wrong DATE/DATETIME comparison in LEAST()/GREATEST() functions. · 435d728e
      unknown authored
      The LEAST/GREATEST functions compared DATE/DATETIME values as
      strings which in some cases could lead to a wrong result.
      
      A new member function called cmp_datetimes() is added to the
      Item_func_min_max class. It compares arguments in DATETIME context
      and returns index of the least/greatest argument.
      The Item_func_min_max::fix_length_and_dec() function now detects when
      arguments should be compared in DATETIME context and sets the newly
      added flag compare_as_dates. It indicates that the cmp_datetimes() function
      should be called to get a correct result.
      Item_func_min_max::val_xxx() methods are corrected to call the
      cmp_datetimes() function when needed.
      Objects of the Item_splocal class now stores and reports correct original
      field type.
      
      
      mysql-test/t/type_datetime.test:
        Added a test case for the bug#27759: Wrong DATE/DATETIME comparison in LEAST()/GREATEST() functions.
      mysql-test/r/type_datetime.result:
        Added a test case for the bug#27759: Wrong DATE/DATETIME comparison in LEAST()/GREATEST() functions.
      mysql-test/r/sp-vars.result:
        A test case result corrected after the fix for the bug#27759.
      sql/mysql_priv.h:
        Bug#27759: Wrong DATE/DATETIME comparison in LEAST()/GREATEST() functions.
        Added the prototype of the get_datetime_value() function.
      sql/item_func.h:
        Bug#27759: Wrong DATE/DATETIME comparison in LEAST()/GREATEST() functions.
        A new member function called cmp_datetimes() is added to the
        Item_func_min_max class.
      sql/item_func.cc:
        Bug#27759: Wrong DATE/DATETIME comparison in LEAST()/GREATEST() functions.
        A new member function called cmp_datetimes() is added to the
        Item_func_min_max class. It compares arguments in DATETIME context
        and returns index of the least/greatest argument.
        The Item_func_min_max::fix_length_and_dec() function now detects when
        arguments should be compared in DATETIME context and sets the newly
        added flag compare_as_dates. It indicates that the cmp_datetimes() function
        should be called to get a correct result.
        Item_func_min_max::val_xxx() methods are corrected to call the
        cmp_datetimes() function when needed.
      sql/item_cmpfunc.cc:
        Bug#27759: Wrong DATE/DATETIME comparison in LEAST()/GREATEST() functions.
        The get_datetime_value() function is no longer static.
      sql/item.h:
        Bug#27759: Wrong DATE/DATETIME comparison in LEAST()/GREATEST() functions.
        Objects of the Item_splocal class now stores and reports correct original
        field type.
      sql/item.cc:
        Bug#27759: Wrong DATE/DATETIME comparison in LEAST()/GREATEST() functions.
        Objects of the Item_splocal class now stores and reports correct original
        field type.
      435d728e
  32. 03 May, 2007 1 commit
    • unknown's avatar
      Bug#23656: Wrong conversion result of a DATETIME to integer using CAST function. · 4fd339b2
      unknown authored
      The generic string to int conversion was used by the Item_func_signed and
      the Item_func_unsigned classes to convert DATE/DATETIME values to the
      SIGNED/UNSIGNED type. But this conversion produces wrong results for such
      values.
      
      Now if the item which result has to be converted can return its result as
      longlong then the item->val_int() method is used to allow the item to carry
      out the conversion itself and return the correct result.
      This condition is checked in the Item_func_signed::val_int() and the
      Item_func_unsigned::val_int() functions.
      
      
      mysql-test/t/cast.test:
        Added a test case for the bug#23656: Wrong conversion result of a DATETIME to integer using CAST function.
      mysql-test/r/cast.result:
        Added a test case for the bug#23656: Wrong conversion result of a DATETIME to integer using CAST function.
      sql/item_func.cc:
        Bug#23656: Wrong conversion result of a DATETIME to integer using CAST function.
        Now if the item which result has to be converted can return its result as
        longlong then the item->val_int() method is used to allow the item to carry
        out the conversion itself and return the correct result.
        This condition is checked in the Item_func_signed::val_int() and the
        Item_func_unsigned::val_int() functions.
      4fd339b2
  33. 28 Apr, 2007 2 commits
    • unknown's avatar
      Avoid compiler warnings in Windows builds introduced by the patch for bug... · cbb63a4e
      unknown authored
      Avoid compiler warnings in Windows builds introduced by the patch for bug #24912 "problems with bigint in abs() ceiling() ruond() truncate() mod()"
      
      
      cbb63a4e
    • unknown's avatar
      Fix for bug #24912 "problems with bigint in abs() ceiling() round() truncate()... · 67a74165
      unknown authored
      Fix for bug #24912 "problems with bigint in abs() ceiling() round() truncate() mod()" and a number of related problems:
      
      - unsigned flag was not handled correctly for a number of mathematical funcions, which led to incorrect results
      - passing large values as the number of decimals to ROUND() resulted in incorrect results and even server crashes in some cases
      - reverted the fix and the testcase for bug #10083 as it violates the manual
      - fixed some testcases which relied on broken ROUND() behavior
      
      
      mysql-test/r/func_math.result:
        - Removed the testcase for bug #10083 (not a bug according to the manual)
        - Changed the testcase for bug #9837 to expect a correct ROUND() behavior
        - Added testcases for bug #24912 and all related bugs found
      mysql-test/r/type_newdecimal.result:
        Fixed a truncate() testcase which relied on broken behavior
      mysql-test/t/func_math.test:
        - Removed the testcase for bug #10083 (not a bug according to the manual)
        - Changed the testcase for bug #9837 to expect a correct ROUND() behavior
        - Added testcases for bug #24912 and all related bugs found
      sql/item_func.cc:
        Various changes to fix bug #24912 and all related bugs found:
        - honor unsigned_flag in various Item_* functions
        - correctly handle out-of-range numbers of decimals in Item_func_round::fix_length_and_dec()
        - changed the argument specifying the number of decimals in my_double_round() from int to longlong, added a new argument to pass the 'unsigned flag'
        - changed my_double_round() to correctly handle large values passed as the 'number of decimals' argument
        - added a my_double_round() analog for BIGINT UNSIGNED arguments (my_unsigned_round())
        - fixed Item_func_round()::int_op() to not overflow even when the result is within integer range
        - fixed a bug Item_founc_round()::decimal_op() which resulted in crash when a large number of decimals was passed to my_decimal_round()
      sql/item_func.h:
        Various fixed to correctly handle unsigned values.
      sql/item_strfunc.cc:
        Changed the call to my_double_round() to match the new declaration.
      sql/mysql_priv.h:
        Changed the declaration for my_double_round() to be able pass arbitrary integers as number of decimals (both signed and unsigned)
      67a74165
  34. 24 Apr, 2007 1 commit
    • unknown's avatar
      Bug#25411 (trigger code truncated), PART I · b5eae718
      unknown authored
      The issue found with bug 25411 is due to the function skip_rear_comments()
      which damages the source code while implementing a work around.
      The root cause of the problem is in the lexical analyser, which does not
      process special comments properly.
      For special comments like :
      [1] aaa /*!50000 bbb */ ccc
      since 5.0 is a version older that the current code, the parser is in lining
      the content of the special comment, so that the query to process is
      [2] aaa bbb ccc
      However, the text of the query captured when processing a stored procedure,
      stored function or trigger (or event in 5.1), can be after rebuilding it:
      [3] aaa bbb */ ccc
      which is wrong.
      
      To fix bug 25411 properly, the lexical analyser needs to return [2] when
      in lining special comments.
      In order to implement this, some preliminary cleanup is required in the code,
      which is implemented by this patch.
      
      Before this change, the structure named LEX (or st_lex) contains attributes
      that belong to lexical analysis, as well as attributes that represents the
      abstract syntax tree (AST) of a statement.
      Creating a new LEX structure for each statements (which makes sense for the
      AST part) also re-initialized the lexical analysis phase each time, which
      is conceptually wrong.
      
      With this patch, the previous st_lex structure has been split in two:
      - st_lex represents the Abstract Syntax Tree for a statement. The name "lex"
      has not been changed to avoid a bigger impact in the code base.
      - class lex_input_stream represents the internal state of the lexical
        analyser, which by definition should *not* be reinitialized when parsing
        multiple statements from the same input stream.
      
      This change is a pre-requisite for bug 25411, since the implementation of
      lex_input_stream will later improve to deal properly with special comments,
      and this processing can not be done with the current implementation of
      sp_head::reset_lex and sp_head::restore_lex, which interfere with the lexer.
      
      This change set alone does not fix bug 25411.
      
      
      sql/item_func.cc:
        Refactoring, separate lex_input_stream from st_lex.
      sql/log_event.cc:
        Refactoring, separate lex_input_stream from st_lex.
      sql/mysql_priv.h:
        Refactoring, separate lex_input_stream from st_lex.
      sql/slave.cc:
        Refactoring, separate lex_input_stream from st_lex.
      sql/sp.cc:
        Refactoring, separate lex_input_stream from st_lex.
      sql/sp_head.cc:
        Refactoring, separate lex_input_stream from st_lex.
      sql/sp_head.h:
        Refactoring, separate lex_input_stream from st_lex.
      sql/sql_class.cc:
        Refactoring, separate lex_input_stream from st_lex.
      sql/sql_class.h:
        Refactoring, separate lex_input_stream from st_lex.
      sql/sql_lex.cc:
        Refactoring, separate lex_input_stream from st_lex.
      sql/sql_lex.h:
        Refactoring, separate lex_input_stream from st_lex.
      sql/sql_parse.cc:
        Refactoring, separate lex_input_stream from st_lex.
      sql/sql_prepare.cc:
        Refactoring, separate lex_input_stream from st_lex.
      sql/sql_trigger.cc:
        Refactoring, separate lex_input_stream from st_lex.
      sql/sql_view.cc:
        Refactoring, separate lex_input_stream from st_lex.
      sql/sql_yacc.yy:
        Refactoring, separate lex_input_stream from st_lex.
      b5eae718