1. 24 Feb, 2007 2 commits
    • evgen@moonbone.local's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · b617c369
      evgen@moonbone.local authored
      into  moonbone.local:/mnt/gentoo64/work/23800-bug1-5.0-opt-mysql
      b617c369
    • evgen@moonbone.local's avatar
      item.cc: · 47ffb61f
      evgen@moonbone.local authored
        Post fix for bug#23800.
        The Item_field constructor now increases the select_n_where_fields counter.
      sql_yacc.yy:
        Post fix for bug#23800.
        Take into account fields that might be added by subselects.
      sql_lex.h:
        Post fix for bug#23800.
        Added the select_n_where_fields variable to the st_select_lex class.
      sql_lex.cc:
        Post fix for bug#23800.
        Initialization of the select_n_where_fields variable.
      47ffb61f
  2. 22 Feb, 2007 2 commits
    • mhansson@dl145s.mysql.com's avatar
      Merge mhansson@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · bcf1596d
      mhansson@dl145s.mysql.com authored
      into  dl145s.mysql.com:/users/mhansson/mysql/autopush/5.0o-bug24010
      bcf1596d
    • mhansson/martin@linux-st28.site's avatar
      Bug #24010: INSERT INTO ... SELECT fails on unique constraint with data · 340ab217
      mhansson/martin@linux-st28.site authored
      it doesn't select.
      
      This bug was fixed along with bug #16861: User defined variable can 
      have a wrong value if a tmp table was used.
      
      There the fix consisted of Item_func_set_user_var overloading the method
      Item::save_in_field. Consider the query from the test case:
      
      
      INSERT INTO foo( bar, baz )
      SELECT 
        bar,
        @newBaz := 1 + baz
      FROM 
        foo
      WHERE 
        quux <= 0.1;
      
      Here the assignment expression '@newBaz := 1 + baz' is represented by an 
      Item_func_set_user_var. Its member method save_in_field, which writes the 
      value of this assignment into the result field, writes the val_xxx() value, 
      which is not updated at this point. In the fix introduced by the patch,
      the save_in_field method reads the actual variable value instead.
      
      See also comment for 
      ChangeSet@1.2368.1.3, 2007-01-09 23:24:56+03:00, evgen@moonbone.local +4 -0
      and comment for
      Item_func_set_user_var::save_in_field (item_func.cc)
      340ab217
  3. 21 Feb, 2007 2 commits
    • evgen@moonbone.local's avatar
      Merge moonbone.local:/mnt/gentoo64/work/bk-trees/mysql-5.0-opt · 76461a44
      evgen@moonbone.local authored
      into  moonbone.local:/mnt/gentoo64/work/23800-bug1-5.0-opt-mysql
      76461a44
    • evgen@moonbone.local's avatar
      Bug#23800: Outer fields in correlated subqueries is used in a temporary table · 9a233742
      evgen@moonbone.local authored
      created for sorting.
      
      Any outer reference in a subquery was represented by an Item_field object.
      If the outer select employs a temporary table all such fields should be
      replaced with fields from that temporary table in order to point to the 
      actual data. This replacement wasn't done and that resulted in a wrong
      subquery evaluation and a wrong result of the whole query.
      
      Now any outer field is represented by two objects - Item_field placed in the
      outer select and Item_outer_ref in the subquery. Item_field object is
      processed as a normal field and the reference to it is saved in the
      ref_pointer_array. Thus the Item_outer_ref is always references the correct
      field. The original field is substituted for a reference in the
      Item_field::fix_outer_field() function.
      
      New function called fix_inner_refs() is added to fix fields referenced from
      inner selects and to fix references (Item_ref objects) to these fields.
      
      The new Item_outer_ref class is a descendant of the Item_direct_ref class.
      It additionally stores a reference to the original field and designed to
      behave more like a field.
      9a233742
  4. 19 Feb, 2007 4 commits
    • gkodinov/kgeorge@rakia.gmz's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 96a868a7
      gkodinov/kgeorge@rakia.gmz authored
      into  rakia.gmz:/home/kgeorge/mysql/autopush/B19717-5.0-opt
      96a868a7
    • gkodinov/kgeorge@rakia.gmz's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 90a69255
      gkodinov/kgeorge@rakia.gmz authored
      into  rakia.gmz:/home/kgeorge/mysql/autopush/B19717-5.0-opt
      90a69255
    • gkodinov/kgeorge@rakia.gmz's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 8f52c5b2
      gkodinov/kgeorge@rakia.gmz authored
      into  rakia.gmz:/home/kgeorge/mysql/autopush/B25831-5.0-opt
      8f52c5b2
    • gkodinov/kgeorge@macbook.gmz's avatar
      Bug #25831: Deficiencies in INSERT ... SELECT ... field name resolving. · d17ad7b3
      gkodinov/kgeorge@macbook.gmz authored
       Several problems fixed: 
        1. There was a "catch-all" context initialization in setup_tables()
          that was causing the table that we insert into to be visible in the 
          SELECT part of an INSERT .. SELECT .. statement with no tables in
          its FROM clause. This was making sure all the under-initialized
          contexts in various parts of the code are not left uninitialized.
          Fixed by removing the "catch-all" statement and initializing the 
          context in the parser.
        2. Incomplete name resolution context when resolving the right-hand
          values in the ON DUPLICATE KEY UPDATE ... part of an INSERT ... SELECT ...
          caused columns from NATURAL JOIN/JOIN USING table references in the
          FROM clause of the select to be unavailable.
          Fixed by establishing a proper name resolution context.
        3. When setting up the special name resolution context for problem 2
          there was no check for cases where an aggregate function without a
          GROUP BY effectively takes the column from the SELECT part of an 
          INSERT ... SELECT unavailable for ON DUPLICATE KEY UPDATE.
          Fixed by checking for that condition when setting up the name 
          resolution context.
      d17ad7b3
  5. 16 Feb, 2007 5 commits
  6. 15 Feb, 2007 1 commit
  7. 14 Feb, 2007 1 commit
  8. 13 Feb, 2007 5 commits
  9. 12 Feb, 2007 16 commits
  10. 11 Feb, 2007 2 commits