1. 25 Jul, 2006 6 commits
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · beb6f57c
      unknown authored
      into  moonbone.local:/work/19862-bug-5.0-opt-mysql
      
      
      sql/item_func.h:
        Auto merged
      sql/sql_select.cc:
        Auto merged
      beb6f57c
    • unknown's avatar
      Fixed bug#19862: Sort with filesort by function evaluates function twice · 9a63adc8
      unknown authored
      When there is no index defined filesort is used to sort the result of a
      query. If there is a function in the select list and the result set should be
      ordered by it's value then this function will be evaluated twice. First time to
      get the value of the sort key and second time to send its value to a user.
      This happens because filesort when sorts a table remembers only values of its
      fields but not values of functions.
      All functions are affected. But taking into account that SP and UDF functions
      can be both expensive and non-deterministic a temporary table should be used 
      to store their results and then sort it to avoid twice SP evaluation and to 
      get a correct result.
      
      If an expression referenced in an ORDER clause contains a SP or UDF 
      function, force the use of a temporary table.
      
      A new Item_processor function called func_type_checker_processor is added
      to check whether the expression contains a function of a particular type.
      
      
      mysql-test/t/udf.test:
        Added test case for bug#19862: Sort with filesort by function evaluates function twice
      mysql-test/t/sp.test:
        Added test case for bug#19862: Sort with filesort by function evaluates function twice
      mysql-test/r/sp.result:
        Added test case for bug#19862: Sort with filesort by function evaluates function twice
      mysql-test/r/udf.result:
        Added test case for bug#19862: Sort with filesort by function evaluates function twice
      sql/sql_select.cc:
        Fixed bug#19862: Sort with filesort by function evaluates function twice
        If an expression referenced in an ORDER clause contains a SP or UDF
        function, force the use of a temporary table.
      sql/item_func.h:
        Fixed bug#19862: Sort with filesort by function evaluates function twice
        A new Item_processor function called func_type_checker_processor is added
        to check whether the expression contains a function of a particular type.
      sql/item.h:
        Fixed bug#19862: Sort with filesort by function evaluates function twice
        A new Item_processor function called func_type_checker_processor is added
        to check whether the expression contains a function of a particular type.
      sql/item_func.cc:
        Fixed bug#19862: Sort with filesort by function evaluates function twice
        A new Item_processor function called func_type_checker_processor is added
        to check whether the expression contains a function of a particular type.
      9a63adc8
    • unknown's avatar
      Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · ca3dbd26
      unknown authored
      into  olga.mysql.com:/home/igor/mysql-5.0-opt
      
      
      ca3dbd26
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · bc6fd749
      unknown authored
      into  rakia.(none):/home/kgeorge/mysql/autopush/B16712-5.0-opt
      
      
      sql/item_sum.cc:
        Auto merged
      sql/sql_select.cc:
        Auto merged
      bc6fd749
    • unknown's avatar
      Bug#16712: group_concat returns odd srting insead of intended result · 4e7121c0
      unknown authored
        when calculating GROUP_CONCAT all blob fields are transformed
        to varchar when making the temp table.
        However a varchar has at max 2 bytes for length. 
        This fix makes the conversion only for blobs whose max length 
        is below that limit. 
        Otherwise blob field is created by make_string_field() call.
      
      
      mysql-test/r/func_gconcat.result:
        Bug#16712: group_concat returns odd srting insead of intended result
          * testsuite for the bug
      mysql-test/t/func_gconcat.test:
        Bug#16712: group_concat returns odd srting insead of intended result
          * testsuite for the bug
      sql/item_sum.cc:
        Bug#16712: group_concat returns odd srting insead of intended result
          * force blob->varchar conversion for small enough blobs only
      sql/sql_select.cc:
        Bug#16712: group_concat returns odd srting insead of intended result
          * force blob->varchar conversion for small enough blobs only
      4e7121c0
    • unknown's avatar
      Fixed bug #21231: wrong results for a simple query with a · d64f605e
      unknown authored
      a non-correlated single-row subquery over information schema.
      
      The function get_all_tables filling all information schema
      tables reset lex->sql_command to SQLCOM_SHOW_FIELDS. After
      this the function could evaluate partial conditions related to
      some columns. If these conditions contained a subquery over
      information schema it led to a wrong evaluation and a wrong 
      result set.
      This bug was already fixed in 5.1.
      This patch follows the way how it was done in 5.1 where
      the value of lex->sql_command is set to SQLCOM_SHOW_FIELDS
      in get_all_tables only for the calls of the function 
      open_normal_and_derived_tables and is restored after these
      calls.
      
      
      mysql-test/r/information_schema.result:
        Added a test case for bug #21231.
      mysql-test/t/information_schema.test:
        Added a test case for bug #21231.
      d64f605e
  2. 22 Jul, 2006 9 commits
  3. 21 Jul, 2006 10 commits
    • unknown's avatar
      Merge mysql.com:/home/psergey/mysql-4.1-opt · 8fc51f7a
      unknown authored
      into  mysql.com:/home/psergey/mysql-5.0-opt2
      
      
      mysql-test/r/subselect.result:
        Manual merge
      mysql-test/t/subselect.test:
        Manual merge
      8fc51f7a
    • unknown's avatar
      Add missing "DROP TABLE" clause · 9d432f0d
      unknown authored
      9d432f0d
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · f171d628
      unknown authored
      into  moonbone.local:/work/autopush/12185-bug-5.0-opt-mysql
      
      
      mysql-test/r/create.result:
        Auto merged
      mysql-test/t/innodb.test:
        Auto merged
      sql/field.cc:
        Auto merged
      sql/field.h:
        Auto merged
      sql/item.cc:
        Auto merged
      mysql-test/r/union.result:
        SCCS merged
      mysql-test/t/union.test:
        SCCS merged
      f171d628
    • unknown's avatar
      Fixed bug#12185: Data type aggregation may produce wrong result · 35209c68
      unknown authored
      The Item::tmp_table_field_from_field_type() function creates Field_datetime
      object instead of Field_timestamp object for timestamp field thus always
      changing data type is a tmp table is used.
      
      The Field_blob object constructor which is used in the 
      Item::tmp_table_field_from_field_type() is always setting packlength field of
      newly created blob to 4. This leads to changing fields data type for example
      from the blob to the longblob if a temporary table is used.
      
      The Item::make_string_field() function always converts Field_string objects 
      to Field_varstring objects. This leads to changing data type from the 
      char/binary to varchar/varbinary.
      
      Added appropriate Field_timestamp object constructor for using in the 
      Item::tmp_table_field_from_field_type() function.
      
      Added Field_blob object constructor which sets pack length according to
      max_length argument.
      
      The Item::tmp_table_field_from_field_type() function now creates
      Field_timestamp object for a timestamp field.
      
      The Item_type_holder::display_length() now returns correct NULL length NULL
      length. 
      
      The Item::make_string_field() function now doesn't change Field_string to
      Field_varstring in the case of Item_type_holder. 
      
      The Item::tmp_table_field_from_field_type() function now uses the Field_blob
      constructor which sets packlength according to max_length.
      
      
      mysql-test/t/union.test:
        Added test case for bug#12185: Data type aggregation may produce wrong result
        Corrected test case after fix for bug#12185
      mysql-test/t/innodb.test:
        Corrected test case after fix for bug#12185
      mysql-test/r/union.result:
        Added test case for bug#12185: Data type aggregation may produce wrong result
         Corrected test case after fix for bug#12185
      mysql-test/r/innodb.result:
        Corrected test case after fix for bug#12185
      mysql-test/r/create.result:
        Corrected the test case after fixing bug#12185
      sql/field.h:
        Fixed bug#12185: Data type aggregation may produce wrong result
        Added Field_blob object constructor which sets packlength according to
        max_length argument.
      sql/item.cc:
        Fixed bug#12185: Data type aggregation may produce wrong result
        The Item::make_string_field() function now doesn't change Field_string to
        Field_varstring in the case of Item_type_holder.
        The Item::tmp_table_field_from_field_type() function now creates
        Field_timestamp object for a timestamp field.
        The Item::tmp_table_field_from_field_type() function now uses the Field_blob
        constructor which sets packlength according to max_length.
        The Item_type_holder::display_length() now returns correct NULL length NULL
        length.
      sql/field.cc:
        Fixed bug#12185: Data type aggregation may produce wrong result
        Added appropriate Field_timestamp object constructor for using in the 
        Item::tmp_table_field_from_field_type() function.
      35209c68
    • unknown's avatar
      Merge mysql.com:/home/psergey/mysql-4.1-opt · c13be230
      unknown authored
      into  mysql.com:/home/psergey/mysql-5.0-opt
      
      
      sql/item_cmpfunc.cc:
        Auto merged
      sql/item_cmpfunc.h:
        Auto merged
      sql/item_subselect.cc:
        Auto merged
      sql/item_subselect.h:
        Auto merged
      sql/sql_parse.cc:
        Auto merged
      mysql-test/r/subselect.result:
        Manual merge
      mysql-test/t/subselect.test:
        Manual merge
      sql/mysql_priv.h:
        Manual merge
      c13be230
    • unknown's avatar
      Bug #20466: a view is mixing data when there's a trigger on the table · 7118c252
      unknown authored
        When making a place to store field values at the start of each group
        the real item (not the reference) must be used when deciding which column
        to copy.
      
      
      mysql-test/r/group_by.result:
        Bug #20466: a view is mixing data when there's a trigger on the table
         - test suite for the bug
      mysql-test/t/group_by.test:
        Bug #20466: a view is mixing data when there's a trigger on the table
         - test suite for the bug
      sql/sql_select.cc:
        Bug #20466: a view is mixing data when there's a trigger on the table
         - deal correctly with references
      7118c252
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 47d6f7a6
      unknown authored
      into  rakia.(none):/home/kgeorge/mysql/autopush/B20868-5.0-opt
      
      
      47d6f7a6
    • unknown's avatar
      Bug #20868: Client connection is broken on SQL query error · 8024aabb
      unknown authored
       An aggregate function reference was resolved incorrectly and
      caused a crash in count_field_types.
       Must use real_item() to get to the real Item instance through
      the reference
      
      
      mysql-test/r/func_group.result:
        Bug #20868: Client connection is broken on SQL query error
         * test case for the bug
      mysql-test/t/func_group.test:
        Bug #20868: Client connection is broken on SQL query error
         * test case for the bug
      sql/sql_select.cc:
        Bug #20868: Client connection is broken on SQL query error
         * correctly resolve aggregate function references.
      8024aabb
    • unknown's avatar
      Merge tkatchaounov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · f57bb347
      unknown authored
      into  lamia.home:/home/tkatchaounov/autopush/5.0-bug-21007
      
      
      client/mysql.cc:
        Auto merged
      mysql-test/r/date_formats.result:
        Auto merged
      mysql-test/r/func_str.result:
        Auto merged
      mysql-test/t/date_formats.test:
        Auto merged
      mysql-test/t/func_str.test:
        Auto merged
      sql/item_strfunc.cc:
        Auto merged
      sql/sql_class.cc:
        Auto merged
      sql/time.cc:
        Auto merged
      f57bb347
    • unknown's avatar
      Fix for BUG#21007. · 4e59d30d
      unknown authored
      The problem was that store_top_level_join_columns() incorrectly assumed
      that the left/right neighbor of a nested join table reference can be only
      at the same level in the join tree.
      
      The fix checks if the current nested join table reference has no immediate
      left/right neighbor, and if so chooses the left/right neighbors of the
      nearest upper level, where these references are != NULL.
      
      
      mysql-test/r/group_min_max.result:
        Test for BUG#21007.
      mysql-test/t/group_min_max.test:
        Test for BUG#21007.
      sql/sql_base.cc:
        After computing and materializing the columns of all NATURAL joins in a FROM clause,
        the procedure store_top_level_join_columns() has to change the current natural join
        into a leaf table reference for name resolution. For this it needs to make the left
        neighbor point to the natural join table reference, and the natural join itself point
        to its left neighbor.
        
        This fix correctly determines the left/right neighbors of a table reference, even if
        the neghbors are at higher levels in the nested join tree. The rule is that if a table
        reference has no immediate left/right neighbors, we recursively pick the left/right
        neighbor of the level(s) above.
      4e59d30d
  4. 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
  5. 19 Jul, 2006 3 commits
    • unknown's avatar
      Added a test case with views for bug #17526. · f8dda7bf
      unknown authored
      
      mysql-test/r/func_str.result:
        Adjusted results for the test case of bug 17526.
      sql/item_strfunc.cc:
        Post-merge modification
      f8dda7bf
    • unknown's avatar
      Merge olga.mysql.com:/home/igor/mysql-4.1-opt · ef9e6346
      unknown authored
      into  olga.mysql.com:/home/igor/mysql-5.0-opt
      
      
      mysql-test/r/func_str.result:
        Auto merged
      mysql-test/t/func_str.test:
        Auto merged
      sql/item_strfunc.cc:
        Auto merged
      sql/item_strfunc.h:
        Auto merged
      ef9e6346
    • 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
  6. 18 Jul, 2006 3 commits
  7. 17 Jul, 2006 5 commits
    • unknown's avatar
      Post-merge fix. · c3f0d2f6
      unknown authored
      c3f0d2f6
    • unknown's avatar
      Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 8972b0bf
      unknown authored
      into  rurik.mysql.com:/home/igor/mysql-5.0-opt
      
      
      mysql-test/r/subselect.result:
        Manual merge
      mysql-test/t/subselect.test:
        Manual merge
      8972b0bf
    • unknown's avatar
      Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · ddde1432
      unknown authored
      into  olga.mysql.com:/home/igor/mysql-5.0-opt
      
      
      ddde1432
    • unknown's avatar
      select.result, select.test: · 14d72663
      unknown authored
        Test case for bug#10977 altered to make it work in both plain and ps-protocol modes.
      
      
      mysql-test/t/select.test:
        Test case for bug#10977 altered to make it work in both plain and ps-protocol modes.
      mysql-test/r/select.result:
        Test case for bug#10977 altered to make it work in both plain and ps-protocol modes.
      14d72663
    • unknown's avatar
      mysql.test, mysql.result: · 9a5daa60
      unknown authored
        Corrected the test case after fixing bug#10977
      
      
      mysql-test/t/mysql.test:
        Corrected the test case after fixing bug#10977
      mysql-test/r/mysql.result:
        Corrected the test case after fixing bug#10977
      9a5daa60
  8. 16 Jul, 2006 1 commit
  9. 15 Jul, 2006 2 commits
    • unknown's avatar
      errmsg.txt: · 84245d4e
      unknown authored
        Fixed bug#10977: No warning issued if a column name is truncated
        New warning message is added.
      
      
      sql/share/errmsg.txt:
        Fixed bug#10977: No warning issued if a column name is truncated
        New warning message is added.
      84245d4e
    • unknown's avatar
      Fixed bug#10977: No warning issued if a column name is truncated · 1c96f2d7
      unknown authored
      When an alias is set to a column leading spaces are removed from the alias.
      But when this is done on aliases set by user this can lead to confusion.
      
      Now Item::set_name() method issues the warning if leading spaces were removed
      from an alias set by user.
      
      New warning message is added.
      
      
      mysql-test/t/select.test:
        Added test case for bug#10977:No warning issued if a column name is truncated.
      mysql-test/r/select.result:
        Added test case for bug#10977:No warning issued if a column name is truncated.
      sql/sql_yacc.yy:
        Fixed bug#10977: No warning issued if a column name is truncated
        The is_autogenerated_name flag is set before set_name() method call.
      sql/item.cc:
        Fixed bug#10977: No warning issued if a column name is truncated
        Now Item::set_name() method issues the warning if leading spaces were removed
        from an alias set by user.
      1c96f2d7