1. 25 Jul, 2006 2 commits
    • unknown's avatar
      Merge tkatchaounov@bk-internal.mysql.com:/home/bk/mysql-4.1-opt · 03fc0a8f
      unknown authored
      into  lamia.home:/home/tkatchaounov/autopush/4.1-bug-20954
      
      
      mysql-test/r/subselect.result:
        Auto merged
      03fc0a8f
    • unknown's avatar
      Fix for BUG#20954: avg(keyval) retuns 0.38 but max(keyval) returns an empty set · 585b5bbc
      unknown authored
      The problem was in that opt_sum_query() replaced MIN/MAX functions
      with the corresponding constant found in a key, but due to imprecise
      representation of float numbers, when evaluating the where clause,
      this comparison failed.
      
      When MIN/MAX optimization detects that all tables can be removed,
      also remove all conjuncts in a where clause that refer to these
      tables. As a result of this fix, these conditions are not evaluated
      twice, and in the case of float number comparisons we do not discard
      result rows due to imprecise float representation.
      
      As a side-effect this fix also corrects an unnoticed problem in
      bug 12882.
      
      
      mysql-test/r/func_group.result:
        BUG#20954 - test result adjustment.
        Adjusted the test result of bug 12882 which was not preperly fixed.
        The current patch corrects the problem that was fully corrected by the
        patch for 12882.
        
        The problem was that opt_sum_query() indicated that the optimizer may
        remove all tables because all MIN/MAX/COUNT functions are constants,
        but this lead to an empty result instead of NULL because the WHERE
        clause was still evaluated.
        
        The current fix removes all conjuncts in the where clause that
        reference the removed tables, and thus corrects the problem.
      mysql-test/r/select.result:
        BUG#20954 - added test
      mysql-test/r/subselect.result:
        BUG#20954 - test result adjustment.
        
        The fix removes those conditions in a where clause that refer to
        tables optimized away by MIN/MAX optimization (opt_sum_query()).
      mysql-test/t/select.test:
        BUG#20954 - added test
      sql/sql_select.cc:
        Fix for BUG#20954: avg(keyval) retuns 0.38 but max(keyval) returns an empty set
        
        When MIN/MAX optimization detects that all tables can be removed,
        also remove all conjuncts in a where clause that refer to these
        tables. As a result of this fix, these conditions are not evaluated
        twice, and in the case of float number comparisons we do not discard
        result rows due to imprecise float representation.
        
        As a side-effect this fix also corrects an unnoticed problem in
        bug 12882.
      585b5bbc
  2. 21 Jul, 2006 1 commit
  3. 20 Jul, 2006 1 commit
    • unknown's avatar
      BUG#20975: Incorrect query result for NOT (subquery): · 68698c04
      unknown authored
        Add implementations of Item_func_{nop,not}_all::neg_transformer
      
      
      mysql-test/r/subselect.result:
        BUG#20975: testcase
      mysql-test/t/subselect.test:
        BUG#20975: testcase
      sql/mysql_priv.h:
        Make chooser_compare_func_creator visible in item.h
      68698c04
  4. 19 Jul, 2006 1 commit
    • unknown's avatar
      Fixed bug #17526: incorrect print method · 6ec7976d
      unknown authored
      for class Item_func_trim. 
      For 4.1 it caused wrong output for EXPLAIN EXTENDED commands
      if expressions with the TRIM function of two arguments were used.
      For 5.0 it caused an error message when trying to select
      from a view with the TRIM function of two arguments.
      This unexpected error message was due to the fact that the
      print method for the class Item_func_trim was inherited from
      the class Item_func. Yet the TRIM function does not take a list
      of its arguments. Rather it takes the arguments in the form:
        [{BOTH | LEADING | TRAILING} [remstr] FROM] str) |
        [remstr FROM] str
      
      
      mysql-test/r/func_str.result:
        Added a test case for bug #17526: uncorrect print method
        for class Item_func_trim.
      mysql-test/t/func_str.test:
        Added a test case for bug #17526: incorrect print method
        for class Item_func_trim.
      sql/item_strfunc.cc:
        Fixed bug #17526: incorrect print method
        for class Item_func_trim.
            
        Added an implementation for the virtual function print
        in the class Item_func_trim.
        The implementation takes into account the fact the TRIM
        function takes the arguments in the following forms:
          [{BOTH | LEADING | TRAILING} [remstr] FROM] str) |
          [remstr FROM] str
      sql/item_strfunc.h:
        Fixed bug #17526: incorrect print method
        for class Item_func_trim.
            
        Added an implementation for the virtual function print
        in the class Item_func_trim.
        Declared a virtual method to return the mode of the TRIM 
        function: LEADING, TRAILING or BOTH.
        Added implementations of this method for Item_func_trim and
        its descendants Item_func_ltrim and Item_func_rtrim.
      6ec7976d
  5. 18 Jul, 2006 1 commit
    • unknown's avatar
      Merge moonbone.local:/work/mysql-4.1 · 5a77e566
      unknown authored
      into  moonbone.local:/work/tmp_merge-4.1-opt-mysql
      
      
      mysql-test/r/date_formats.result:
        Auto merged
      mysql-test/t/date_formats.test:
        Auto merged
      5a77e566
  6. 14 Jul, 2006 1 commit
  7. 13 Jul, 2006 1 commit
    • unknown's avatar
      Bug#20432: mysql client interprets commands in comments · 76215977
      unknown authored
      do not look for client-specific commands while inside a multi-line comment.
      we will allow multi-comments pretty much anywhere within SQL-statements,
      but client-specific commands (help, use, print, ...) must be the first token
      in the input.
      
      
      client/mysql.cc:
        Bug#20432: mysql client interprets commands in comments
      mysql-test/r/mysql_client.result:
        Bug#20432: mysql client interprets commands in comments
        test client-side parsing of comments and client-specific commands
      mysql-test/t/mysql_client.test:
        Bug#20432: mysql client interprets commands in comments
        test client-side parsing of comments and client-specific commands
      76215977
  8. 12 Jul, 2006 2 commits
    • unknown's avatar
      Bug #17212 results not sorted correctly by ORDER BY when using index · 41445430
      unknown authored
        * don't use join cache when the incoming data set is already ordered
          for ORDER BY
          This choice must be made because join cache will effectively
          reverse the join order and the results will be sorted by the index
          of the table that uses join cache.
      
      
      mysql-test/r/innodb_mysql.result:
        Bug #17212 results not sorted correctly by ORDER BY when using index
          * Test suite for the bug
      mysql-test/t/innodb_mysql.test:
        Bug #17212 results not sorted correctly by ORDER BY when using index
          * Test suite for the bug
      sql/sql_select.cc:
        Bug #17212 results not sorted correctly by ORDER BY when using index
          * don't use join cache when the incoming data set is already sorted
      41445430
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1-opt · e2c448fb
      unknown authored
      into  moonbone.local:/work/16302-bug-4.1-opt-mysql
      
      
      mysql-test/r/subselect.result:
        SCCS merged
      mysql-test/t/subselect.test:
        SCCS merged
      e2c448fb
  9. 11 Jul, 2006 5 commits
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1-opt · 03dbc219
      unknown authored
      into  moonbone.local:/work/18503-bug-4.1-mysql
      
      
      sql/sql_select.cc:
        Auto merged
      03dbc219
    • unknown's avatar
      Fixed bug#18503: Queries with a quantified subquery returning empty set · d2bbf288
      unknown authored
      may return a wrong result.
      
      An Item_sum_hybrid object has the was_values flag which indicates whether any
      values were added to the sum function. By default it is set to true and reset
      to false on any no_rows_in_result() call. This method is called only in
      return_zero_rows() function. An ALL/ANY subquery can be optimized by MIN/MAX
      optimization. The was_values flag is used to indicate whether the subquery
      has returned at least one row. This bug occurs because return_zero_rows() is
      called only when we know that the select will return zero rows before
      starting any scans but often such information is not known.
      In the reported case the return_zero_rows() function is not called and
      the was_values flag is not reset to false and yet the subquery return no rows
      Item_func_not_all and Item_func_nop_all functions return a wrong
      comparison result.
      
      The end_send_group() function now calls no_rows_in_result() for each item
      in the fields_list if there is no rows were found for the (sub)query.
      
      
      mysql-test/t/subselect.test:
        Added test case for bug#18503: Queries with a quantified subquery returning empty set may return a wrong result.
      mysql-test/r/subselect.result:
        Added test case for bug#18503: Queries with a quantified subquery returning empty set may return a wrong result.
      sql/sql_select.cc:
        Fixed bug#18503: Queries with a quantified subquery returning empty set may return a wrong result.
        
        The end_send_group() function now calls no_rows_in_result() for each item
        in the fields_list if there is no matching rows were found.
      d2bbf288
    • unknown's avatar
      Bug#20729: Bad date_format() call makes mysql server crash · ed001f18
      unknown authored
          
      The problem is that the author used the wrong function to send a warning to the 
      user about truncation of data.  push_warning() takes a constant string and 
      push_warning_printf() takes a format and variable arguments to fill it.
      
      Since the string we were complaining about contains percent characters, the 
      printf() code interprets the "%Y" et c. that the user sends.  That's wrong, and
      often causes a crash, especially if the date mentions seconds, "%s".
      
      A alternate fix would be to use  push_warning_printf(..., "%s", warn_buff) .
      
      
      mysql-test/r/date_formats.result:
        Test that an invalid date doesn't crash the server.  We should get a warning back 
        instead of a dead socket.
      mysql-test/t/date_formats.test:
        Test that an invalid date doesn't crash the server.  We should get a warning back 
        instead of a dead socket.
      sql/time.cc:
        Don't try to use warn_buf as the start of a varible arguement list to send 
        to a warning-formatted my_vsnprintf() .
      ed001f18
    • unknown's avatar
      Merge moonbone.local:/work/allany-4.1-mysql · bf01313c
      unknown authored
      into  moonbone.local:/work/16302-bug-4.1-opt-mysql
      
      
      bf01313c
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1-opt · 7642d181
      unknown authored
      into  moonbone.local:/home/evgen/bk-trees/mysql-4.1-opt
      
      
      sql/sql_class.cc:
        Auto merged
      sql/sql_class.h:
        Auto merged
      7642d181
  10. 10 Jul, 2006 4 commits
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1-opt · 7bea031d
      unknown authored
      into  moonbone.local:/work/allany-4.1-mysql
      
      
      7bea031d
    • unknown's avatar
      Fixed bug#16302: Quantified subquery without any tables gives wrong results · ad88eabd
      unknown authored
      The ALL/ANY subqueries are the subject of MIN/MAX optimization. The matter
      of this optimization is to embed MIN() or MAX() function into the subquery
      in order to get only one row by which we can tell whether the expression
      with ALL/ANY subquery is true or false.
      But when it is applied to a subquery like 'select a_constant' the reported bug
      occurs. As no tables are specified in the subquery the do_select() function 
      isn't called for the optimized subquery and thus no values have been added 
      to a MIN()/MAX() function and it returns NULL instead of a_constant.
      This leads to a wrong query result.
      
      For the subquery like 'select a_constant' there is no reason to apply
      MIN/MAX optimization because the subquery anyway will return at most one row.
      Thus the Item_maxmin_subselect class is more appropriate for handling such
      subqueries.
      
      The Item_in_subselect::single_value_transformer() function now checks
      whether tables are specified for the subquery. If no then this subselect is
      handled like a UNION using an Item_maxmin_subselect object.
      
      
      mysql-test/t/subselect.test:
        Added test case for bug#16302: Quantified subquery without any tables gives wrong results
      mysql-test/r/subselect.result:
        Added test case for bug#16302: Quantified subquery without any tables gives wrong results
      sql/item_subselect.cc:
        Fixed bug#16302: Quantified subquery without any tables gives wrong results
         
        The Item_in_subselect::single_value_transformer() function now checks
        whether tables are specified for the subquery. If no then this subselect is
        handled like a UNION using an Item_maxmin_subselect object.
      ad88eabd
    • unknown's avatar
      Merge rakia:mysql/4.1/B14553 · ca1e4aab
      unknown authored
      into  macbook.gmz:/Users/kgeorge/mysql/work/B14553-4.1-opt
      
      
      sql/sql_class.cc:
        SCCS merged
      sql/sql_select.cc:
        SCCS merged
      ca1e4aab
    • unknown's avatar
      BUG#14553: NULL in WHERE resets LAST_INSERT_ID · 0806d9a8
      unknown authored
      To make MySQL compatible with some ODBC applications, you can find
      the AUTO_INCREMENT value for the last inserted row with the following query:
       SELECT * FROM tbl_name WHERE auto_col IS NULL.
      This is done with a special code that replaces 'auto_col IS NULL' with
      'auto_col = LAST_INSERT_ID'.
      However this also resets the LAST_INSERT_ID to 0 as it uses it for a flag
      so as to ensure that only the first SELECT ... WHERE auto_col IS NULL
      after an INSERT has this special behaviour.
      In order to avoid resetting the LAST_INSERT_ID a special flag is introduced
      in the THD class. This flag is used to restrict the second and subsequent
      SELECTs instead of LAST_INSERT_ID.
      
      
      mysql-test/r/odbc.result:
        test suite for the bug
      mysql-test/r/rpl_insert_id.result:
        test for the fix in replication
      mysql-test/t/odbc.test:
        test suite for the bug
      mysql-test/t/rpl_insert_id.test:
        test for the fix in replication
      sql/sql_class.cc:
        initialize the flag
      sql/sql_class.h:
        flag's declaration and set code when setting the last_insert_id
      sql/sql_select.cc:
        the special flag is used instead of last_insert_id
      0806d9a8
  11. 06 Jul, 2006 2 commits
    • unknown's avatar
      Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-4.1-opt · 8cb368bc
      unknown authored
      into  olga.mysql.com:/home/igor/mysql-4.1-opt
      
      
      8cb368bc
    • unknown's avatar
      Fixed bug #18243. · cf7627bc
      unknown authored
      The implementation of the method Item_func_reverse::val_str
      for the REVERSE function modified the argument of the function.
      This led to wrong results for expressions that contained
      REVERSE(ref) if ref occurred somewhere else in the expressions.
      
      
      mysql-test/r/func_str.result:
        Added a test case for bug #18243.
      mysql-test/t/func_str.test:
        Added a test case for bug #18243.
      sql/item_strfunc.cc:
        Fixed bug #18243.
        The implementation of the method Item_func_reverse::val_str
        for the REVERSE function modified the argument of the function.
        This led to wrong results for expressions that contained
        REVERSE(ref) if ref occurred somewhere else in the expressions.
        
        The implementation of Item_func_reverse::val_str has been changed
        to make the argument intact.
      sql/item_strfunc.h:
        Fixed bug #18243.
        Added tmp_value to the Item_func_reverse class to store
        the result of the function. It erroneously replaced the 
        argument before this fix.
      cf7627bc
  12. 05 Jul, 2006 1 commit
  13. 04 Jul, 2006 2 commits
    • unknown's avatar
      WL#2928 Date Translation NRE · 184ff212
      unknown authored
      (implemented by by Josh Chamas)
      
      
      libmysqld/Makefile.am:
        Adding new source file
      mysql-test/r/date_formats.result:
        Adding test case
      mysql-test/t/date_formats.test:
        Adding test case
      sql/Makefile.am:
        Adding new source file
      BitKeeper/etc/ignore:
        Added libmysqld/sql_locale.cc to the ignore list
      sql/item_timefunc.cc:
        Using current locale data, instead of hard coded English names.
      sql/mysql_priv.h:
        Adding new type MY_LOCALE, and declaring new global variables.
      sql/set_var.cc:
        Adding "lc_time_names" system variable.
      sql/set_var.h:
        Adding "lc_time_names" system variable.
      sql/sql_cache.cc:
        Adding lc_time_names as a query cache flag.
      sql/sql_class.cc:
        Setting default locale to en_US
      sql/sql_class.h:
        Adding locale variable into system_variables.
      sql/sql_locale.cc:
        Adding new file with locale data for various languages
      184ff212
    • unknown's avatar
      Better comments for void Item::top_level_item() · 1401c2c7
      unknown authored
      1401c2c7
  14. 30 Jun, 2006 14 commits
  15. 29 Jun, 2006 2 commits