1. 30 Mar, 2007 1 commit
    • unknown's avatar
      Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the · e8da4d1b
      unknown authored
      NO_AUTO_VALUE_ON_ZERO mode.
      
      In the NO_AUTO_VALUE_ON_ZERO mode the table->auto_increment_field_not_null
      variable is used to indicate that a non-NULL value was specified by the user
      for an auto_increment column. When an INSERT .. ON DUPLICATE updates the
      auto_increment field this variable is set to true and stays unchanged for the
      next insert operation. This makes the next inserted row sometimes wrongly have
      0 as the value of the auto_increment field.
      
      Now the fill_record() function resets the table->auto_increment_field_not_null
      variable before filling the record.
      The table->auto_increment_field_not_null variable is also reset by the
      open_table() function for a case if we missed some auto_increment_field_not_null
      handling bug.
      Now the table->auto_increment_field_not_null is reset at the end of the
      mysql_load() function.
      
      Reset the table->auto_increment_field_not_null variable after each
      write_row() call in the copy_data_between_tables() function.
      
      
      
      
      sql/field_conv.cc:
        Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the 
        NO_AUTO_VALUE_ON_ZERO mode.
        A comment is corrected.
      sql/handler.cc:
        Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the 
        NO_AUTO_VALUE_ON_ZERO mode.
        Now the handler::update_auto_increment() function doesn't reset the
        table->auto_increment_field_not_null variable as it is done in the
        fill_record() function.
      sql/sql_base.cc:
        Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the 
        NO_AUTO_VALUE_ON_ZERO mode.
        Now the fill_record() function resets the table->auto_increment_field_not_null
        variable before filling the record.
        The table->auto_increment_field_not_null variable is also reset by the
        open_table() function for a case if we missed some auto_increment_field_not_null
        handling bug.
      sql/sql_insert.cc:
        Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the
        NO_AUTO_VALUE_ON_ZERO mode.
        Now the the table->auto_increment_field_not_null is reset at the end of the
        mysql_insert() an in the select_insert class destructor.
      sql/sql_load.cc:
        Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the 
        NO_AUTO_VALUE_ON_ZERO mode.
        Now the table->auto_increment_field_not_null is reset at the end of the
        mysql_load() function.
      sql/sql_table.cc:
        Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the
        NO_AUTO_VALUE_ON_ZERO mode.
        Reset the table->auto_increment_field_not_null variable after each
        write_row() call in the copy_data_between_tables() function.
      sql/table.h:
        Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the
        NO_AUTO_VALUE_ON_ZERO mode.
        A comment added.
      mysql-test/r/insert_update.result:
        Added the test case for the bug#23233: 0 as LAST_INSERT_ID() after
        INSERT .. ON DUPLICATE in the NO_AUTO_VALUE_ON_ZERO mode.
      mysql-test/t/insert_update.test:
        Added the test case for the bug#23233: 0 as LAST_INSERT_ID() after
        INSERT .. ON DUPLICATE in the NO_AUTO_VALUE_ON_ZERO mode.
      e8da4d1b
  2. 29 Mar, 2007 7 commits
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 68b2dd77
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/autopush/B26815-5.0-opt
      
      
      sql/item_sum.cc:
        Auto merged
      sql/sql_select.cc:
        Auto merged
      68b2dd77
    • unknown's avatar
      Merge magare.gmz:/home/kgeorge/mysql/work/B26815-5.0-opt · 1b6ef276
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/autopush/B26815-5.0-opt
      
      
      mysql-test/r/func_gconcat.result:
        Auto merged
      mysql-test/t/func_gconcat.test:
        Auto merged
      sql/item_sum.cc:
        Auto merged
      sql/sql_select.cc:
        Auto merged
      1b6ef276
    • unknown's avatar
      Bug #26815: · 869b080e
      unknown authored
       When creating a temporary table the concise column type
       of a string expression is decided based on its length:
       - if its length is under 512 it is stored as either 
         varchar or char.
       - otherwise it is stored as a BLOB.
       
       There is a flag (convert_blob_length) to create_tmp_field 
       that, when >0 allows to force creation of a varchar if the
       max blob length is under convert_blob_length.
       However it must be verified that convert_blob_length 
       (settable through a SQL option in some cases) is 
       under the maximum that can be stored in a varchar column.
       While performing that check for expressions in 
       create_tmp_field_from_item the max length of the blob was
       used instead. This causes blob columns to be created in the
       heap temp table used by GROUP_CONCAT (where blobs must not
       be created in the temp table because of the constant 
       convert_blob_length that is passed to create_tmp_field() ).
       And since these blob columns are not expected in that place
       we get wrong results.
       Fixed by checking that the value of the flag variable is 
       in the limits that fit into VARCHAR instead of the max length
       of the blob column.
      
      
      mysql-test/r/func_gconcat.result:
        Bug #26815: test case
      mysql-test/t/func_gconcat.test:
        Bug #26815: test case
      sql/item_sum.cc:
        Bug #26815: wrong length was checked
      sql/sql_select.cc:
        Bug #26815: wrong length was checked
      869b080e
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 91c9365b
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/autopush/B27300-5.0-opt
      
      91c9365b
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 29b58990
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/autopush/B27300-5.0-opt
      
      29b58990
    • unknown's avatar
      Merge of BUG#26624 and BUG#26625 · 43a5c4e7
      unknown authored
      
      mysql-test/r/range.result:
        Auto merged
      mysql-test/t/range.test:
        Auto merged
      43a5c4e7
    • unknown's avatar
      BUG#26624: high mem usage (crash) in range optimizer · 5daca260
      unknown authored
       - Post-review fixes
      
      5daca260
  3. 28 Mar, 2007 6 commits
    • unknown's avatar
      Merge mysql.com:/home/psergey/mysql-4.1-bug26625 · 3362a93e
      unknown authored
      into  mysql.com:/home/psergey/mysql-4.1-bug26624-r2
      
      3362a93e
    • unknown's avatar
      BUG#26624: high mem usage (crash) in range optimizer · 968f7b47
      unknown authored
      - Added PARAM::alloced_sel_args where we count the # of SEL_ARGs
        created by SEL_ARG tree cloning operations.
      - Made the range analyzer to shortcut and not do any more cloning 
        if we've already created MAX_SEL_ARGS SEL_ARG objects in cloning.
      - Added comments about space complexity of SEL_ARG-graph 
        representation.
      
      
      mysql-test/r/range.result:
        BUG#26624: Testcase
      mysql-test/t/range.test:
        BUG#26624: Testcase
      968f7b47
    • unknown's avatar
      Delete: sql/mysqld.cc.rej · 5cc44c1c
      unknown authored
      5cc44c1c
    • unknown's avatar
      BUG#26625: crash in range optimizer (out of mem) · 01b23745
      unknown authored
      - Define Sql_alloc::operator new() as thow() so that C++ compiler
        handles NULL return values
      (there is no testcase as there is no portable way to set limit on the 
      amount of memory that a process can allocate)
      
      
      sql/sql_list.h:
        BUG#26625: crash in range optimizer (out of mem) 
        - Define Sql_alloc::operator new() as thow() so that C++ compiler
          handles NULL return values
      01b23745
    • unknown's avatar
      Bug #27300: · 82d3d509
      unknown authored
        Geometry fields have a result type string and a 
        special subclass to cater for the differences
        between them and the base class (just like 
        DATE/TIME).
        When creating temporary tables for results of 
        functions that return results of type GEOMETRY
        we must construct fields of the derived class 
        instead of the base class.
        Fixed by creating a GEOMETRY field (Field_geom) 
        instead of a generic BLOB (Field_blob) in temp 
        tables for the results of GIS functions that 
        have GEOMETRY return type (Item_geometry_func).
      
      
      mysql-test/r/gis.result:
        Bug #27300: test case
      mysql-test/t/gis.test:
        Bug #27300: test case
      sql/item.cc:
        Bug #27300:
          Create a GEOMETRY field (Field_geom) instead of 
          a generic BLOB (Field_blob) in temp tables for 
          the results of GIS functions (Item_geometry_func).
      sql/sql_select.cc:
        Bug #27300:
          Create a GEOMETRY field (Field_geom) instead of 
          a generic BLOB (Field_blob) in temp tables for 
          the results of GIS functions (Item_geometry_func).
      82d3d509
    • unknown's avatar
      3f29ab35
  4. 27 Mar, 2007 2 commits
    • unknown's avatar
      Fixed bug #27348. · 9f49f034
      unknown authored
      If a set function with a outer reference s(outer_ref) cannot be aggregated 
      the outer query against which the reference has been resolved then MySQL
      interpretes s(outer_ref) in the same way as it would interpret s(const).
      Hovever the standard requires throwing an error in this situation.
      Added some code to support this requirement in ansi mode.
      Corrected another minor bug in Item_sum::check_sum_func.
       
      
      
      mysql-test/r/subselect.result:
        Added a test case for bug #27348.
      mysql-test/t/subselect.test:
        Added a test case for bug #27348.
      sql/item_sum.cc:
        Fixed bug #27348.
        If a set function with a outer reference s(outer_ref) cannot be aggregated 
        the outer query against which the reference has been resolved then MySQL
        interprets s(outer_ref) in the same way as it would interpret s(const).
        Hovever the standard requires throwing an error in this situation.
        Added some code to support this requirement in ansi mode.
        Corrected another minor bug in Item_sum::check_sum_func.
      9f49f034
    • unknown's avatar
      Bug #26815: · da53497b
      unknown authored
       When creating a temporary table the concise column type
       of a string expression is decided based on its length:
       - if its length is under 512 it is stored as either 
         varchar or char.
       - otherwise it is stored as a BLOB.
       
       There is a flag (convert_blob_length) to create_tmp_field 
       that, when >0 allows to force creation of a varchar if the
       max blob length is under convert_blob_length.
       However it must be verified that convert_blob_length 
       (settable through a SQL option in some cases) is 
       under the maximum that can be stored in a varchar column.
       While performing that check for expressions in 
       create_tmp_field_from_item the max length of the blob was
       used instead. This causes blob columns to be created in the
       heap temp table used by GROUP_CONCAT (where blobs must not
       be created in the temp table because of the constant 
       convert_blob_length that is passed to create_tmp_field() ).
       And since these blob columns are not expected in that place
       we get wrong results.
       Fixed by checking that the value of the flag variable is 
       in the limits that fit into VARCHAR instead of the max length
       of the blob column.
      
      
      mysql-test/r/func_gconcat.result:
        Bug #26815: test case
      mysql-test/t/func_gconcat.test:
        Bug #26815: test case
      sql/item_sum.cc:
        Bug #26815: wrong length was checked
      sql/sql_select.cc:
        Bug #26815: wrong length was checked
      da53497b
  5. 26 Mar, 2007 5 commits
    • unknown's avatar
      WL3527: 5.0 part: · fbf7748f
      unknown authored
      enabled the optional FOR JOIN to all the three
      clauses : USE, FORCE and IGNORE
      
      
      mysql-test/r/select.result:
        WL3527: 5.0 part: test cases
      mysql-test/t/select.test:
        WL3527: 5.0 part: test cases
      fbf7748f
    • unknown's avatar
      Merge magare.gmz:/home/kgeorge/mysql/work/B27164-4.1-opt · 79b19994
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/work/B27164-5.0-opt
      
      
      mysql-test/t/gis.test:
        Auto merged
      mysql-test/r/gis.result:
        merge 4.1-opt -> 5.0-opt
      sql/field.h:
        merge 4.1-opt -> 5.0-opt
      79b19994
    • unknown's avatar
      Bug #27164: not reseting the data pointer · c9b64463
      unknown authored
       to 0 causes wrong (large) length to be read
       from the row in _mi_calc_blob_length() when 
       storing NULL values in (e.g) POINT columns.
       This large length is then used to allocate
       a block of memory that (on some OSes) causes
       trouble.
       Fixed by calling the base class's 
       Field_blob::reset() from Field_geom::reset()
       that is called when storing a NULL value into
       the column.
      
      
      mysql-test/r/gis.result:
        Bug #27164: test case
      mysql-test/t/gis.test:
        Bug #27164: test case
      sql/field.h:
        Bug #27164: not reseting the data pointer
         to 0 causes wrong (large) length to be read
         from the row in _mi_calc_blob_length() when 
         storing NULL values in (e.g) POINT columns.
         This large length is then used to allocate
         a block of memory that (on some OSes) causes
         trouble.
      c9b64463
    • unknown's avatar
      Merge olga.mysql.com:/home/igor/mysql-5.0-opt · 2b04d1b4
      unknown authored
      into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug27229
      
      2b04d1b4
    • unknown's avatar
      This is a fix for the memory corruption occurred in one of test cases · 371b1a59
      unknown authored
      from func_group.test after the patch for bug #27229 had been applied.
      The memory corruption happened because in some rare cases the function
      count_field_types underestimated the number of elements in
      in the array param->items_to_copy.
      
      
      sql/item_sum.cc:
        The return value of the Item_sum::update_used_tables method
        should not depend on the place of aggregation of the set 
        function for which the Item_sum object has been created.
      sql/sql_select.cc:
        This is a fix for the memory corruption occurred in one of test cases
        from func_group.test after the patch for bug #27229 had been applied.
        The memory corruption happened because in some rare cases the function
        count_field_types underestimated the number of elements in
        in the array param->items_to_copy.
        
        Currently it's not guaranteed that after JOIN::prepare() the 
        used_tables attribute is calculated for all items. For example
        for the expression SUM(outer_ref)+1 used_tables() must return
        OUTER_REF_TABLE_BIT. Yet by the moment when the used_tables
        attribute is calculated in JOIN::prepare SUM(outer_ref) has
        not been substituted for Item_aggregate_ref yet.
        By this reason additional calls of the method update_used_tables
        are needed for some items passed as parameters to the function
        create_tmp_table.
      371b1a59
  6. 23 Mar, 2007 1 commit
  7. 22 Mar, 2007 18 commits
    • unknown's avatar
      Merge olga.mysql.com:/home/igor/mysql-5.0-opt · a27ddd70
      unknown authored
      into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug27229
      
      
      sql/item.cc:
        Auto merged
      sql/item_sum.cc:
        Auto merged
      sql/sql_base.cc:
        Auto merged
      sql/sql_select.cc:
        Auto merged
      a27ddd70
    • unknown's avatar
      Fixed bug #27229: crash when a set function aggregated in outer · 31f97af2
      unknown authored
      context was used as an argument of GROUP_CONCAT.
      Ensured correct setting of the depended_from field in references
      generated for set functions aggregated in outer selects.
      A wrong value of this field resulted in wrong maps returned by 
      used_tables() for these references.
      Made sure that a temporary table field is added for any set function
      aggregated in outer context when creation of a temporary table is 
      needed to execute the inner subquery. 
      
      
      mysql-test/r/subselect.result:
        Added a test case for bug #27229.
      mysql-test/t/subselect.test:
        Added a test case for bug #27229.
      sql/item.cc:
        Fixed bug #27229: crash when a set function aggregated in outer
        context was used as an argument of GROUP_CONCAT.
        Ensured correct setting of the depended_from field in references
        generated for set functions aggregated in outer selects.
      sql/item_sum.cc:
        Fixed bug #27229: crash when a set function aggregated in outer
        context was used as an argument of GROUP_CONCAT.
        Added the field aggr_sel to the objects of the class Item_sum.
        In any Item_sum object created for a set function this field 
        has to contain a pointer to the select where the set function
        is aggregated.
      sql/item_sum.h:
        Fixed bug #27229: crash when a set function aggregated in outer
        context was used as an argument of GROUP_CONCAT.
        Added the field aggr_sel to the objects of the class Item_sum.
        In any Item_sum object created for a set function this field 
        has to contain a pointer to the select where the set function
        is aggregated.
        Added a method that says whether a set function is aggregated
        in outer context and, if so, returns the aggregating select.
        Removed the field nest_level_tables_count introduced by the
        patch for bug 24484 as aggr_sel->join->tables contains the
        sane number.
      sql/sql_base.cc:
        Fixed bug #27229: crash when a set function aggregated in outer
        context was used as an argument of GROUP_CONCAT.
        Added the field aggr_sel to the objects of the class Item_sum.
        Removed changes introduced by the patch for bug 24484 as 
        the field leaf_count of the THD class is not used anymore.
      sql/sql_class.h:
        Fixed bug #27229: crash when a set function aggregated in outer
        context was used as an argument of GROUP_CONCAT.
        Added the field aggr_sel to the objects of the class Item_sum.
        Removed changes introduce by the patch for bug 24484 as 
        the field leaf_count of the THD class is not used anymore.
      sql/sql_insert.cc:
        Fixed bug #27229: crash when a set function aggregated in outer
        context was used as an argument of GROUP_CONCAT.
        Added the field aggr_sel to the objects of the class Item_sum.
        Removed changes introduce by the patch for bug 24484 as 
        the field leaf_count of the THD class is not used anymore.
      sql/sql_select.cc:
        Fixed bug #27229: crash when a set function aggregated in outer
        context was used as an argument of GROUP_CONCAT.
        When creating a temporary table a field is added in it for any 
        set function aggregated in outer context.
      31f97af2
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · e17b6fdd
      unknown authored
      into  moonbone.local:/mnt/gentoo64/work/26813-bug-5.0-opt-mysql
      
      e17b6fdd
    • unknown's avatar
      sql_view.cc: · 3548ccc9
      unknown authored
        Post-fix for bug#26813.
      
      
      sql/sql_view.cc:
        Post-fix for bug#26813.
      3548ccc9
    • unknown's avatar
      Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 25b34c7b
      unknown authored
      into  mysql.com:/home/hf/work/mrg/mysql-5.0-opt
      
      25b34c7b
    • unknown's avatar
      Merge bk@192.168.21.1:mysql-5.0-opt · 40609c75
      unknown authored
      into  mysql.com:/home/hf/work/mrg/mysql-5.0-opt
      
      40609c75
    • unknown's avatar
      Merge mysql.com:/home/hf/work/mrg/mysql-4.1-opt · f8b24de4
      unknown authored
      into  mysql.com:/home/hf/work/mrg/mysql-5.0-opt
      
      f8b24de4
    • unknown's avatar
      Merge bk@192.168.21.1:mysql-5.0 · 61ff2625
      unknown authored
      into  mysql.com:/home/hf/work/mrg/mysql-5.0-opt
      
      
      sql/item_cmpfunc.cc:
        Auto merged
      61ff2625
    • unknown's avatar
      Merge bk@192.168.21.1:mysql-4.1 · fad244c5
      unknown authored
      into  mysql.com:/home/hf/work/mrg/mysql-4.1-opt
      
      fad244c5
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · c7831e89
      unknown authored
      into  moonbone.local:/mnt/gentoo64/work/26813-bug-5.0-opt-mysql
      
      c7831e89
    • unknown's avatar
      Bug#26813: The SUPER privilege is wrongly required to alter a view created by · b6acfac5
      unknown authored
      another user.
      
      When the DEFINER clause isn't specified in the ALTER statement then it's loaded
      from the view definition. If the definer differs from the current user then
      the error is thrown because only a super-user can set other users as a definers.
      
      Now if the DEFINER clause is omitted in the ALTER VIEW statement then the
      definer from the original view is used without check.
      
      
      mysql-test/t/view_grant.test:
        Added a test case for the bug#27006: The SUPER privilege is wrongly required
        to alter a view created by another user.
      mysql-test/r/view_grant.result:
        Added a test case for the bug#27006: The SUPER privilege is wrongly required
        to alter a view created by another user.
      sql/sql_view.cc:
        Bug#26813: The SUPER privilege is wrongly required to alter a view created by
        another user.
        Now if the DEFINER clause is omitted in the ALTER VIEW statement then the
        definer from the original view is used without check.
      b6acfac5
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · ff716a3e
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/autopush/B26186-5.0-opt
      
      
      sql/sql_delete.cc:
        Auto merged
      ff716a3e
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · a6bf4308
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/autopush/B26207-5.0-opt
      
      
      sql/sql_select.h:
        Auto merged
      a6bf4308
    • unknown's avatar
      Bug #26207: When making the key image to use · 843ce85a
      unknown authored
       in index search MySQL was not explicitly
       suppressing warnings. And if the context 
       happens to enable warnings (e.g. INSERT ..
       SELECT) the warnings resulting from converting 
       the data the key is compared to are 
       reported to the client.
       Fixed by suppressing warnings when converting
       the data to the same type as the key parts.
      
      
      mysql-test/r/insert_select.result:
        Bug #26207: test case
      mysql-test/t/insert_select.test:
        Bug #26207: test case
      sql/sql_select.h:
        Bug #26207: supress warnings when converting
          data of the same type to key buffer format.
      843ce85a
    • unknown's avatar
      Bug#24791: Union with AVG-groups generates wrong results · 2e72abed
      unknown authored
      Patch appled after doing a pull from the team tree. Additional tests had to be
      fixed
      
      
      mysql-test/r/union.result:
        Bug 24791
        
        The tests for temporary tables have been fixed. Since the call to 
        display_length(Item) was removed from the constructor for Item_type_holder, items 
        in temporary tables keep the original values of the items, rather than the magic
        numbers supplied by display_length.
      2e72abed
    • unknown's avatar
      Merge mhansson@bk-internal:/home/bk/mysql-5.0-opt · d25303d0
      unknown authored
      into  linux-st28.site:/home/martin/mysql/src/5.0o-bug24791
      
      
      sql/item.cc:
        Auto merged
      d25303d0
    • unknown's avatar
      Merge joreland@bk-internal.mysql.com:/home/bk/mysql-5.0-ndb · 74ef4a53
      unknown authored
      into  perch.ndb.mysql.com:/home/jonas/src/mysql-5.0-ndb
      
      74ef4a53
    • unknown's avatar
      Merge perch.ndb.mysql.com:/home/jonas/src/50-work · 890b9cce
      unknown authored
      into  perch.ndb.mysql.com:/home/jonas/src/mysql-5.0-ndb
      
      
      ndb/test/ndbapi/testNodeRestart.cpp:
        Auto merged
      890b9cce