1. 22 Mar, 2007 1 commit
    • unknown's avatar
      Bug #24791: Union with AVG-groups generates wrong results · 86e12ec9
      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.
      86e12ec9
  2. 14 Mar, 2007 3 commits
    • unknown's avatar
      Bug #26794: fixed valgrind warning · 081d88e7
      unknown authored
      081d88e7
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · c350d0fb
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/autopush/B26794-5.0-opt
      
      
      sql/field.cc:
        Auto merged
      c350d0fb
    • unknown's avatar
      Bug #26794: · e8be1467
      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
      e8be1467
  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 · b138d9e2
      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
      b138d9e2
    • unknown's avatar
      Fixed bug #26738: incomplete string values in a result set column · 6f59bfcd
      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.
      6f59bfcd
    • unknown's avatar
      Fixed bug #26963: invalid optimization of the pushdown conditions · bd39e4ba
      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.
      bd39e4ba
  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 · 1625806e
      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
      1625806e
    • unknown's avatar
      Bug#15757: Wrong SUBSTRING() result when a tmp table was employed. · e3cf2fa2
      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.
      e3cf2fa2
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 492f3c34
      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
      492f3c34
    • unknown's avatar
      Fixed bug #26830: a crash for the query with a subselect containing ROLLUP. · fe8951d6
      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.
      fe8951d6
  7. 09 Mar, 2007 12 commits
    • unknown's avatar
      Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized · 9cc553a2
      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.
      9cc553a2
    • unknown's avatar
      Merge bk-internal:/home/bk/mysql-5.0-opt · 08e63a71
      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
      08e63a71
    • unknown's avatar
      WL#3527: Extend IGNORE INDEX so places where index is ignored can · d59e043b
      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
      d59e043b
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 50ff3c62
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/autopush/B26281-5.0-opt
      
      50ff3c62
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 38cd620f
      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
      38cd620f
    • unknown's avatar
      Bug #26281: · 77d751de
      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
      77d751de
    • unknown's avatar
      Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · d9834d8b
      unknown authored
      into  olga.mysql.com:/home/igor/mysql-5.0-opt
      
      
      sql/item.cc:
        Auto merged
      d9834d8b
    • unknown's avatar
      Merge olga.mysql.com:/home/igor/mysql-5.0-opt · 95d61b58
      unknown authored
      into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug26661
      
      95d61b58
    • unknown's avatar
      Fixed bug #26661: crash when order by clause in a union · d738e0ea
      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.
      d738e0ea
    • unknown's avatar
      Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 5fbc4d9d
      unknown authored
      into  mysql.com:/home/hf/work/mrg/mysql-5.0-opt
      
      
      sql/sql_select.cc:
        Auto merged
      5fbc4d9d
    • unknown's avatar
      Merge mysql.com:/home/hf/work/mrg/mysql-4.1-opt · e504208f
      unknown authored
      into  mysql.com:/home/hf/work/mrg/mysql-5.0-opt
      
      e504208f
    • unknown's avatar
      aftermerge fix · 7ce5a98e
      unknown authored
      
      mysql-test/r/view.result:
        merging
      7ce5a98e
  8. 08 Mar, 2007 13 commits
  9. 07 Mar, 2007 2 commits