An error occurred fetching the project authors.
  1. 30 Apr, 2007 1 commit
  2. 29 Apr, 2007 1 commit
    • unknown's avatar
      Fixed bug #24856: the result set of a ROLLUP query with DISTINCT could lack · dd34042e
      unknown authored
      some rollup rows (rows with NULLs for grouping attributes) if GROUP BY
      list contained constant expressions.
      
      This happened because the results of constant expressions were not put
      in the temporary table used for duplicate elimination. In fact a constant
      item from the GROUP BY list of a ROLLUP query can be replaced for an
      Item_null_result object when a rollup row is produced . 
      
      Now the JOIN::rollup_init function wraps any constant item referenced in
      the GROYP BY list of a ROLLUP query into an Item_func object of a special
      class that is never detected as constant item. This ensures creation of
      fields for such  constant items in temporary tables and guarantees right
      results when the result of the rollup operation first has to be written
      into a temporary table, e.g. in the cases when duplicate elimination is
      required.  
      
      
      mysql-test/r/olap.result:
        Added a test case for bug #24856.
      mysql-test/t/olap.test:
        Added a test case for bug #24856.
      sql/item_func.h:
        Fixed bug #24856: the result set of a ROLLUP query with DISTINCT could lack
        some rollup rows (rows with NULLs for grouping attributes) if GROUP BY
        list contained constant expressions.
        
        Itroduced class Item_func_rollup_const derived from Item_func. The object of
        this class are never detected as constant items.
        We use them for wrapping constant items from the GROUP BY list of any ROLLUP
        query. This wrapping allows us to ensure writing constant items into temporary
        tables whenever the result of the ROLLUP operation has to be written into a
        temporary table, e.g. when ROLLUP is used together with DISTINCT in the SELECT
        list.
      sql/sql_select.cc:
        Fixed bug #24856: the result set of a ROLLUP query with DISTINCT could lack
        some rollup rows (rows with NULLs for grouping attributes) if GROUP BY
        list contained constant expressions.
        
        Now the JOIN::rollup_init function wraps any constant item referenced in
        the GROYP BY list of a ROLLUP query into an Item_func object of a special
        class that is never detected as constant item. This ensures creation of
        fields for such  constant items in temporary tables and guarantees right
        results when the result of the rollup operation first has to be written
        into a temporary table, e.g. in the cases when duplicate elimination is
        required.
      dd34042e
  3. 26 Apr, 2007 1 commit
    • unknown's avatar
      Bug#27590: Wrong DATE/DATETIME comparison. · 7bb6a725
      unknown authored
      DATE and DATETIME can be compared either as strings or as int. Both
      methods have their disadvantages. Strings can contain valid DATETIME value
      but have insignificant zeros omitted thus became non-comparable with
      other DATETIME strings. The comparison as int usually will require conversion
      from the string representation and the automatic conversion in most cases is
      carried out in a wrong way thus producing wrong comparison result. Another
      problem occurs when one tries to compare DATE field with a DATETIME constant.
      The constant is converted to DATE losing its precision i.e. losing time part.
      
      This fix addresses the problems described above by adding a special
      DATE/DATETIME comparator. The comparator correctly converts DATE/DATETIME
      string values to int when it's necessary, adds zero time part (00:00:00)
      to DATE values to compare them correctly to DATETIME values. Due to correct
      conversion malformed DATETIME string values are correctly compared to other
      DATE/DATETIME values.
      
      As of this patch a DATE value equals to DATETIME value with zero time part.
      For example '2001-01-01' equals to '2001-01-01 00:00:00'.
      
      The compare_datetime() function is added to the Arg_comparator class.
      It implements the correct comparator for DATE/DATETIME values.
      Two supplementary functions called get_date_from_str() and get_datetime_value()
      are added. The first one extracts DATE/DATETIME value from a string and the
      second one retrieves the correct DATE/DATETIME value from an item.
      The new Arg_comparator::can_compare_as_dates() function is added and used
      to check whether two given items can be compared by the compare_datetime()
      comparator.
      Two caching variables were added to the Arg_comparator class to speedup the
      DATE/DATETIME comparison.
      One more store() method was added to the Item_cache_int class to cache int
      values.
      The new is_datetime() function was added to the Item class. It indicates
      whether the item returns a DATE/DATETIME value.
      
      
      sql/item.cc:
        Bug#27590: Wrong DATE/DATETIME comparison.
        One more store() method was added to the Item_cache_int class to cache int
        values.
        The new is_datetime() function was added to the Item class. It indicates
        whether the item returns a DATE/DATETIME value.
      sql/item.h:
        Bug#27590: Wrong DATE/DATETIME comparison.
        One more store() method was added to the Item_cache_int class to cache int
        values.
        The new is_datetime() function was added to the Item class. It indicates
        whether the item returns a DATE/DATETIME value.
      sql/item_cmpfunc.cc:
        Bug#27590: Wrong DATE/DATETIME comparison.
        The compare_datetime() function is added to the Arg_comparator class.
        It implements the correct comparator for DATE/DATETIME values.
        Two supplementary functions called get_date_from_str() and get_datetime_value()
        are added. The first one extracts DATE/DATETIME value from a string and the
        second one retrieves the correct DATE/DATETIME value from an item.
        The new Arg_comparator::can_compare_as_dates() function is added and used
        to check whether two given items can be compared by the compare_datetime()
        comparator.
      sql/item_cmpfunc.h:
        Bug#27590: Wrong DATE/DATETIME comparison.
        The compare_datetime() function is added to the Arg_comparator class.
        It implements the correct comparator for DATE/DATETIME values.
        Two supplementary functions called get_date_from_str() and get_datetime_value()
        are added. The first one extracts DATE/DATETIME value from a string and the
        second one retrieves the correct DATE/DATETIME value from an item.
        The new Arg_comparator::can_compare_as_dates() function is added and used
        to check whether two given items can be compared by the compare_datetime()
        comparator.
        Two caching variables were added to the Arg_comparator class to speedup the
        DATE/DATETIME comparison.
      mysql-test/include/ps_conv.inc:
        Test case adjusted after fix for bug#27590.
      mysql-test/r/distinct.result:
        Test cases results are corrected after fix for bug#27590.
      sql/sql_select.cc:
        Bug#27590: Wrong DATE/DATETIME comparison.
        The test_if_equality_guarantees_uniqueness() function now uses
        Arg_comparator::can_compare_as_dates() to detect comparable DATE/DATETIME items.
      mysql-test/r/ps_2myisam.result:
        The result of the adjusted test case after fix for bug#27590.
      mysql-test/r/ps_3innodb.result:
        The result of the adjusted test case after fix for bug#27590.
      mysql-test/r/ps_4heap.result:
        The result of the adjusted test case after fix for bug#27590.
      mysql-test/r/ps_5merge.result:
        The result of the adjusted test case after fix for bug#27590.
      mysql-test/r/subselect.result:
        Test cases results are corrected after fix for bug#27590.
      mysql-test/r/type_datetime.result:
        Added a test case for the bug#27590: Wrong DATE/DATETIME comparison.
      mysql-test/t/type_datetime.test:
        Added a test case for the bug#27590: Wrong DATE/DATETIME comparison.
      tests/mysql_client_test.c:
        Test case adjusted after fix for bug#27590.
      7bb6a725
  4. 23 Apr, 2007 1 commit
    • unknown's avatar
      - addendum of the fix for bug 27786: · ae5865ff
      unknown authored
        applied the new function is_union() to places
        in the code that check the same condition.
      - 5.0->5.1 merge fixes
      
      
      mysql-test/r/subselect3.result:
        merge 5.0->5.1 : updated explain.
      sql/item_subselect.cc:
        addendum of the fix for bug 27786:
        applied the new function is_union() to the applicable places.
      sql/sql_derived.cc:
        addendum of the fix for bug 27786:
        applied the new function is_union() to the applicable places.
      sql/sql_parse.cc:
        addendum of the fix for bug 27786:
        applied the new function is_union() to the applicable places.
      sql/sql_select.cc:
        addendum of the fix for bug 27786:
        applied the new function is_union() to places 
        in the code that check the same condition.
      sql/sql_union.cc:
        addendum of the fix for bug 27786:
        applied the new function is_union() to the applicable places.
      sql/sql_view.cc:
        addendum of the fix for bug 27786:
        applied the new function is_union() to the applicable places.
      sql/sql_yacc.yy:
        addendum of the fix for bug 27786:
        applied the new function is_union() to the applicable places.
      ae5865ff
  5. 20 Apr, 2007 1 commit
    • unknown's avatar
      Bug #24778: Innodb: No result when using ORDER BY · f3e261a9
      unknown authored
      This bug was intruduced by the fix for bug#17212 (in 4.1). It is not 
      ok to call test_if_skip_sort_order since this function will 
      alter the execution plan. By contract it is not ok to call 
      test_if_skip_sort_order in this context.
      
      This bug appears only in the case when the optimizer has chosen 
      an index for accessing a particular table but finds a covering 
      index that enables it to skip ORDER BY. This happens in 
      test_if_skip_sort_order.
      
      
      mysql-test/r/key.result:
        Bug#24778
        
        test case.
        
        The bug causes the result to be the empty set.
      mysql-test/t/key.test:
        Bug#24778
        
        The minimal test case that reveals the bug. The reason for such a 
        complicated schema is that we have to convince the optimizer to 
        pick one index, then discard it in order to be able to skip 
        ORDER BY.
      sql/sql_select.cc:
        bug#24778
        
        Removed the call to test_if_skip_sort_order that constituted the
        bug.
      f3e261a9
  6. 18 Apr, 2007 1 commit
  7. 15 Apr, 2007 1 commit
    • unknown's avatar
      Bug#27321: Wrong subquery result in a grouping select. · 1cf3b965
      unknown authored
      The Item_outer_ref class based on the Item_direct_ref class was always used
      to represent an outer field. But if the outer select is a grouping one and the 
      outer field isn't under an aggregate function which is aggregated in that
      outer select an Item_ref object should be used to represent such a field.
      If the outer select in which the outer field is resolved isn't grouping then
      the Item_field class should be used to represent such a field.
      This logic also should be used for an outer field resolved through its alias
      name.
      
      Now the Item_field::fix_outer_field() uses Item_outer_field objects to
      represent aliased and non-aliased outer fields for grouping outer selects
      only.
      Now the fix_inner_refs() function chooses which class to use to access outer
      field - the Item_ref or the Item_direct_ref. An object of the chosen class
      substitutes the original field in the Item_outer_ref object.
      The direct_ref and the found_in_select_list fields were added to the
      Item_outer_ref class.
      
      
      mysql-test/t/subselect3.test:
        Some test cases were corrected after the fix for the bug#27321.
      mysql-test/r/subselect3.result:
        Some test cases were corrected after the fix for the bug#27321.
      mysql-test/t/subselect.test:
        Added a test case for the bug#27321: Wrong subquery result in a grouping select.
      mysql-test/r/subselect.result:
        Added a test case for the bug#27321: Wrong subquery result in a grouping select.
        Some test cases were corrected after this fix.
      sql/sql_union.cc:
        Bug#27321: Wrong subquery result in a grouping select.
        Cleanup of the inner_refs_list.
      sql/sql_select.cc:
        Bug#27321: Wrong subquery result in a grouping select.
        Now the fix_inner_refs() function chooses which class to use to access outer
        field - the Item_ref or the Item_direct_ref. An object of the chosen class
        substitutes the original field in the Item_outer_ref object.
        A comment is corrected.
      sql/item.cc:
        Bug#27321: Wrong subquery result in a grouping select.
        Now the Item_field::fix_outer_field() uses Item_outer_field objects to
        represent aliased and non-aliased outer fields for grouping outer selects
        only.
      sql/item.h:
        Bug#27321: Wrong subquery result in a grouping select.
        The direct_ref and the found_in_select_list fields were added to the
        Item_outer_ref class.
      1cf3b965
  8. 10 Apr, 2007 1 commit
    • unknown's avatar
      Bug #27659: · 041767e1
      unknown authored
      The optimizer transforms DISTINCT into a GROUP BY
      when possible.
      It does that by constructing the same structure
      (a list of ORDER instances) the parser makes when
      parsing GROUP BY.
      While doing that it also eliminates duplicates.
      But if a duplicate is found it doesn't advance the
      pointer to ref_pointer array, so the next 
      (and subsequent) ORDER structures point to the wrong
      element in the SELECT list.
      Fixed by advancing the pointer in ref_pointer_array
      even in the case of a duplicate.
      
      
      mysql-test/r/distinct.result:
        Bug #27659: test case
      mysql-test/t/distinct.test:
        Bug #27659: test case
      sql/sql_select.cc:
        Bug #27659: use correct ref_pointer_array element
      041767e1
  9. 31 Mar, 2007 1 commit
    • unknown's avatar
      Fixed bug #27154: memory corruption when using row equalities in where · 7887a744
      unknown authored
      conditions.
      When allocating memory for KEY_FIELD/SARGABLE_PARAM structures the
      function update_ref_and_keys did not take into account the fact that
      a single row equality could be replaced by several simple equalities.
      Fixed by adjusting the counter cond_count accordingly for each subquery
      when performing substitution of a row equality for simple equalities. 
       
      
      
      mysql-test/r/row.result:
        Added a test case for bug #27154.
      mysql-test/t/row.test:
        Added a test case for bug #27154.
      7887a744
  10. 29 Mar, 2007 1 commit
    • unknown's avatar
      Bug #26815: · 40c1a3f9
      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
      40c1a3f9
  11. 28 Mar, 2007 1 commit
    • unknown's avatar
      Bug #27300: · c8f1cf4c
      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).
      c8f1cf4c
  12. 27 Mar, 2007 1 commit
    • unknown's avatar
      Bug #26815: · 8aa2d6bf
      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
      8aa2d6bf
  13. 26 Mar, 2007 1 commit
    • unknown's avatar
      This is a fix for the memory corruption occurred in one of test cases · d95c307f
      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.
      d95c307f
  14. 22 Mar, 2007 3 commits
    • unknown's avatar
      Fixed bug #27229: crash when a set function aggregated in outer · 1f8bdbe4
      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.
      1f8bdbe4
    • unknown's avatar
      Fixed compiler warnings. · 7eb3881b
      unknown authored
      mysys/default.c:
        Fixed bug.
      ndb/src/mgmclient/CommandInterpreter.cpp:
        Added parenthesis around the expression.
      sql/mysqld.cc:
        Fixed compiler warnings.
        
        Added a missing component in options struct (bug).
      sql-common/my_time.c:
        Removed garbage.
      sql/sql_table.cc:
        A possible use of a variable uninitialized.
      support-files/compiler_warnings.supp:
        BitKeeper file /home/my/bk/mysql-4.1-main/support-files/compiler_warnings.supp
      7eb3881b
    • unknown's avatar
      - renaming TMP_TABLE to NON_TRANSACTIONAL_TMP_TABLE because this is · 685d21b7
      unknown authored
      what it actually means (Monty approved the renaming)
      - correcting description of transaction_alloc command-line options
      (our manual is correct)
      - fix for a failure of rpl_trigger.
      
      
      mysql-test/t/rpl_misc_functions.test:
        test was cleaning up only on slave, but it's also needed on master,
        otherwise it influences rpl_trigger.test
      sql/lock.cc:
        clearer name
      sql/mysqld.cc:
        I checked the code that those two variables are not about binlogging
        but about the size of the transaction's memroot which is used
        to create savepoint structures and to store list of tables to be invalidated
        (for NDB). The manual has a correct description, no need to fix it.
      sql/sql_base.cc:
        clearer name
      sql/sql_derived.cc:
        clearer name
      sql/sql_select.cc:
        clearer name
      sql/table.h:
        clearer name: TMP_TABLE is used for non-transactional tables.
      685d21b7
  15. 20 Mar, 2007 1 commit
    • unknown's avatar
      Bug #24484: · 9c89dd65
      unknown authored
      To correctly decide which predicates can be evaluated with a given table
      the optimizer must know the exact set of tables that a predicate depends 
      on. If that mask is too wide (refer to non-existing tables) the optimizer
      can erroneously skip a predicate.
      One such case of wrong table usage mask were the aggregate functions.
      The have a all-1 mask (meaning depend on all tables, including non-existent
      ones).
      Fixed by making a real used_tables mask for the aggregates. The mask is
      constructed in the following way :
      1. OR the table dependency masks of all the arguments of the aggregate.
      2. If all the arguments of the function are from the local name resolution 
        context and it is evaluated in the same name resolution
        context where it is referenced all the tables from that name resolution 
        context are OR-ed to the dependency mask. This is to denote that an
        aggregate function depends on the number of rows it processes.
      3. Handle correctly the case of an aggregate function optimization (such that
        the aggregate function can be pre-calculated and made a constant).
      
      Made sure that an aggregate function is never a constant (unless subject of a 
      specific optimization and pre-calculation).  
      
      One other flaw was revealed and fixed in the process : references were 
      not calling the recalculation method for used_tables of their targets.
      
      
      mysql-test/r/subselect3.result:
        Bug #24484: test case
      mysql-test/t/subselect3.test:
        Bug #24484: test case
      sql/item.h:
        Bug #24484: Item_ref must update the used tables.
      sql/item_sum.cc:
        Bug #24484: correct calculation of used_tables for aggregates.
      sql/item_sum.h:
        Bug #24484: correct calculation of used_tables for aggregates.
      sql/opt_range.cc:
        Bug #24484: fixed ref resolution in loose index scan
      sql/sql_base.cc:
        Bug #24484: moved counting of leaf tables inside 
        setup_tables_and_check_access.
      sql/sql_class.h:
        Bug #24484: changed table count to more narrow type.
      sql/sql_insert.cc:
        Bug #24484: moved counting of leaf tables inside 
        setup_tables_and_check_access. Substract the first
        table (and its subtables) of an INSERT statement
        from leaf_count.
      sql/sql_select.cc:
        Bug #24484: correct check for aggregates
      9c89dd65
  16. 16 Mar, 2007 1 commit
    • unknown's avatar
      wl#3700 - post-review fixes: · 7d383909
      unknown authored
      s/ulonglong/key_part_map/, comments
      
      
      include/heap.h:
        wl#3700 - post-review fixes:
        s/ulonglong/key_part_map/
      include/my_base.h:
        wl#3700 - post-review fixes:
        s/ulonglong/key_part_map/
      include/myisam.h:
        wl#3700 - post-review fixes:
        s/ulonglong/key_part_map/
      include/myisammrg.h:
        wl#3700 - post-review fixes:
        s/ulonglong/key_part_map/
      sql/event_db_repository.cc:
        wl#3700 - post-review fixes:
        s/ulonglong/key_part_map/
      sql/ha_partition.cc:
        wl#3700 - post-review fixes:
        s/ulonglong/key_part_map/
      sql/ha_partition.h:
        wl#3700 - post-review fixes:
        s/ulonglong/key_part_map/
      sql/sql_select.h:
        wl#3700 - post-review fixes:
        remove tab_to_keypart_map()
      7d383909
  17. 14 Mar, 2007 2 commits
    • unknown's avatar
      Manual merge from 5.0-runtime to 5.1-runtime · 2fad8ac2
      unknown authored
      2fad8ac2
    • unknown's avatar
      Bug #24778: Innodb: No result when using ORDER BY · 7a3148a7
      unknown authored
      This bug was intruduced by the fix for bug#17212 (in 4.1). It is not 
      ok to call test_if_skip_sort_order since this function will 
      alter the execution plan. By contract it is not ok to call 
      test_if_skip_sort_order in this context.
      
      This bug appears only in the case when the optimizer has chosen 
      an index for accessing a particular table but finds a covering 
      index that enables it to skip ORDER BY. This happens in 
      test_if_skip_sort_order.
      
      
      mysql-test/r/key.result:
        Bug#24778
        
        test case.
        
        The bug causes the result to be the empty set.
      mysql-test/t/key.test:
        Bug#24778
        
        The minimal test case that reveals the bug. The reason for such a 
        complicated schema is that we have to convince the optimizer to 
        pick one index, then discard it in order to be able to skip 
        ORDER BY.
      sql/sql_select.cc:
        bug#24778
        
        Removed the call to test_if_skip_sort_order that constituted the
        bug.
      7a3148a7
  18. 12 Mar, 2007 1 commit
    • unknown's avatar
      group_by.result: · 4ce3624e
      unknown authored
        WL3527: disable wrong optimization.
      sql_select.cc:
        WL#3527: disable wrong optimization.
      
      
      sql/sql_select.cc:
        WL#3527: disable wrong optimization.
      mysql-test/r/group_by.result:
        WL3527: disable wrong optimization.
      4ce3624e
  19. 11 Mar, 2007 1 commit
    • unknown's avatar
      WL3527: post-merge updates · 0f793369
      unknown authored
      sql_yacc.yy:
        WL3527: updated the diff to use correct parser words
      table.cc:
        WL3527: exteneded the fix for bug #20604 to fit the new variables
      sql_select.cc:
        WL3527: renamed used_keys to covering_keys
      
      
      sql/sql_select.cc:
        renamed used_keys to covering_keys
      sql/sql_yacc.yy:
        WL3527: updated the diff to use correct parser words
      sql/table.cc:
        WL3527: exteneded the fix for bug #20604 to fit the new variables
      0f793369
  20. 09 Mar, 2007 1 commit
    • unknown's avatar
      Polishing: use constants instead of magic numbers. · a0521cd7
      unknown authored
      include/my_global.h:
        Introduce constants to be used instead of magic numbers.
      sql/field.cc:
        Polishing: use contants instead of magic numbers.
      sql/ha_innodb.cc:
        Polishing: use contants instead of magic numbers.
      sql/handler.cc:
        Polishing: use contants instead of magic numbers.
      sql/item.cc:
        Polishing: use contants instead of magic numbers.
      sql/item.h:
        Polishing: use contants instead of magic numbers.
      sql/item_func.cc:
        Polishing: use contants instead of magic numbers.
      sql/item_subselect.cc:
        Polishing: use contants instead of magic numbers.
      sql/log_event.cc:
        Polishing: use contants instead of magic numbers.
      sql/sql_base.cc:
        Polishing: use contants instead of magic numbers.
      sql/sql_select.cc:
        Polishing: use contants instead of magic numbers.
      sql/sql_show.cc:
        Polishing: use contants instead of magic numbers.
      sql/sql_table.cc:
        Polishing: use contants instead of magic numbers.
      a0521cd7
  21. 08 Mar, 2007 1 commit
    • unknown's avatar
      sql_select.cc: · 4c0ab891
      unknown authored
        Postfix for bug#22331.
      
      
      sql/sql_select.cc:
        Postfix for bug#22331.
      4c0ab891
  22. 07 Mar, 2007 2 commits
    • unknown's avatar
      sql_select.cc: · 1631f65d
      unknown authored
        Postfix for bug#22331 for windows platform.
      explain.test, explain.result:
        Cleanup after bugfix#22331.
      
      
      mysql-test/t/explain.test:
        Cleanup after bugfix#22331.
      mysql-test/r/explain.result:
        Cleanup after bugfix#22331.
      sql/sql_select.cc:
        Postfix for bug#22331 for windows platform.
      1631f65d
    • unknown's avatar
      Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized · 6de27791
      unknown authored
      away.
      
      During optimization stage the WHERE conditions can be changed or even
      be removed at all if they know for sure to be true of false. Thus they aren't
      showed in the EXPLAIN EXTENDED which prints conditions after optimization.
      
      Now if all elements of an Item_cond were removed this Item_cond is substituted
      for an Item_int with the int value of the Item_cond.
      If there were conditions that were totally optimized away then values of the
      saved cond_value and having_value will be printed instead.
      
      
      mysql-test/t/explain.test:
        Added a test case for the bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized away.
      mysql-test/r/subselect.result:
        Corrected test case result after fix for bug#22331.
      mysql-test/r/func_test.result:
        Corrected test case result after fix for bug#22331.
      mysql-test/r/explain.result:
        Added a test case for the bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized away.
      sql/sql_select.cc:
        Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized
        away.
        Now if all elements of an Item_cond were removed this Item_cond is substituted
        for an Item_int with the int value of the Item_cond.
        If there were conditions that were totally optimized away then values of the
        saved cond_value and having_value will be printed instead.
      sql/sql_lex.h:
        Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized
        away.
        The cond_value and the having_value variables are
        added to the SELECT_LEX class.
      sql/sql_lex.cc:
        Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized
        away.
        The initialization of the cond_value and the having_value variables.
      sql/sql_select.h:
        Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized
        away.
        Now having_value is also stored in the JOIN class.
      6de27791
  23. 06 Mar, 2007 1 commit
    • unknown's avatar
      Bug#25376: Incomplete setup of ORDER BY clause results in a wrong result. · 38acf43e
      unknown authored
      Functions over sum functions wasn't set up correctly for the ORDER BY clause
      which leads to a wrong order of the result set.
      
      The split_sum_func() function is called now for each ORDER BY item that
      contains a sum function to set it up correctly.
      
      
      mysql-test/t/order_by.test:
        Added a test case for bug#25376: Incomplete setup of ORDER BY clause results in a wrong result.
      mysql-test/r/order_by.result:
        Added a test case for bug#25376: Incomplete setup of ORDER BY clause results in a wrong result.
      sql/sql_select.cc:
        Bug#25376: Incomplete setup of ORDER BY clause results in a wrong result.
        The split_sum_func() function is called now for each ORDER BY item that
        contains a sum function to set it up correctly.
      38acf43e
  24. 05 Mar, 2007 2 commits
    • unknown's avatar
      WL#3527: Extend IGNORE INDEX so places where index is ignored · 79542930
      unknown authored
               can be specified
      Currently MySQL allows one to specify what indexes to ignore during
      join optimization. The scope of the current USE/FORCE/IGNORE INDEX 
      statement is only the FROM clause, while all other clauses are not 
      affected.
      
      However, in certain cases, the optimizer
      may incorrectly choose an index for sorting and/or grouping, and
      produce an inefficient query plan.
      
      This task provides the means to specify what indexes are
      ignored/used for what operation in a more fine-grained manner, thus
      making it possible to manually force a better plan. We do this
      by extending the current IGNORE/USE/FORCE INDEX syntax to:
      
      IGNORE/USE/FORCE INDEX [FOR {JOIN | ORDER | GROUP BY}]
      
      so that:
      - if no FOR is specified, the index hint will apply everywhere.
      - if MySQL is started with the compatibility option --old_mode then
        an index hint without a FOR clause works as in 5.0 (i.e, the 
        index will only be ignored for JOINs, but can still be used to
        compute ORDER BY).
      
      See the WL#3527 for further details.
      
      
      BitKeeper/deleted/.del-mysqld.cc.rej:
        Rename: sql/mysqld.cc.rej -> BitKeeper/deleted/.del-mysqld.cc.rej
      BitKeeper/deleted/.del-sql_parse.cc.rej:
        Rename: sql/sql_parse.cc.rej -> BitKeeper/deleted/.del-sql_parse.cc.rej
      BitKeeper/deleted/.del-table.cc.rej:
        Rename: sql/table.cc.rej -> BitKeeper/deleted/.del-table.cc.rej
      mysql-test/r/endspace.result:
        WL3527 : fixed undeterministic test
      mysql-test/r/group_by.result:
        WL#3527: test cases
      mysql-test/t/endspace.test:
        WL3527 : fixed undeterministic test
      mysql-test/t/group_by.test:
        WL#3527: test cases
      sql/item.cc:
        WL#3527: renames
      sql/mysql_priv.h:
        WL#3527: corrected initialization
      sql/mysqld.cc:
        WL#3527: added old_mode command line option
      sql/opt_range.cc:
        WL#3527: renames
      sql/sql_base.cc:
        WL#3527: 
         - renames
         - correct initialization
         - extended the processing of USE/FORCE/IGNORE index
      sql/sql_class.h:
        WL#3527: added old_mode command line option
      sql/sql_delete.cc:
        WL#3527: renames
      sql/sql_help.cc:
        WL#3527: renames
      sql/sql_lex.cc:
        WL#3527: extended parsing of USE/FORCE/IGNORE index
      sql/sql_lex.h:
        WL#3527: extended parsing of USE/FORCE/IGNORE index
      sql/sql_parse.cc:
        WL#3527: extended parsing of USE/FORCE/IGNORE index
      sql/sql_select.cc:
        WL#3527:
         - renames
         - passing additional info to support the extended 
           USE/FORCE/IGNORE INDEX syntax
         - If there is a covering index, and we have 
           IGNORE INDEX FOR GROUP/ORDER, and this index is 
           used for the JOIN part, then we have to ignore the
           IGNORE INDEX FOR GROUP/ORDER.
      sql/sql_show.cc:
        WL#3527: passing additional info to support the extended 
           USE/FORCE/IGNORE INDEX syntax
      sql/sql_update.cc:
        WL#3527: renames
      sql/sql_yacc.yy:
        WL#3527: extended parsing of USE/FORCE/IGNORE index
      sql/table.cc:
        WL#3527: extended the processing of USE/FORCE/IGNORE index
      sql/table.h:
        WL#3527: extended the processing of USE/FORCE/IGNORE index
      storage/myisam/ha_myisam.cc:
        WL#3527: extended the processing of USE/FORCE/IGNORE index
      79542930
    • unknown's avatar
      Fixed bug #26560. · 6da758c2
      unknown authored
      The flag alias_name_used was not set on for the outer references
      in subqueries. It resulted in replacement of any outer reference
      resolved against an alias for a full field name when the frm 
      representation of a view with a subquery was generated. 
      If the subquery and the outer query referenced the same table in
      their from lists this replacement effectively changed the meaning
      of the view and led to wrong results for selects from this view. 
      
      Modified several functions to ensure setting the right value of
      the alias_name_used flag for outer references resolved against
      aliases.
       
      
      
      mysql-test/r/view.result:
        Added a test case for bug #26560.
      mysql-test/t/view.test:
        Added a test case for bug #26560.
      sql/item.cc:
        Fixed bug #26560.
        Made the function resolve_ref_in_select_and_group analyze the return
        value of the last parameter with the type of the name resolution for
        the submitted reference. If the reference has been resolved against 
        an alias name from select list then its flag alias_name_used is set on.
        Now this value is used in Item_field::fix_outer_field to initialize the flag
        when the item_ref object is created for an outer reference.
        Added a parameter for the second Item_ref::Item_ref constructor to initialize
        properly the flag alias_name_used. The default value of the parameter is FALSE.
        If this flag is set on at the creation of an object by this constructor it
        will never be changed. Corrected appropriately the Item_ref::set_properties
        function.
        The function Item_ref::print now prints alias name for an outer reference
        if the flag alias_name_used is set on.
      sql/item.h:
        Fixed bug #26560.
        Added a parameter for the second Item_ref::Item_ref constructor to initialize
        properly the flag alias_name_used. The default value of the parameter is FALSE.
        A similar change has been applied to the first Item_direct_ref::Item_direct_ref
        constructor.
      sql/mysql_priv.h:
        Fixed bug #26560.
        Added an an enumeration type enum_resolution_type to return info on
        how the function find_item_in_list has resolved the submitted item.
        The type is used only for this function.
      sql/sql_base.cc:
        Fixed bug #26560.
        Made the last parameter of the function find_field_in_tables return
        more detailed information on how the submitted item has been resolved.
        Now it says whether the item has been resolved
          against an alias name,
          or as a field name without alias,
          or as a field name hidden by alias, 
          or was resolved ignoring alias.
      sql/sql_select.cc:
        Fixed bug #26560.
        Took into account the new type of the last parameter of the function
        find_item_in_list.
      6da758c2
  25. 03 Mar, 2007 1 commit
    • unknown's avatar
      Bug#25126: Wrongly resolved field leads to a crash. · 72773f4f
      unknown authored
      When the ORDER BY clause gets fixed it's allowed to search in the current
      item_list in order to find aliased fields and expressions. This is ok for a
      SELECT but wrong for an UPDATE statement. If the ORDER BY clause will
      contain a non-existing field which is mentioned in the UPDATE set list
      then the server will crash due to using of non-existing (0x0) field.
      
      When an Item_field is getting fixed it's allowed to search item list for
      aliased expressions and fields only for selects.
      
      
      sql/sql_base.cc:
        Bug#25126: Wrongly resolved field leads to a crash.
        When an Item_field is getting fixed it's allowed to search item list for
        aliased expressions and fields only for selects.
      sql/sql_select.cc:
        Bug#25126: Wrongly resolved field leads to a crash.
        When an Item_field is getting fixed it's allowed to search item list for
        aliased expressions and fields only for selects.
      mysql-test/r/update.result:
        Added a test case for bug#25126: Wrongly resolved field leads to a crash.
      mysql-test/t/update.test:
        Added a test case for bug#25126: Wrongly resolved field leads to a crash.
      72773f4f
  26. 27 Feb, 2007 1 commit
  27. 23 Feb, 2007 1 commit
    • unknown's avatar
      Fixed compiler warnings · 9e678492
      unknown authored
      Fixed compile-pentium64 scripts
      Fixed wrong estimate of update_with_key_prefix in sql-bench
      Merge bk-internal.mysql.com:/home/bk/mysql-5.1 into mysql.com:/home/my/mysql-5.1
      Fixed unsafe define of uint4korr()
      Fixed that --extern works with mysql-test-run.pl
      Small trivial cleanups
      This also fixes a bug in counting number of rows that are updated when we have many simultanous queries
      Move all connection handling and command exectuion main loop from sql_parse.cc to sql_connection.cc
      Split handle_one_connection() into reusable sub functions.
      Split create_new_thread() into reusable sub functions.
      Added thread_scheduler; Preliminary interface code for future thread_handling code.
      
      Use 'my_thread_id' for internal thread id's
      Make thr_alarm_kill() to depend on thread_id instead of thread
      Make thr_abort_locks_for_thread() depend on thread_id instead of thread
      In store_globals(), set my_thread_var->id to be thd->thread_id.
      Use my_thread_var->id as basis for my_thread_name()
      The above changes makes the connection we have between THD and threads more soft.
      
      Added a lot of DBUG_PRINT() and DBUG_ASSERT() functions
      Fixed compiler warnings
      Fixed core dumps when running with --debug
      Removed setting of signal masks (was never used)
      Made event code call pthread_exit() (portability fix)
      Fixed that event code doesn't call DBUG_xxx functions before my_thread_init() is called.
      Made handling of thread_id and thd->variables.pseudo_thread_id uniform.
      Removed one common 'not freed memory' warning from mysqltest
      Fixed a couple of usage of not initialized warnings (unlikely cases)
      Suppress compiler warnings from bdb and (for the moment) warnings from ndb
      
      
      BitKeeper/deleted/.del-SETUP.sh.rej:
        Rename: BUILD/SETUP.sh.rej -> BitKeeper/deleted/.del-SETUP.sh.rej
      BitKeeper/deleted/.del-configure.in.rej:
        Rename: configure.in.rej -> BitKeeper/deleted/.del-configure.in.rej
      BitKeeper/deleted/.del-my_global.h.rej:
        Rename: include/my_global.h.rej -> BitKeeper/deleted/.del-my_global.h.rej
      BitKeeper/deleted/.del-my_pthread.h.rej:
        Rename: include/my_pthread.h.rej -> BitKeeper/deleted/.del-my_pthread.h.rej
      BitKeeper/deleted/.del-mysql_client_test.c.rej:
        Rename: tests/mysql_client_test.c.rej -> BitKeeper/deleted/.del-mysql_client_test.c.rej
      BitKeeper/deleted/.del-mysqld.cc.rej~35c1c438e11ebd89:
        Rename: sql/mysqld.cc.rej -> BitKeeper/deleted/.del-mysqld.cc.rej~35c1c438e11ebd89
      BitKeeper/deleted/.del-sql_parse.cc.rej:
        Rename: sql/sql_parse.cc.rej -> BitKeeper/deleted/.del-sql_parse.cc.rej
      BitKeeper/deleted/.del-table.cc.rej:
        Rename: sql/table.cc.rej -> BitKeeper/deleted/.del-table.cc.rej
      BitKeeper/deleted/.del-thr_alarm.c.rej:
        Rename: mysys/thr_alarm.c.rej -> BitKeeper/deleted/.del-thr_alarm.c.rej
      BUILD/compile-pentium64:
        Update this to be in line with compile-pentium
      BUILD/compile-pentium:
        Send command line options to SETUP.sh
      BUILD/compile-solaris-sparc-debug:
        Update scripts
      BUILD/compile-solaris-sparc-forte:
        Update scripts
      BUILD/compile-solaris-sparc-purify:
        Update scripts
      BUILD/compile-solaris-sparc:
        Update scripts
      BitKeeper/deleted/.del-DbtupSystemRestart.cpp~15b54d7e4e75d2d:
        Removed compiler warning
      BitKeeper/deleted/.del-ha_berkeley.cc:
        Moved get_auto_primary_key() here as int5store() gives (wrong) compiler warnings in win64
      configure.in:
        Added detection of port_create and port.h (for future)as 
        ---
        manual merge
      BitKeeper/deleted/.del-ha_berkeley.h:
        Moved get_auto_primary_key() to ha_berkeley.cc
      BitKeeper/deleted/.del-mysqlmanager.c~e97636d71145a0b:
        Fixed compiler warnings
      BitKeeper/etc/ignore:
        added storage/ndb/src/ndbapi/ndberror_check
      client/mysqlbinlog.cc:
        Removed not needed 'static' (caused compiler warning)
      client/mysqldump.c:
        Fixed compiler warnings from 'max' build
      client/mysqltest.c:
        Free warning and query memory no abort.
        (Removes strange warnings on screen if mysql-test-run fails)
        Removed compiler warnings
        Portability fix for windows (windows doesn't have mode_t)
      client/sql_string.h:
        Removed compiler warning
      cmd-line-utils/readline/xmalloc.c:
        Fixed compiler warnings from 'max' build
      extra/charset2html.c:
        Fixed compiler warnings
      extra/comp_err.c:
        Fixed compiler warnings from 'max' build
      extra/yassl/include/lock.hpp:
        Fix for windows64
      extra/yassl/include/openssl/ssl.h:
        Changed prototype for SSL_set_fd() to fix compiler warnings (and possible errors) on windows 64 bit
      extra/yassl/include/socket_wrapper.hpp:
        Moved socket_t to ssl.h, to be able to removed compiler warnings on windows 64 bit
      extra/yassl/include/yassl.hpp:
        Fix for windows64
      extra/yassl/src/ssl.cpp:
        Removed compiler warning
        Detect wrong parameter (Happens when running test suite on solaris)
        Changed prototype for SSL_set_fd() to fix compiler warnings (and possible errors) on windows 64 bit
      extra/yassl/taocrypt/src/integer.cpp:
        Fixed compiler warnings
      extra/yassl/testsuite/testsuite.cpp:
        Removed compiler warning
      include/config-win.h:
        Added HAVE_WINSOCK2 (for future)
      include/my_dbug.h:
        Fixed DBUG_PROCESS() so that we don't get compiler warnings for it
      include/my_global.h:
        Fixed unsafe define of uint4korr()
        manual merge (ignore changes from 5.0)
        Fixed warnings on win64 when using int5store and int6store
      include/my_pthread.h:
        Added my_thread_id typedef
        Renamed 'my_thread_id() function to my_thead_dbug_id()
      include/thr_alarm.h:
        Make thr_alarm_kill() to depend on thread_id instead of thread
      include/thr_lock.h:
        Make thr_abort_locks_for_thread() depend on thread_id instead of thread
      libmysql/libmysql.def:
        Fixed compiler warnings on win64
      libmysqld/CMakeLists.txt:
        Added missing files
      libmysqld/Makefile.am:
        Added new files
      libmysqld/lib_sql.cc:
        Remove not needed code (store_globals() now takes care of things)
      mysql-test/lib/mtr_report.pl:
        Removed wrong messages when using --extern
      mysql-test/mysql-test-run.pl:
        Fixed that --extern works
        Print help on stdout instead of stderr (make it easier to pipe it to less)
        Fixed typo that caused mysql-test-run.pl to fail on Solaris
      mysql-test/r/keywords.result:
        manual merge
      mysql-test/r/ndb_lock.result:
        After merge fixes
      mysql-test/r/ps.result:
        Portability fix
      mysql-test/t/disabled.def:
        Disabled ndb_alter_table as this very often fails for me (and have done it for a long time)
      mysql-test/t/keywords.test:
        manual merge
      mysql-test/t/ndb_lock.test:
        Added other possible error code
      mysql-test/t/ps.test:
        Portability fix (when compiling without DLOPEN)
      mysql-test/t/wait_timeout.test:
        Don't run this if we are not using a thread per connection (as other thread_handling code may not support timeouts)
      mysys/base64.c:
        Fixed compiler warnings on win64
      mysys/mf_keycache.c:
        Fixed compiler warnings
      mysys/my_getopt.c:
        Fixed compiler warning
      mysys/my_init.c:
        Fixed compiler warning
        Re-indented long comment
      mysys/my_thr_init.c:
        Always use mysys_var->id to generate thread name (makes things uniform accross thread implementations and thread usage)
        Always generate my_thread_name() when using DBUG
        Ensure mysys_var->pthread_self is set
        Fixed compiler warnings
      mysys/ptr_cmp.c:
        Fixed compiler warnings from 'max' build
      mysys/thr_alarm.c:
        Change thr_alarm_kill() to use mysys_var->id instead of thread id
        Fixed compiler warning on windows
      mysys/thr_lock.c:
        Change thr_abort_locks_for_thread() to use mysys_var->id instead of thread id
        Add purecov statements around not tested code
        Fixed compiler warnings
      mysys/thr_mutex.c:
        my_thread_id() -> my_thread_dbug_id()
      server-tools/instance-manager/guardian.cc:
        Fixed compiler warning
      server-tools/instance-manager/instance.cc:
        Fixed compiler warning
      server-tools/instance-manager/mysql_connection.cc:
        Fixed compiler warnings
      server-tools/instance-manager/mysqlmanager.cc:
        Fixed compiler warnings
      sql/CMakeLists.txt:
        Added missing files
      sql/Makefile.am:
        Added new files
      sql/event_scheduler.cc:
        Added pthread_exit() calls
        Ensure DBUG_xxx calls are not made before my_thread_init()
        Use common functions to set up thread handling
      sql/field.h:
        manual merge
      sql/ha_ndbcluster.cc:
        Removed some trivial 'current_thd' calls
      sql/handler.cc:
        Avoid warnings on KILL_CONNECTION
        Don't print out null pointer with printf()  (Causes crashes on Solaris)
      sql/item.cc:
        Fixed compiler warnings from 'max' build
      sql/item_cmpfunc.cc:
        After merge fixes
      sql/item_func.cc:
        Merge embedded and normal code usage
        (GET_LOCK, RELEASE_LOCK now works on my_thread_id instead of pthread_t)
        Fixed compiler warning
      sql/item_strfunc.cc:
        Fixed compiler warning
      sql/item_timefunc.cc:
        Fixed compiler warnings
      sql/lock.cc:
        Use (new) parameter to thr_abort_locks_for_thread()
      sql/log.cc:
        Fixed compiler warning
      sql/log_event.cc:
        Fixed compiler warnings about not used variable
      sql/mysql_priv.h:
        Remove TEST_NO_THREADS (not needed with new scheduler interface)
        Added functions from sql_connect.cc and new functions from sql_parse.cc
      sql/mysqld.cc:
        Use thread_scheduler structure to dispatch calls (make code more dynamic)
        Change --one-thread option to use thread_scheduler interface
        Made ONE_THREAD option independent of DBUG_BUILD
        --one-thread is now depricated. One should instead use '--thread-handling=no-threads'
        Remove not used uname() function.
        Split create_new_thread() into reusable sub functions.
        Preliminary interface code for future thread_handling code.
        Fixed compiler warnings
      sql/parse_file.cc:
        Don't send zero pointer to fn_format() (Causes crashes when using --debug)
      sql/repl_failsafe.cc:
        Setup pseudo_thread_id same way as other code
      sql/set_var.cc:
        Added variables 'thread_handling'
        Prepare for future variable 'thread_pool_size'
        Fixed compiler warnings
      sql/set_var.h:
        Fixed compiler warning
      sql/slave.cc:
        Setup pseudo_thread_id same way as other code
        Removed not used signal mask
      sql/sql_acl.cc:
        Fixed compiler warnings from 'max' build
      sql/sql_base.cc:
        Fixed long comments
        Normalized variable setup
        Don't destroy value of thd->variables.pseduo_thread_id
        More DBUG_PRINT()'s
        More DBUG_ASSERT()'s
        Fixed compiler warnings from 'max' build
      sql/sql_class.cc:
        Remove thd->real_id and thd->dbug_thread_id
        Added DBUG_ASSERT()
        Use thread_scheduler to signal threads to be killed.
        In THD::store_globals(), set my_thread_var->id to be thd->thread_id.
        Fixed compiler warnings
      sql/sql_class.h:
        Use 'my_thread_id' for internal thread id's
        Remove not needed THD elements: block_signals and dbug_thread_id
        Added 'thread_scheduler' scheduling extension element to THD
      sql/sql_insert.cc:
        After merge fixes
        (This actually fixes a bug in old code when many connections are in use)
        Setup pseudo_thread_id same way as other code
        Removed not used signal mask
        Initialize variable that may be used unitialized on error conditions (not fatal)
      sql/sql_parse.cc:
        Move connection related code to sql_connect.cc
        Remove setting of signal mask (not needed)
        Ensure TABLE_LIST->alias is set for generated TABLE_LIST elements (fixed core dumps when running with --debug)
        Added previous 'optional' element to reset_mgh()
        Removed not needed DBUG_PRINT call
      sql/sql_partition.cc:
        Fixed compiler warnings
      sql/sql_prepare.cc:
        Removed not needed casts
        Fixed compiler warnings from 'max' build
      sql/sql_select.cc:
        Fixed compiler warnings
      sql-bench/bench-init.pl.sh:
        Added --one-missing-tests
      sql-bench/example:
        Better example
      sql-bench/run-all-tests.sh:
        Added --only-missing-tests
      sql-bench/test-insert.sh:
        Fixed wrong estimate of update_with_key_prefix
      sql/sql_show.cc:
        Don't send pthread_kill() to threads to detect if they exists.
        (Not that useful and causes problems with future thread_handling code)
        Fixed compiler warnings
      sql/sql_table.cc:
        Simplify code
        Fixed compiler warnings
      sql/sql_test.cc:
        Remove dbug_thread_id from test output
      sql/sql_view.cc:
        Don't send zero pointer to fn_format()
      sql/tztime.cc:
        Fixed compiler warning
      sql/udf_example.def:
        Fixed compiler warnings on win64
      sql/unireg.cc:
        Initialize variable that may be used unitialized on error conditions
      storage/archive/archive_test.c:
        Fixed compiler warnings
      storage/archive/azio.c:
        Fixed compiler warnings
      storage/innobase/dict/dict0crea.c:
        Fixed compiler warnings detected on windows64
      storage/innobase/dict/dict0dict.c:
        Fixed compiler warnings detected on windows64
      storage/innobase/dict/dict0load.c:
        Fixed compiler warnings detected on windows64
      storage/innobase/dict/dict0mem.c:
        Fixed compiler warnings detected on windows64
      storage/innobase/eval/eval0proc.c:
        Fixed compiler warnings detected on windows64
      storage/innobase/handler/ha_innodb.cc:
        Fixed compiler warnings detected on windows64
      storage/innobase/include/ut0byte.ic:
        Fixed compiler warnings on win64
      storage/innobase/include/ut0ut.ic:
        Fixed compiler warnings on win64
      storage/innobase/mtr/mtr0log.c:
        Fixed compiler warnings detected on windows64
      storage/innobase/pars/pars0lex.l:
        Fixed warnings on win64
      storage/innobase/rem/rem0cmp.c:
        Fixed compiler warnings detected on windows64
      storage/innobase/row/row0mysql.c:
        Fixed compiler warnings detected on windows64
      storage/innobase/row/row0sel.c:
        Fixed compiler warnings detected on windows64
      storage/innobase/sync/sync0rw.c:
        Fixed compiler warnings detected on windows64
      storage/innobase/trx/trx0trx.c:
        Fixed compiler warnings detected on windows64
      storage/myisam/mi_log.c:
        my_thread_id() -> my_thread_debug_id()
      storage/myisam/mi_packrec.c:
        Fixed compiler warnings detected on windows64
      storage/myisam/myisamchk.c:
        Fixed compiler warnings from 'max' build
      storage/ndb/src/common/debugger/EventLogger.cpp:
        Fixed compiler warnings
      storage/ndb/src/common/util/ConfigValues.cpp:
        Removed compiler warnings
      storage/ndb/src/common/util/NdbSqlUtil.cpp:
        Removed compiler warnings
      storage/ndb/src/cw/cpcd/CPCD.hpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/backup/Backup.cpp:
        Fixed compiler warnings detected on windows64
      storage/ndb/src/kernel/blocks/dbacc/Dbacc.hpp:
        Fixed compiler warnings detected on windows64
      storage/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp:
        Fixed compiler warnings detected on windows64
      storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbtup/DbtupDiskAlloc.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbtup/DbtupFixAlloc.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbtup/DbtupScan.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbtup/DbtupVarAlloc.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbtup/tuppage.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbtup/tuppage.hpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbtux/DbtuxStat.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/diskpage.hpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/vm/ndbd_malloc.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/vm/ndbd_malloc_impl.cpp:
        Fixed compiler warnings
      storage/ndb/src/mgmclient/main.cpp:
        Fixed compiler warnings
      storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp:
        Fixed compiler warnings
      storage/ndb/src/ndbapi/NdbOperationExec.cpp:
        Fixed compiler warnings
      storage/ndb/src/ndbapi/SignalSender.cpp:
        Fixed compiler warnings
      storage/ndb/tools/restore/consumer_restore.cpp:
        Fixed compiler warnings
      strings/ctype-ucs2.c:
        Fixed compiler warnings
      strings/ctype-utf8.c:
        Fixed compiler warnings
      strings/decimal.c:
        Fixed compiler warnings
      strings/my_strchr.c:
        Fixed conflict between function and prototype
      support-files/compiler_warnings.supp:
        Ignore warnings from sql_yacc.cc that are hard to remove
        Ignore some not important warnings from windows 64 bit build
        Suppress warnings from bdb and (for the moment) warnings from ndb
        Suppress all warnings for all pushbuild platforms (should make all trees green)
      vio/viosslfactories.c:
        Added DBUG_PRINT
      BUILD/compile-pentium64-max:
        New BitKeeper file ``BUILD/compile-pentium64-max''
      libmysqld/scheduler.cc:
        New BitKeeper file ``libmysqld/scheduler.cc''
      libmysqld/sql_connect.cc:
        New BitKeeper file ``libmysqld/sql_connect.cc''
      mysql-test/include/one_thread_per_connection.inc:
        New BitKeeper file ``mysql-test/include/one_thread_per_connection.inc''
      mysql-test/r/no-threads.result:
        New BitKeeper file ``mysql-test/r/no-threads.result''
      mysql-test/r/one_thread_per_connection.require:
        New BitKeeper file ``mysql-test/r/one_thread_per_connection.require''
      mysql-test/t/no-threads-master.opt:
        New BitKeeper file ``mysql-test/t/no-threads-master.opt''
      mysql-test/t/no-threads.test:
        New BitKeeper file ``mysql-test/t/no-threads.test''
      sql/scheduler.cc:
        New BitKeeper file ``sql/scheduler.cc''
      sql/scheduler.h:
        New BitKeeper file ``sql/scheduler.h''
      sql/sql_connect.cc:
        New BitKeeper file ``sql/sql_connect.cc''
      9e678492
  28. 22 Feb, 2007 1 commit
    • unknown's avatar
      Fixed compiler warnings (for linux and win32 and win64) · 50bd97a9
      unknown authored
      Fixed a couple of usage of not initialized warnings (unlikely cases)
      
      
      client/mysqldump.c:
        Fixed compiler warnings from 'max' build
      client/mysqltest.c:
        Removed compiler warnings
      cmd-line-utils/readline/xmalloc.c:
        Fixed compiler warnings from 'max' build
      extra/comp_err.c:
        Fixed compiler warnings from 'max' build
      extra/yassl/include/openssl/ssl.h:
        Changed prototype for SSL_set_fd() to fix compiler warnings (and possible errors) on windows 64 bit
      extra/yassl/include/socket_wrapper.hpp:
        Moved socket_t to ssl.h, to be able to removed compiler warnings on windows 64 bit
      extra/yassl/src/ssl.cpp:
        Changed prototype for SSL_set_fd() to fix compiler warnings (and possible errors) on windows 64 bit
      extra/yassl/taocrypt/src/integer.cpp:
        Fixed compiler warnings
      include/my_global.h:
        Added my_offsetof() macro from 5.1 to get rid of compiler warnings
      innobase/include/ut0byte.ic:
        Fixed compiler warnings on win64
      innobase/include/ut0ut.ic:
        Fixed compiler warnings on win64
      libmysql/libmysql.def:
        Fixed compiler warnings on win64
      myisam/mi_packrec.c:
        Fixed compiler warnings on win64
      myisam/myisamchk.c:
        Fixed compiler warnings from 'max' build
      mysys/base64.c:
        Fixed compiler warnings on win64
      mysys/mf_keycache.c:
        Fixed compiler warnings from 'max' build
      mysys/my_getopt.c:
        Fixed compiler warnings from 'max' build
      mysys/my_init.c:
        Fixed compiler warnings from 'max' build
      mysys/my_thr_init.c:
        Fixed compiler warnings
      mysys/ptr_cmp.c:
        Fixed compiler warnings from 'max' build
      ndb/include/kernel/signaldata/DictTabInfo.hpp:
        Fixed compiler warnings
      server-tools/instance-manager/mysql_connection.cc:
        Fixed compiler warnings
      server-tools/instance-manager/mysqlmanager.cc:
        Fixed compiler warnings
      sql/filesort.cc:
        Initalize variable that was used unitialized in error conditions
      sql/ha_berkeley.cc:
        Moved get_auto_primary_key() here as int5store() gives (wrong) compiler warnings in win64
      sql/ha_berkeley.h:
        Moved get_auto_primary_key() to ha_berkeley.cc
      sql/ha_innodb.cc:
        Fixed compiler warnings
      sql/item.cc:
        Fixed compiler warnings from 'max' build
      sql/item_timefunc.cc:
        Fixed compiler warnings
      sql/mysqld.cc:
        Fixed compiler warnings
      sql/sql_acl.cc:
        Fixed compiler warnings from 'max' build
      sql/sql_base.cc:
        Fixed compiler warnings from 'max' build
      sql/sql_insert.cc:
        Initialize variable that may be used unitialized on error conditions (not fatal)
      sql/sql_prepare.cc:
        Fixed compiler warnings from 'max' build
      sql/sql_select.cc:
        Fixed compiler warnings
      sql/sql_show.cc:
        Fixed compiler warnings
      sql/udf_example.def:
        Fixed compiler warnings on win64
      sql/unireg.cc:
        Initialize variable that may be used unitialized on error conditions
      strings/ctype-ucs2.c:
        Fixed compiler warnings
      strings/ctype-utf8.c:
        Fixed compiler warnings
      strings/decimal.c:
        Fixed compiler warnings
      support-files/compiler_warnings.supp:
        Ignore warnings from sql_yacc.cc that are hard to remove
        Ignore some not important warnings from windows 64 bit build
      tools/mysqlmanager.c:
        Fixed compiler warnings
      50bd97a9
  29. 21 Feb, 2007 1 commit
    • unknown's avatar
      Bug#23800: Outer fields in correlated subqueries is used in a temporary table · f8855142
      unknown 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.
      
      
      sql/item.cc:
        Bug#23800: Correlated sub query returning incorrect results when operated upon.
        Now all outer fields are substituted with references to them (Item_outer_ref objects)
        in the Item_field::fix_outer_field() function.
        The original field is saved in the Item_outer_ref object.
      sql/item.h:
        Bug#23800: Correlated sub query returning incorrect results when operated upon.
        Added the Item_outer_ref class.
      sql/mysql_priv.h:
        Bug#23800: Correlated sub query returning incorrect results when operated upon.
        Added the fix_inner_refs() function prototype.
      sql/sql_delete.cc:
        Bug#23800: Correlated sub query returning incorrect results when operated upon.
        Added call to the fix_inner_refs() function.
      sql/sql_select.cc:
        Bug#23800: Correlated sub query returning incorrect results when operated upon.
        The new function called fix_inner_refs() is added.
      mysql-test/r/subselect.result:
        Added a test case for bug#23800: Correlated sub query returning incorrect results when
        operated upon.
      sql/sql_update.cc:
        Bug#23800: Correlated sub query returning incorrect results when operated upon.
        Added call to the fix_inner_refs() function.
      mysql-test/r/subselect3.result:
        Corrected test cases result after fix for bug#23800: Correlated sub query returning
        incorrect results when operated upon.
      mysql-test/t/subselect.test:
        Added a test case for bug#23800: Correlated sub query returning incorrect results when
        operated upon.
      sql/sql_lex.cc:
        Bug#23800: Correlated sub query returning incorrect results when operated upon.
        Added cleanup of the inner_refs_list.
      sql/sql_lex.h:
        Bug#23800: Correlated sub query returning incorrect results when operated upon.
        The inner_refs_list is added to the SELECT_LEX class.
      f8855142
  30. 16 Feb, 2007 1 commit
    • unknown's avatar
      Bug#16630: The update fields of the INSERT .. SELECT .. ON DUPLICATE KEY · d5813a06
      unknown authored
      UPDATE contains wrong data if the SELECT employs a temporary table.
      
      If the UPDATE values of the INSERT .. SELECT .. ON DUPLICATE KEY UPDATE
      statement contains fields from the SELECT part and the select employs a
      temporary table then those fields will contain wrong values because they
      aren't corrected to get data from the temporary table.
      
      The solution is to add these fields to the selects all_fields list,
      to store pointers to those fields in the selects ref_pointer_array and
      to access them via Item_ref objects.
      
      The substitution for Item_ref objects is done in the new function called 
      Item_field::update_value_transformer(). It is called through the
      item->transform() mechanism at the end of the select_insert::prepare()
      function.
      
      
      sql/item.cc:
        Bug#16630: The update fields of the INSERT .. SELECT .. ON DUPLICATE KEY
        UPDATE contains wrong data if the SELECT employs a temporary table.
        The new method Item_field::update_value_transformer() is added. It
        substitutes fields in the update values list for references 
        (Item_ref objects) to them.
      sql/item.h:
        Bug#16630: The update fields of the INSERT .. SELECT .. ON DUPLICATE KEY
        UPDATE contains wrong data if the SELECT employs a temporary table.
        The update_value_transformer() method is added to the Item and to the
        Item_field classes.
      sql/sql_insert.cc:
        Bug#16630: The update fields of the INSERT .. SELECT .. ON DUPLICATE KEY
        UPDATE contains wrong data if the SELECT employs a temporary table.
        Traverse update values and substitute fields from the select for
        references (Item_ref objects) to them.
      sql/sql_select.cc:
        Bug#16630: The update fields of the INSERT .. SELECT .. ON DUPLICATE KEY
        UPDATE contains wrong data if the SELECT employs a temporary table.
        Traverse update values and substitute fields from the select for
        references (Item_ref objects) to them.
      mysql-test/r/insert_select.result:
        Added a test case for bug#16630: The update fields of the INSERT .. SELECT ..
        ON DUPLICATE KEY UPDATE contains wrong data if the SELECT employs a 
        temporary table.
      mysql-test/t/insert_select.test:
        Added a test case for bug#16630: The update fields of the INSERT .. SELECT ..
        ON DUPLICATE KEY UPDATE contains wrong data if the SELECT employs a 
        temporary table.
      d5813a06
  31. 15 Feb, 2007 1 commit
    • unknown's avatar
      Fixed bug #25971: indexes on text columns were ignored when ref accesses · 6ae94723
      unknown authored
      were evaluated.
      According to the new rules for string comparison partial indexes on text
      columns can be used in the same cases when partial indexes on varchar
      columns can be used.
      
      
      mysql-test/r/endspace.result:
        Adjusted results after the fix for bug #25971.
      mysql-test/r/innodb.result:
        Adjusted results after the fix for bug #25971.
      mysql-test/r/myisam.result:
        Adjusted results after the fix for bug #25971.
      mysql-test/r/select.result:
        Added a test case for bug #25971.
      mysql-test/r/type_blob.result:
        Adjusted results after the fix for bug #25971.
      mysql-test/t/select.test:
        Added a test case for bug #25971.
      6ae94723
  32. 12 Feb, 2007 2 commits
    • unknown's avatar
      Bug#24630 Subselect query crashes mysqld · 2572c826
      unknown authored
      The crash happens because second filling of the same I_S table happens in
      case of subselect with order by. table->sort.io_cache previously allocated
      in create_sort_index() is deleted during second filling
      (function get_schema_tables_result). There are two places where
      I_S table can be filled: JOIN::exec and create_sort_index().
      To fix the bug we should check if the table was already filled
      in one of these places and skip processing of the table in second.
      
      
      mysql-test/r/information_schema.result:
        test case
      mysql-test/t/information_schema.test:
        test case
      sql/mysql_priv.h:
        added new parameter 'executed_place' to function get_schema_tables_result()
      sql/sql_select.cc:
        added new parameter 'executed_place' to function get_schema_tables_result()
      sql/sql_show.cc:
        added more accurate check for cases when we need to refresh I_S table
      sql/table.cc:
        added more accurate check for cases when we need to refresh I_S table
      sql/table.h:
        added more accurate check for cases when we need to refresh I_S table
      2572c826
    • unknown's avatar
      Fixed bug #26209. · ac8e0293
      unknown authored
      The function make_unireg_sortorder ignored the fact that any
      view field is represented by a 'ref' object.
      This could lead to wrong results for the queries containing
      both GROUP BY and ORDER BY clauses.
      
      
      mysql-test/r/view.result:
        Added a test case for bug #26209.
      mysql-test/t/view.test:
        Added a test case for bug #26209.
      ac8e0293
  33. 05 Feb, 2007 1 commit
    • unknown's avatar
      Fix false Valgrind warning. · e3ddf925
      unknown authored
      On some compiler/platform combination, an assignment of form *p= *p
      would map to a memcpy() call, and Valgrind flags this as an overlapped
      memcpy() error.
      
      Fix by prefixing *p= *q with if(p!=q) when building for Valgrind
      (HAVE_purify).
      
      
      sql/sql_select.cc:
        Fix false valgrind warning.
      e3ddf925
  34. 31 Jan, 2007 1 commit
    • unknown's avatar
      Bug #25551: inconsistent behaviour in grouping NULL, depending on index type · d01ec5e7
      unknown authored
       The optimizer takes away columns from GROUP BY/DISTINCT if they constitute
       all the parts of an unique index.
       However if some of the columns can contain NULLs this cannot be done 
      (because an UNIQUE index can have multiple rows with NULL values).
       Fixed by not using UNIQUE indexes with nullable columns to remove
       grouping columns from GROUP BY/DISTINCT.
      
      
      mysql-test/r/distinct.result:
        Bug #25551: inconsistent behaviour in grouping NULL, depending on index type
         - test case
      mysql-test/t/distinct.test:
        Bug #25551: inconsistent behaviour in grouping NULL, depending on index type
         - test case
      sql/sql_select.cc:
        Bug #25551: inconsistent behaviour in grouping NULL, depending on index type
         - UNIQUE NULL indices don't guarantee GROUP BY/DISTINCT.
      d01ec5e7