1. 22 Mar, 2007 1 commit
    • unknown's avatar
      Bug #24791: Union with AVG-groups generates wrong results · aa323361
      unknown authored
      The problem in this bug is when we create temporary tables. When
      temporary tables are created for unions, there is some 
      inferrence being carried out regarding the type of the column.
      Whenever this column type is inferred to be REAL (i.e. FLOAT or
      DOUBLE), MySQL will always try to maintain exact precision, and
      if that is not possible (there are hardware limits, since FLOAT
      and DOUBLE are stored as approximate values) will switch to
      using approximate values. The problem here is that at this point
      the information about number of significant digits is not 
      available. Furthermore, the number of significant digits should
      be increased for the AVG function, however, this was not properly 
      handled. There are 4 parts to the problem:
      
      #1: DOUBLE and FLOAT fields don't display their proper display 
      lengths in max_display_length(). This is hard-coded as 53 for 
      DOUBLE and 24 for FLOAT. Now changed to instead return the 
      field_length.
      
      #2: Type holders for temporary tables do not preserve the 
      max_length of the Item's from which they are created, and is 
      instead reverted to the 53 and 24 from above. This causes 
      *all* fields to get non-fixed significant digits.
      
      #3: AVG function does not update max_length (display length)
      when updating number of decimals.
      
      #4: The function that switches to non-fixed number of 
      significant digits should use DBL_DIG + 2 or FLT_DIG + 2 as 
      cut-off values (Since fixed precision does not use the 'e' 
      notation)
      
      Of these points, #1 is the controversial one, but this 
      change is preferred and has been cleared with Monty. The 
      function causes quite a few unit tests to blow up and they had
      to b changed, but each one is annotated and motivated. We 
      frequently see the magical 53 and 24 give way to more relevant
      numbers.
      
      
      mysql-test/r/create.result:
        bug#24791
        
        changed test result
        
        With the changes made for FLOAT and DOUBLE, the original display
        lengths are now preserved.
      mysql-test/r/temp_table.result:
        bug#24791
        
        changed test resullt
        
        Test case added
      mysql-test/r/type_float.result:
        bug#24791
        
        changed test result
        
        delta 1: field was originally declared as DOUBLE with no display
        length, so the hardware maximum is chosen rather than 53.
        
        delta 2: fields exceed the maximum precision and thus switch to
        non-fixed significant digits
        
        delta 3: Same as above, number of decmals and significant digits
        was not specified when t3 was created.
      mysql-test/t/temp_table.test:
        bug#24791
        
        Test case
      sql/field.h:
        bug#24791
        
        The method max_display_length is reimplemented as
        
        uint32 max_display_length() { return field_length; }
        
        in Field_double and Field_float. Since all subclasses of 
        Field_real now have the same implementation of this method, the
        implementation has been moved up the hierarchy to Field_real.
      sql/item.cc:
        bug#24791
        
        We switch to a non-fixed number of significant digits
        (by setting decimals=NOT_FIXED_DECIMAL) if the calculated 
        display length is greater than the display length of a value 
        with the maximum precision. These values differ for double and 
        float, obviously.
      sql/item_sum.cc:
        bug#24791
        
        We must increase the display length accordinly whenever we 
        change number of decimal places.
      aa323361
  2. 14 Mar, 2007 3 commits
    • unknown's avatar
      Bug #26794: fixed valgrind warning · ff810fb9
      unknown authored
      ff810fb9
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 347e832a
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/autopush/B26794-5.0-opt
      
      
      sql/field.cc:
        Auto merged
      347e832a
    • unknown's avatar
      Bug #26794: · a22f257e
      unknown authored
      Different set of conditions is used to verify
      the validity of index definitions over a GEOMETRY
      column in ALTER TABLE and CREATE TABLE. 
      The difference was on how sub-keys notion validity
      is checked.
      Fixed by extending the CREATE TABLE condition to
      support the cases allowed in ALTER TABLE.
      Made the SHOW CREATE TABLE not to display spatial
      indexes using the sub-key notion.
      
      
      mysql-test/r/alter_table.result:
        Bug #26794: test case
      mysql-test/r/gis-rtree.result:
        Bug #26794: fixed SHOW CREATE TABLE output.
      mysql-test/t/alter_table.test:
        Bug #26794: test case
      sql/field.cc:
        Bug #26794: Allow sub-keys for GEOMETRY
      sql/sql_show.cc:
        Bug #26794: Don't show sub-key notion 
         in SHOW CREATE TABLE for SPATIAL indexes.
      sql/sql_table.cc:
        Bug #26794: Allow sub-keys for GEOMETRY
      a22f257e
  3. 13 Mar, 2007 1 commit
  4. 12 Mar, 2007 3 commits
    • unknown's avatar
      Merge olga.mysql.com:/home/igor/mysql-5.0-opt · ed80fe2d
      unknown authored
      into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug26963
      
      
      mysql-test/r/select.result:
        Auto merged
      mysql-test/t/select.test:
        Auto merged
      ed80fe2d
    • unknown's avatar
      Fixed bug #26738: incomplete string values in a result set column · 91abf15e
      unknown authored
      when the column is to be read from a derived table column which 
      was specified as a concatenation of string literals.
      The bug happened because the Item_string::append did not adjust the
      value of Item_string::max_length. As a result of it the temporary 
      table column  defined to store the concatenation of literals was 
      not wide enough to hold the whole value.
      
      
      
      mysql-test/r/subselect.result:
        Added a test case for bug #26738.
      mysql-test/t/subselect.test:
        Added a test case for bug #26738.
      91abf15e
    • unknown's avatar
      Fixed bug #26963: invalid optimization of the pushdown conditions · 13c05162
      unknown authored
      after single-row table substitution could lead to a wrong result set.
      The bug happened because the function Item_field::replace_equal_field
      erroniously assumed that any field included in a multiple equality
      with a constant has been already substituted for this constant.
      This not true for fields becoming constant after row substitutions
      for constant tables.
       
      
      
      mysql-test/r/select.result:
        Added a test case for bug #26963.
      mysql-test/t/select.test:
        Added a test case for bug #26963.
      sql/item.cc:
        Fixed bug #26963: invalid optimization of the pushdown conditions
        after single-row table substitution could lead to a wrong result set.
        The bug happened because the function Item_field::replace_equal_field
        erroneously assumed that any field included in a multiple equality
        with a constant has been already substituted for this constant.
        This not true for fields becoming constant after row substitutions
        for constant tables.
      13c05162
  5. 11 Mar, 2007 1 commit
  6. 10 Mar, 2007 4 commits
    • unknown's avatar
      Merge moonbone.local:/mnt/gentoo64/work/15757-bug-5.0-opt-mysql · 2f774b47
      unknown authored
      into  moonbone.local:/mnt/gentoo64/work/25373-bug-5.0-opt-mysql
      
      
      sql/item_strfunc.cc:
        Auto merged
      mysql-test/r/func_str.result:
        SCCS merged
      mysql-test/t/func_str.test:
        SCCS merged
      2f774b47
    • unknown's avatar
      Bug#15757: Wrong SUBSTRING() result when a tmp table was employed. · 816ea8a3
      unknown authored
      When the SUBSTRING() function was used over a LONGTEXT field the max_length of
      the SUBSTRING() result was wrongly calculated and set to 0. As the max_length
      parameter is used while tmp field creation it limits the length of the result
      field and leads to printing an empty string instead of the correct result.
      
      Now the Item_func_substr::fix_length_and_dec() function correctly calculates
      the max_length parameter.
      
      
      mysql-test/t/func_str.test:
        Added a test case for the bug#15757: Wrong SUBSTRING() result when a tmp table was employed.
      mysql-test/r/func_str.result:
        Added a test case for the bug#15757: Wrong SUBSTRING() result when a tmp table was employed.
      sql/item_strfunc.cc:
        Bug#15757: Wrong SUBSTRING() result when a tmp table was employed.
        Now the Item_func_substr::fix_length_and_dec() function correctly calculates
        the max_length parameter.
      816ea8a3
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · c0a05435
      unknown authored
      into  moonbone.local:/mnt/gentoo64/work/25373-bug-5.0-opt-mysql
      
      
      mysql-test/r/func_str.result:
        Auto merged
      mysql-test/r/subselect.result:
        Auto merged
      mysql-test/r/union.result:
        Auto merged
      sql/item.cc:
        Auto merged
      c0a05435
    • unknown's avatar
      Fixed bug #26830: a crash for the query with a subselect containing ROLLUP. · 4d6ad7ac
      unknown authored
      Crash happened because the function get_best_group_min_max detected
      joins with ROLLUP incorrectly.
      
      
      mysql-test/r/olap.result:
        Added a test case for bug #26830.
      mysql-test/t/olap.test:
        Added a test case for bug #26830.
      4d6ad7ac
  7. 09 Mar, 2007 12 commits
    • unknown's avatar
      Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized · 944030ae
      unknown authored
      away.
      
      Additional fix for bug#22331. Now Item_field prints its value in the case of
      the const field.
      
      
      mysql-test/r/varbinary.result:
        Corrected test case after fix for bug#22331.
      mysql-test/r/union.result:
        Corrected test case after fix for bug#22331.
      mysql-test/r/subselect.result:
        Corrected test case after fix for bug#22331.
      mysql-test/r/func_test.result:
        Corrected test case after fix for bug#22331.
      mysql-test/r/having.result:
        Corrected test case after fix for bug#22331.
      mysql-test/r/func_regexp.result:
        Corrected test case after fix for bug#22331.
      mysql-test/r/func_str.result:
        Corrected test case after fix for bug#22331.
      mysql-test/r/func_default.result:
        Corrected test case after fix for bug#22331.
      mysql-test/r/explain.result:
        Corrected test case after fix for bug#22331.
      sql/sql_union.cc:
        Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized
        away.
        Cleanup of the SELECT_LEX::order_list list.
      sql/item.h:
        Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized
        away.
        Added the print() member function to the Item_field class.
      sql/item.cc:
        Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized
        away.
        Added the print() member function to the Item_field class.
      944030ae
    • unknown's avatar
      Merge bk-internal:/home/bk/mysql-5.0-opt · 81beab69
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/work/WL3527-5.0-opt-merge
      
      
      sql/sql_yacc.yy:
        Auto merged
      mysql-test/r/select.result:
        merge
      mysql-test/t/select.test:
        merge
      81beab69
    • unknown's avatar
      WL#3527: Extend IGNORE INDEX so places where index is ignored can · ff79cd68
      unknown authored
               be specified
       5.0 part of the fix. Implements IGNORE INDEX FOR JOIN as a synonym
       of IGNORE INDEX for backward compatibility with the 5.1 fix.
      
      
      mysql-test/r/select.result:
        WL#3527: Extend IGNORE INDEX so places where index is ignored can 
                 be specified
        - test case
      mysql-test/t/select.test:
        WL#3527: Extend IGNORE INDEX so places where index is ignored can 
                 be specified
        - test case
      ff79cd68
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 52fb60da
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/autopush/B26281-5.0-opt
      
      
      52fb60da
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · c7de22a1
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/autopush/B26281-5.0-opt
      
      
      sql/item_strfunc.cc:
        Auto merged
      mysql-test/r/func_str.result:
        resolved test merge conflicts
      mysql-test/t/func_str.test:
        resolved test merge conflicts
      c7de22a1
    • unknown's avatar
      Bug #26281: · 29b6d554
      unknown authored
       Fixed boundry checks in the INSERT() function:
       were one off.
      
      
      mysql-test/r/func_str.result:
        Bug #26281: test case
      mysql-test/t/func_str.test:
        Bug #26281: test case
      sql/item_strfunc.cc:
        Bug #26281: fixed boundry checks
      29b6d554
    • unknown's avatar
      Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · e68df7a1
      unknown authored
      into  olga.mysql.com:/home/igor/mysql-5.0-opt
      
      
      sql/item.cc:
        Auto merged
      e68df7a1
    • unknown's avatar
      Merge olga.mysql.com:/home/igor/mysql-5.0-opt · 413604f9
      unknown authored
      into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug26661
      
      
      413604f9
    • unknown's avatar
      Fixed bug #26661: crash when order by clause in a union · 729bcaf4
      unknown authored
      construct references invalid name.
      Derived tables currently cannot use outer references.
      Thus there is no outer context for them.
      The 4.1 code takes this fact into account while the 
      Item_field::fix_outer_field code of 5.0 lost the check that blocks
      any attempts to resolve names in outer context for derived tables.
      
      
      mysql-test/r/union.result:
        Added a test case for bug #26661.
      mysql-test/t/union.test:
        Added a test case for bug #26661.
      sql/item.cc:
        Fixed bug #26661.
        Derived tables currently cannot use outer references.
        Thus there is no outer context for them.
        The 4.1 code takes this fact into account while the 
        Item_field::fix_outer_field code of 5.0 lost the check that blocks
        any attempts to resolve names in outer context for derived tables.
      729bcaf4
    • unknown's avatar
      Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 76542acd
      unknown authored
      into  mysql.com:/home/hf/work/mrg/mysql-5.0-opt
      
      
      sql/sql_select.cc:
        Auto merged
      76542acd
    • unknown's avatar
      Merge mysql.com:/home/hf/work/mrg/mysql-4.1-opt · 3cd8b881
      unknown authored
      into  mysql.com:/home/hf/work/mrg/mysql-5.0-opt
      
      
      3cd8b881
    • unknown's avatar
      aftermerge fix · 5c1e48c5
      unknown authored
      
      mysql-test/r/view.result:
        merging
      5c1e48c5
  8. 08 Mar, 2007 13 commits
  9. 07 Mar, 2007 2 commits