An error occurred fetching the project authors.
  1. 28 Nov, 2006 1 commit
    • unknown's avatar
      BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0) · fad411e5
      unknown authored
       When implicitly converting string fields to numbers the 
       string-to-number conversion error was not sent to the client.
       Added code to send the conversion error as warning.
       
       We also need to prevent generation of warnings from the places
       where val_xxx() methods are called for the sole purpose of updating
       the Item::null_value flag.
       To achieve that a special function is added (and called) : 
       update_null_value(). This function will set the no_errors flag and
       will call val_xxx(). The warning generation in Field_string::val_xxx()
       will use the flag when generating the conversion warnings. 
      
      
      mysql-test/r/compare.result:
        BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
         - non-convertible strings in arithmetic operations
      mysql-test/r/func_gconcat.result:
        BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
         - non-convertible strings in arithmetic operations
      mysql-test/r/func_group.result:
        BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
         - non-convertible strings in arithmetic operations
      mysql-test/r/type_varchar.result:
        BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
         - test case
      mysql-test/t/type_varchar.test:
        BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
         - test case
      sql/field.cc:
        BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
         - send conversion warning to the client
      sql/item.cc:
        BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
         - send conversion warning to the client
      sql/item.h:
        BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
         - added a special function to explicitly update the null_value
      sql/item_func.h:
        BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
         - added a special function to explicitly update the null_value
      sql/item_subselect.h:
        BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
         - added a special function to explicitly update the null_value
      sql/item_sum.cc:
        BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
         - added a special function to explicitly update the null_value
      sql/item_sum.h:
        BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
         - added a special function to explicitly update the null_value
      sql/sql_string.h:
        BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
         - send conversion warning to the client
      fad411e5
  2. 09 Nov, 2006 2 commits
    • unknown's avatar
      Bug #20191: getTableName gives wrong or inconsistent result when using VIEWs · aa4beb22
      unknown authored
      When compiling GROUP BY Item_ref instances are dereferenced in 
      setup_copy_fields(), i.e. replaced with the corresponding Item_field 
      (if they point to one) or Item_copy_string for the other cases.
      Since the Item_ref (in the Item_field case) is no longer used the information
      about the aliases stored in it is lost.   
      Fixed by preserving the column, table and DB alias on dereferencing Item_ref
      
      
      mysql-test/r/metadata.result:
        Bug #20191: getTableName gives wrong or inconsistent result when using VIEWs
         - test case
      mysql-test/t/metadata.test:
        Bug #20191: getTableName gives wrong or inconsistent result when using VIEWs
         - test case
      sql/item.cc:
        Bug #20191: getTableName gives wrong or inconsistent result when using VIEWs
         - use the table and db name to fill up the metadata for columns
      sql/sql_select.cc:
        Bug #20191: getTableName gives wrong or inconsistent result when using VIEWs
         - preserve the field, table and DB name on dereferencing an Item_ref
      aa4beb22
    • unknown's avatar
      Bug#21505 Create view - illegal mix of collation for operation 'UNION' · 7856d3fd
      unknown authored
        
        The problem was that any VIEW columns had always implicit derivation.
        Fix: derivation is now copied from the original expression
        given in VIEW definition.
        For example:
        - a VIEW column which comes from a string constant
          in CREATE VIEW definition have now coercible derivation.
        - a VIEW column having COLLATE clause
          in CREATE VIEW definition have now explicit derivation.
      
      
      mysql-test/r/ctype_utf8.result:
        Adding test case
      mysql-test/t/ctype_utf8.test:
        Adding test case
      sql/field.cc:
        Copying derivation from item to field.
      sql/field.h:
        Adding derivation and methods to get/set it into Field.
      sql/item.cc:
        Copying derivation from field to item.
      sql/item.h:
        Moving "enum Derivation" declaration from item.h to mysql_priv.h
      sql/mysql_priv.h:
        Moving "enum Derivation" declaration from item.h to mysql_priv.h
      sql/sql_select.cc:
        Copying derivation from item to field in
        create_tmp_field_from_item() and create_tmp_field().
      7856d3fd
  3. 07 Nov, 2006 1 commit
    • unknown's avatar
      item.cc: · 5055c826
      unknown authored
        merge fixes
      
      
      sql/item.cc:
        merge fixes
      5055c826
  4. 03 Nov, 2006 1 commit
    • unknown's avatar
      Bug #22457: Column alias in ORDER BY works, but not if in an expression · f8ba4f1f
      unknown authored
       The parser is allocating Item_field for references by name in ORDER BY
       expressions. Such expressions however may point not only to Item_field 
       in the select list (or to a table column) but also to an arbitrary Item. 
       This causes Item_field::fix_fields to throw an error about missing 
       column.
       The fix substitutes Item_field for the reference with an Item_ref when 
       not pointing to Item_field.
      
      
      mysql-test/r/order_by.result:
        Bug #22457: Column alias in ORDER BY works, but not if in an expression
         - test case
      mysql-test/t/order_by.test:
        Bug #22457: Column alias in ORDER BY works, but not if in an expression
         - test case
      sql/item.cc:
        Bug #22457: Column alias in ORDER BY works, but not if in an expression
         - transform the Item_field made by the parser into Item_ref if it 
           doesn't point to Item_field and it is in allowed context
      f8ba4f1f
  5. 25 Oct, 2006 1 commit
    • unknown's avatar
      bug #19491 (CAST do DATETIME wrong result) · 8361922e
      unknown authored
      mysql-test/r/type_datetime.result:
        result fixed
      mysql-test/r/type_newdecimal.result:
        result fixed
      mysql-test/t/type_datetime.test:
        testcase
      mysql-test/t/type_newdecimal.test:
        testcase
      sql/field.cc:
        Field_new_decimal::store_time implemented
      sql/field.h:
        Field_new_decimal::store_time added
      sql/item.cc:
        auxiliary methods implemented to operate with datatimes
      sql/item.h:
        auxiliary methods declared in Item to operate with datatimes
      sql/item_timefunc.cc:
        Item_date::save_in_field old implementation removed
      sql/item_timefunc.h:
        my_decimal and save_in_field methods implemented for datetime items
      sql/my_decimal.cc:
        date2my_decimal implemented
      sql/my_decimal.h:
        date2my_decimal declared
      8361922e
  6. 24 Oct, 2006 1 commit
    • unknown's avatar
      Bug #21809: Error 1356 while selecting from view with grouping though underlying · bf3ff2ea
      unknown authored
                  select OK.
      The SQL parser was using Item::name to transfer user defined function attributes
      to the user defined function (udf). It was not distinguishing between user defined 
      function call arguments and stored procedure call arguments. Setting Item::name 
      was causing Item_ref::print() method to print the argument as quoted identifiers 
      and caused views that reference aggregate functions as udf call arguments (and 
      rely on Item::print() for the text of the view to store) to throw an undefined 
      identifier error.
      Overloaded Item_ref::print to print aggregate functions as such when printing
      the references to aggregate functions taken out of context by split_sum_func2()
      Fixed the parser to properly detect using AS clause in stored procedure arguments
      as an error.
      Fixed printing the arguments of udf call to print properly the udf attribute.
      
      
      mysql-test/r/udf.result:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - test cases
      mysql-test/t/udf.test:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - test cases
      sql/item.cc:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - Don't print the refs to SUM functions as refs.
      sql/item_func.cc:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - print the aliases in the udf calls
      sql/item_func.h:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - print the aliases in the udf calls
      sql/sql_lex.cc:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - disable aliases for arguments in stored routine calls
      sql/sql_lex.h:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - disable aliases for arguments in stored routine calls
      sql/sql_yacc.yy:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - disable aliases for arguments in stored routine calls
         - fix bison duplicate symbol warnings
      bf3ff2ea
  7. 27 Sep, 2006 1 commit
    • unknown's avatar
      BUG#21081: SELECT inside stored procedure returns wrong results · aa51892a
      unknown authored
      Re-execution of a parametrized prepared statement or a stored routine
      with a SELECT that use LEFT JOIN with second table having only one row
      could yield incorrect result.
      
      The problem appeared only for left joins with second table having only
      one row (aka const table) and equation conditions in ON or WHERE clauses
      that depend on the argument passed.  Once the condition was false for
      second const table, a NULL row was created for it, and any field involved
      got NULL-value flag, which then was never reset.
      
      The cause of the problem was that Item_field::null_value could be set
      without being reset for re-execution.  The solution is to reset
      Item_field::null_value in Item_field::cleanup().
      
      
      mysql-test/r/ps.result:
        Add result for bug#21081: SELECT inside stored procedure returns wrong
        results.
      mysql-test/t/ps.test:
        Add test case for bug#21081: SELECT inside stored procedure returns wrong
        results.
      sql/item.cc:
        Reset Item_field::null_value flag for re-execution.
      aa51892a
  8. 25 Sep, 2006 1 commit
    • unknown's avatar
      Fixed bug #21853: assert failure for a grouping query with · c492b149
      unknown authored
      an ALL/ANY quantified subquery in HAVING.
      The Item::split_sum_func2 method should not create Item_ref
      for objects of any class derived from Item_subselect.
      
      
      mysql-test/r/subselect.result:
        Added a test case for bug #21853.
      mysql-test/t/subselect.test:
        Added a test case for bug #21853.
      c492b149
  9. 07 Sep, 2006 1 commit
    • unknown's avatar
      Fixed bug #21698: erroneously a field could be replaced by an · f06e3012
      unknown authored
      equal constant under any circumstances.
      In fact this substitution can be allowed if the field is
      not of a type string or if the field reference serves as 
      an argument of a comparison predicate.  
      
      
      mysql-test/r/func_str.result:
        Added test cases for bug #21698.
      mysql-test/r/heap_hash.result:
        Adjusted results after the fix for bug #21198.
      mysql-test/t/func_str.test:
        Added test cases for bug #21698.
      sql/item.cc:
        Fixed bug #21198.
        Added a method to check whether a field reference can be 
        substituted for a constant equal to the field.
        This substitution is allowed if the field is not of a type string
        or if the field reference serves as an argument of a comparison
        predicate.
      sql/item.h:
        Fixed bug #21698.
        Added a new virtual transformation method for a item 'compile'
        with two callback function parameters.
        Added a new virtual method 'subst_argument_checker' to be used
        as an amnalyzer method.
        This method is supposed to set its in/out argument to NULL for
        the nodes where substitution of a string field for a constant
        is not valid.
      sql/item_cmpfunc.cc:
        Fixed bug #21698.
        Added an implementation of the compile method for class Item_cond.
        First it processes the Item_cond node with a callback function and if
        the latter returns TRUE it proceeds with a transformation performed by
        another callback function.
      sql/item_cmpfunc.h:
        Fixed bug #21698.
        Added the implementations of 'subst_argument_checker'
        for the Item_func and Item_cond classes.
        This method is supposed to set its in/out argument to NULL for
        the nodes where substitution of a string field for a constant
        is not valid.
        Added the declaration of an implementation of the compile method for 
        class Item_cond.
        First it processes the Item_cond node with a callback function and if
        the latter returns TRUE it proceeds with a transformation performed by
        another callback function.
      sql/item_func.cc:
        Fixed bug #21698.
        Added an implementation of the compile method for class Item_func.
        First it processes the Item_func node with a callback function and if
        the latter returns TRUE it proceeds with a transformation performed by
        another callback function.
      sql/item_func.h:
        Fixed bug #21698.
        Added the declaration of the implementation of the compile method for
        class Item_func.
        First it processes the Item_func node with a callback function and if
        the latter returns TRUE it proceeds with a transformation performed by
        another callback function.
      sql/sql_select.cc:
        Fixed bug #21698.
        Limited the conditions at which a field can be substituted 
        a for an equal constant in a formula. 
        This substitution is allowed if the field is not of a type string
        or if the field reference serves as an argument of a comparison
        predicate.
      f06e3012
  10. 25 Aug, 2006 1 commit
  11. 24 Aug, 2006 1 commit
    • unknown's avatar
      BUG#21166: Prepared statement causes signal 11 on second execution · f98a9109
      unknown authored
      Changes in an item tree done by optimizer weren't properly
      registered and went unnoticed, which resulted in preliminary freeing
      of used memory.
      
      
      mysql-test/r/ps.result:
        Add result for bug#21166: Prepared statement causes signal 11
        on second execution.
      mysql-test/t/ps.test:
        Add test case for bug#21166: Prepared statement causes signal 11
        on second execution.
      sql/item.cc:
        Move Item::transform() and Item_default_value::transform() from
        item.h here and use THD::change_item_tree() instead of plain
        assignment.
        Change Item_field::set_no_const_sub() to be used with Item::walk()
        instead of Item::transform().
      sql/item.h:
        Move definition of Item::transform() and Item_default_value::transform()
        to item.cc.
        Change Item::set_no_const_sub() to be used with Item::walk()
        instead of Item::transform().
      sql/item_cmpfunc.cc:
        Use Item::walk() to execute Item::set_no_const_sub().
        Use THD::change_item_tree() instead of plain assignment.
      sql/item_func.cc:
        Add assert and comment to Item_func::traverse_cond().
      sql/item_row.cc:
        Use THD::change_item_tree() instead of plain assignment.
      sql/item_strfunc.cc:
        Move Item_func_make_set::transform() from item_strfunc.h here and use
        THD::change_item_tree() instead of plain assignment.
      sql/item_strfunc.h:
        Move definition of Item_func_make_set::transform() to item_strfunc.cc.
      f98a9109
  12. 22 Aug, 2006 1 commit
    • unknown's avatar
      item_cmpfunc.cc, item.cc: · a989cf0b
      unknown authored
        Additional fix for bug #21475
      item_func.h, item_func.cc:
        Additional fix for bug#16861
      
      
      sql/item_func.h:
        Additional fix for bug#16861
      sql/item_func.cc:
        Additional fix for bug#16861
      sql/item_cmpfunc.cc:
        Additional fix for bug #21475
      sql/item.cc:
        Additional fix for bug #21475
      a989cf0b
  13. 20 Aug, 2006 1 commit
    • unknown's avatar
      Fixed bug#21475: Wrongly applied constant propagation leads to a false comparison. · 3a5f9967
      unknown authored
      A date can be represented as an int (like 20060101) and as a string (like
      "2006.01.01"). When a DATE/TIME field is compared in one SELECT against both
      representations the constant propagation mechanism leads to comparison
      of DATE as a string and DATE as an int. In this example it compares 2006 and
      20060101 integers. Obviously it fails comparison although they represents the
      same date.
      
      
      Now the Item_bool_func2::fix_length_and_dec() function sets the comparison
      context for items being compared. I.e. if items compared as strings the
      comparison context is STRING.
      The constant propagation mechanism now doesn't mix items used in different
      comparison contexts. The context check is done in the
      Item_field::equal_fields_propagator() and in the change_cond_ref_to_const() 
      functions.
      
      Also the better fix for bug 21159 is introduced.
      
      
      mysql-test/t/type_datetime.test:
        Added a test case for bug#21475: Wrongly applied constant propagation leads to a false comparison.
      mysql-test/r/type_datetime.result:
        Added a test case for bug#21475: Wrongly applied constant propagation leads to a false comparison.
      sql/sql_select.cc:
        Fixed bug#21475: Wrongly applied constant propagation leads to a false comparison.
        The constant propagation mechanism now doesn't mix items used in different
        comparison contexts. The check is done in the change_cond_ref_to_const() function.
      sql/item_cmpfunc.cc:
        Fixed bug#21475: Wrongly applied constant propagation leads to a false comparison.
        Now the Item_bool_func2::fix_length_and_dec() function sets the comparison
        context for items being compared.
      sql/item.h:
        Fixed bug#21475: Wrongly applied constant propagation leads to a false comparison.
        To the Item class a new field called cmp_context is added.
        It represents the comparison context of an item.
      sql/item.cc:
        Fixed bug#21475: Wrongly applied constant propagation leads to a false comparison.
        The constant propagation mechanism now doesn't mix items used in different
        comparison contexts. The context check is done in the
        Item_field::equal_fields_propagator() function.
      3a5f9967
  14. 21 Jul, 2006 2 commits
    • unknown's avatar
      Fixed bug#12185: Data type aggregation may produce wrong result · a05809b6
      unknown authored
      The Item::tmp_table_field_from_field_type() function creates Field_datetime
      object instead of Field_timestamp object for timestamp field thus always
      changing data type is a tmp table is used.
      
      The Field_blob object constructor which is used in the 
      Item::tmp_table_field_from_field_type() is always setting packlength field of
      newly created blob to 4. This leads to changing fields data type for example
      from the blob to the longblob if a temporary table is used.
      
      The Item::make_string_field() function always converts Field_string objects 
      to Field_varstring objects. This leads to changing data type from the 
      char/binary to varchar/varbinary.
      
      Added appropriate Field_timestamp object constructor for using in the 
      Item::tmp_table_field_from_field_type() function.
      
      Added Field_blob object constructor which sets pack length according to
      max_length argument.
      
      The Item::tmp_table_field_from_field_type() function now creates
      Field_timestamp object for a timestamp field.
      
      The Item_type_holder::display_length() now returns correct NULL length NULL
      length. 
      
      The Item::make_string_field() function now doesn't change Field_string to
      Field_varstring in the case of Item_type_holder. 
      
      The Item::tmp_table_field_from_field_type() function now uses the Field_blob
      constructor which sets packlength according to max_length.
      
      
      mysql-test/t/union.test:
        Added test case for bug#12185: Data type aggregation may produce wrong result
        Corrected test case after fix for bug#12185
      mysql-test/t/innodb.test:
        Corrected test case after fix for bug#12185
      mysql-test/r/union.result:
        Added test case for bug#12185: Data type aggregation may produce wrong result
         Corrected test case after fix for bug#12185
      mysql-test/r/innodb.result:
        Corrected test case after fix for bug#12185
      mysql-test/r/create.result:
        Corrected the test case after fixing bug#12185
      sql/field.h:
        Fixed bug#12185: Data type aggregation may produce wrong result
        Added Field_blob object constructor which sets packlength according to
        max_length argument.
      sql/item.cc:
        Fixed bug#12185: Data type aggregation may produce wrong result
        The Item::make_string_field() function now doesn't change Field_string to
        Field_varstring in the case of Item_type_holder.
        The Item::tmp_table_field_from_field_type() function now creates
        Field_timestamp object for a timestamp field.
        The Item::tmp_table_field_from_field_type() function now uses the Field_blob
        constructor which sets packlength according to max_length.
        The Item_type_holder::display_length() now returns correct NULL length NULL
        length.
      sql/field.cc:
        Fixed bug#12185: Data type aggregation may produce wrong result
        Added appropriate Field_timestamp object constructor for using in the 
        Item::tmp_table_field_from_field_type() function.
      a05809b6
    • unknown's avatar
      Bug #16881: password() and union select · 7d77a065
      unknown authored
        This was only demonstrated by the use of PASSWORD(), it was not related to
        that function at all. The calculation of the size of a field in the results
        of a UNION did not take into account the possible growth of a string field
        when being converted to the aggregated character set.
      
      
      mysql-test/r/union.result:
        Add new results
      mysql-test/t/union.test:
        Add new regression test
      sql/item.cc:
        Fix calculation of max_length when figuring out the type of a column in
        a UNION. It needs to take into account any expansion of field size due to
        charset conversions.
      7d77a065
  15. 17 Jul, 2006 1 commit
    • unknown's avatar
      Bug#21013: Performance Degrades when importing data that uses Trigger · 35b165f8
      unknown authored
                 and Stored Procedure
      
      The essence of the bug was that for every re-execution of stored
      routine or prepared statement new items for character set conversions
      were created, thus increasing the number of items and the time of their
      processing, and creating memory leak.
      
      No test case is provided since current test suite can't cover such type
      of bugs.
      
      
      mysql-test/r/sp.result:
        Add result for bug#21013: Performance Degrades when importing data
        that uses Trigger and Stored Procedure.
      mysql-test/t/sp.test:
        Add test case for bug#21013: Performance Degrades when importing data
        that uses Trigger and Stored Procedure.
      sql/item.cc:
        Switch arena only when in statement prepare mode.  Subsequent executions
        will use cached item tree.
      35b165f8
  16. 15 Jul, 2006 1 commit
    • unknown's avatar
      Fixed bug#10977: No warning issued if a column name is truncated · db1c95e8
      unknown authored
      When an alias is set to a column leading spaces are removed from the alias.
      But when this is done on aliases set by user this can lead to confusion.
      
      Now Item::set_name() method issues the warning if leading spaces were removed
      from an alias set by user.
      
      New warning message is added.
      
      
      mysql-test/t/select.test:
        Added test case for bug#10977:No warning issued if a column name is truncated.
      mysql-test/r/select.result:
        Added test case for bug#10977:No warning issued if a column name is truncated.
      sql/sql_yacc.yy:
        Fixed bug#10977: No warning issued if a column name is truncated
        The is_autogenerated_name flag is set before set_name() method call.
      sql/item.cc:
        Fixed bug#10977: No warning issued if a column name is truncated
        Now Item::set_name() method issues the warning if leading spaces were removed
        from an alias set by user.
      db1c95e8
  17. 01 Jul, 2006 1 commit
    • unknown's avatar
      Fix for bug#18437 "Wrong values inserted with a before update trigger on · ac957070
      unknown authored
      NDB table".
      
      SQL-layer was not marking fields which were used in triggers as such. As
      result these fields were not always properly retrieved/stored by handler
      layer. So one might got wrong values or lost changes in triggers for NDB,
      Federated and possibly InnoDB tables.
      This fix solves the problem by marking fields used in triggers
      appropriately.
      
      Also this patch contains the following cleanup of ha_ndbcluster code:
      
      We no longer rely on reading LEX::sql_command value in handler in order
      to determine if we can enable optimization which allows us to handle REPLACE
      statement in more efficient way by doing replaces directly in write_row()
      method without reporting error to SQL-layer.
      Instead we rely on SQL-layer informing us whether this optimization
      applicable by calling handler::extra() method with
      HA_EXTRA_WRITE_CAN_REPLACE flag.
      As result we no longer apply this optimzation in cases when it should not
      be used (e.g. if we have on delete triggers on table) and use in some
      additional cases when it is applicable (e.g. for LOAD DATA REPLACE).
      
      Finally this patch includes fix for bug#20728 "REPLACE does not work
      correctly for NDB table with PK and unique index".
        
      This was yet another problem which was caused by improper field mark-up.
      During row replacement fields which weren't explicity used in REPLACE
      statement were not marked as fields to be saved (updated) so they have
      retained values from old row version. The fix is to mark all table
      fields as set for REPLACE statement. Note that in 5.1 we already solve
      this problem by notifying handler that it should save values from all
      fields only in case when real replacement happens.
      
      
      include/my_base.h:
        Added HA_EXTRA_WRITE_CAN_REPLACE, HA_EXTRA_WRITE_CANNOT_REPLACE - new
        parameters for ha_extra() method. We use them to inform handler that
        write_row() which tries to insert new row into the table and encounters
        some already existing row with same primary/unique key can replace old
        row with new row instead of reporting error.
      mysql-test/r/federated.result:
        Additional test for bug#18437 "Wrong values inserted with a before update
        trigger on NDB table".
      mysql-test/r/ndb_replace.result:
        Added test for bug #20728 "REPLACE does not work correctly for NDB table
        with PK and unique index". Updated wrong results from older test.
      mysql-test/t/federated.test:
        Additional test for bug#18437 "Wrong values inserted with a before update
        trigger on NDB table".
      mysql-test/t/ndb_replace.test:
        Added test for bug #20728 "REPLACE does not work correctly for NDB table
        with PK and unique index".
      sql/ha_ndbcluster.cc:
        We no longer rely on reading LEX::sql_command value in handler in order
        to determine if we can enable optimization which allows us to handle REPLACE
        statement in more efficient way by doing replaces directly in write_row()
        method without reporting error to SQL-layer.
        Instead we rely on SQL-layer informing us whether this optimization
        applicable by calling handler::extra() method with
        HA_EXTRA_WRITE_CAN_REPLACE flag.
        As result we no longer apply this optimization in cases when it should not
        be used (e.g. if we have on delete triggers on table) and use in some
        additional cases when it is applicable (e.g. for LOAD DATA REPLACE).
      sql/item.cc:
        Item_trigger_field::setup_field():
          Added comment explaining why we don't set Field::query_id in this method.
      sql/mysql_priv.h:
        mysql_alter_table() function no longer takes handle_duplicates argument.
        Added declaration of mark_fields_used_by_triggers_for_insert_stmt() function.
      sql/sql_delete.cc:
        Mark fields which are used by ON DELETE triggers so handler will retrieve
        values for these fields.
      sql/sql_insert.cc:
        Explicitly inform handler that we are doing REPLACE (using ha_extra() method)
        in cases when it can promote insert operation done by write_row() to replace.
        Also when we do REPLACE we want to store values for all columns so we should
        inform handler about it.
        Finally we should mark fields used by ON UPDATE/ON DELETE triggers as such
        so handler can properly retrieve/restore values in these fields during
        execution of REPLACE and INSERT ... ON DUPLICATE KEY UPDATE statements.
      sql/sql_load.cc:
        Explicitly inform handler that we are doing LOAD DATA REPLACE (using
        ha_extra() method) in cases when it can promote insert operation done by
        write_row() to replace.
        Also when we do replace we want to save (replace) values for all columns
        so we should inform handler about it.
        Finally to properly execute LOAD DATA for table with triggers we should
        mark fields used by ON INSERT triggers as such so handler can properly
        store values for these fields.
      sql/sql_parse.cc:
        mysql_alter_table() function no longer takes handle_duplicates argument.
      sql/sql_table.cc:
        Got rid of handle_duplicates argument in mysql_alter_table() and
        copy_data_between_tables() functions. These functions were always
        called with handle_duplicates == DUP_ERROR and thus contained dead
        (and probably incorrect) code.
      sql/sql_trigger.cc:
        Added Table_triggers_list::mark_fields_used() method which is used to mark
        fields read/set by triggers as such so handlers will be able properly
        retrieve/store values in these fields.
      sql/sql_trigger.h:
        Table_triggers_list:
          Added mark_fields_used() method which is used to mark fields read/set by
          triggers as such so handlers will be able properly retrieve/store values
          in these fields. To implement this method added 'trigger_fields' member
          which is array of lists linking items for all fields used in triggers
          grouped by event and action time.
      sql/sql_update.cc:
        Mark fields which are used by ON UPDATE triggers so handler will retrieve
        and save values for these fields.
      mysql-test/r/ndb_trigger.result:
        Added test for bug#18437 "Wrong values inserted with a before update trigger
        on NDB table".
      mysql-test/t/ndb_trigger.test:
        Added test for bug#18437 "Wrong values inserted with a before update trigger
        on NDB table".
      ac957070
  18. 30 Jun, 2006 1 commit
    • unknown's avatar
      BUG#20769: Dangling pointer in ctype_recoding test case. · 17c4a2ea
      unknown authored
      In some functions dealing with strings and character sets, the wrong
      pointers were saved for restoration in THD::rollback_item_tree_changes().
      This could potentially cause random corruption or crashes.
      
      Fixed by passing the original Item ** locations, not local stack copies.
      
      Also remove unnecessary use of default arguments.
      
      
      sql/item.cc:
        Function agg_item_charsets() now handles non-consequtive Item *'s.
      sql/item.h:
        Remove use of default argument.
      sql/item_cmpfunc.cc:
        Remove use of default argument.
      sql/item_func.cc:
        Remove use of default argument.
      sql/item_func.h:
        Function agg_item_charsets() now handles non-consequtive Item *'s.
      sql/item_strfunc.cc:
        Pass original Item **'s to agg_arg_charsets(), not local copies, to ensure
        proper restoration in THD::rollback_item_tree_changes().
      sql/item_sum.cc:
        Remove use of default argument.
      17c4a2ea
  19. 29 Jun, 2006 1 commit
    • unknown's avatar
      Bug#19671 mysql_list_fields returns incorrect table name for VIEWs · bffd7752
      unknown authored
      After view onening real view db name and table name are placed
      into table_list->view_db & table_list->view_name.
      Item_field class does not handle these names properly during 
      intialization of Send_field.
      The fix is to use new class 'Item_ident_for_show' 
      which sets correct view db name and table name for Send_field.
      
      
      sql/item.cc:
        Bug#19671 mysql_list_fields returns incorrect table name for VIEWs
        new Item_ident_for_show class which correctly sets view db and table names
        for Send_field.
      sql/item.h:
        Bug#19671 mysql_list_fields returns incorrect table name for VIEWs
        new Item_ident_for_show class which correctly sets view db and table names
        for Send_field.
      sql/sql_show.cc:
        Bug#19671 mysql_list_fields returns incorrect table name for VIEWs
        new Item_ident_for_show is used for views
      tests/mysql_client_test.c:
        Bug#19671 mysql_list_fields returns incorrect table name for VIEWs
        test case
      bffd7752
  20. 17 May, 2006 2 commits
    • unknown's avatar
      Fixed bug#19077: A nested materialized derived table is used before being populated. · 5e38e2ce
      unknown authored
      The convert_constant_item() function converts constant items to ints on
      prepare phase to optimize execution speed. In this case it tries to evaluate
      subselect which contains a derived table and is contained in a derived table. 
      All derived tables are filled only after all derived tables are prepared.
      So evaluation of subselect with derived table at the prepare phase will
      return a wrong result.
      
      A new flag with_subselect is added to the Item class. It indicates that
      expression which this item represents is a subselect or contains a subselect.
      It is set to 0 by default. It is set to 1 in the Item_subselect constructor
      for subselects.
      For Item_func and Item_cond derived classes it is set after fixing any argument
      in Item_func::fix_fields() and Item_cond::fix_fields accordingly.
      The convert_constant_item() function now doesn't convert a constant item
      if the with_subselect flag set in it. 
      
      
      mysql-test/t/view.test:
        Added test case for bug#19077: A nested materialized derived table is used before being populated.
      mysql-test/t/subselect.test:
        Added test case for bug#19077: A nested materialized derived table is used before being populated.
      mysql-test/r/view.result:
        Added test case for bug#19077: A nested materialized derived table is used before being populated.
      mysql-test/r/subselect.result:
        Added test case for bug#19077: A nested materialized derived table is used before being populated.
      sql/item_subselect.cc:
        Fixed bug#19077: A nested materialized derived table is used before being populated.
        The Item_subselect class constructor sets new with_subselect flag to 1.
      sql/item_func.cc:
        Fixed bug#19077: A nested materialized derived table is used before being populated.
        
        The Item_func::fix_fields() sets new with_subselect flag from with_subselect flags of its arguments.
      sql/item_cmpfunc.cc:
        Fixed bug#19077: A nested materialized derived table is used before being populated.
        The convert_constant_item() function now doesn't convert a constant item
        with the with_subselect flag set.
        The Item_cond::fix_fields() sets new with_subselect flag from with_subselect flags of its arguments.
      sql/item.cc:
        Fixed bug#19077: A nested materialized derived table is used before being populated.
        Set new with_subselect flag to default value - 0 in the Item constructor.
      sql/item.h:
        Fixed bug#19077: A nested materialized derived table is used before being populated.
        A new flag with_subselect is added to the Item class. It indicates that
        expression which this item represents is a subselect or contains a subselect.
        It is set to 0 by default.
      5e38e2ce
    • unknown's avatar
      Fixed bug #19573. · f5edaf09
      unknown authored
      The select statement that specified a view could be
      slightly changed when the view was saved in a frm file.
      In particular references to an alias name in the HAVING
      clause could be substituted for the expression named by
      this alias.
      This could result in an error message for a query of
      the form SELECT * FROM <view>. Yet no such message
      appeared when executing the query specifying the view.
      
      
      mysql-test/r/having.result:
        Adjusted results after fixing bug #19573.
      mysql-test/r/view.result:
        Added a test case for bug #19573.
      mysql-test/t/view.test:
        Added a test case for bug #19573.
      f5edaf09
  21. 15 May, 2006 2 commits
  22. 13 May, 2006 1 commit
    • unknown's avatar
      Bug#17048 CREATE TABLE ... SELECT truncate values · 452a3fa1
      unknown authored
      remove initialization of unsigned_flag for Item_decimal
      
      
      mysql-test/r/case.result:
        Bug#17048 CREATE TABLE ... SELECT truncate values
        result fix
      mysql-test/r/metadata.result:
        Bug#17048 CREATE TABLE ... SELECT truncate values
        result fix
      mysql-test/r/ps_2myisam.result:
        Bug#17048 CREATE TABLE ... SELECT truncate values
        result fix
      mysql-test/r/ps_3innodb.result:
        Bug#17048 CREATE TABLE ... SELECT truncate values
        result fix
      mysql-test/r/ps_4heap.result:
        Bug#17048 CREATE TABLE ... SELECT truncate values
        result fix
      mysql-test/r/ps_5merge.result:
        Bug#17048 CREATE TABLE ... SELECT truncate values
        result fix
      mysql-test/r/ps_6bdb.result:
        Bug#17048 CREATE TABLE ... SELECT truncate values
        result fix
      mysql-test/r/ps_7ndb.result:
        Bug#17048 CREATE TABLE ... SELECT truncate values
        result fix
      mysql-test/r/type_float.result:
        Bug#17048 CREATE TABLE ... SELECT truncate values
        result fix
      mysql-test/r/type_newdecimal.result:
        Bug#17048 CREATE TABLE ... SELECT truncate values
        result fix
      452a3fa1
  23. 12 May, 2006 1 commit
    • unknown's avatar
      Bug#14635: Accept NEW.x as INOUT parameters to stored procedures · eb567121
      unknown authored
      from within triggers
      
      Add support for passing NEW.x as INOUT and OUT parameters to stored
      procedures.  Passing NEW.x as INOUT parameter requires SELECT and
      UPDATE privileges on that column, and passing it as OUT parameter
      requires only UPDATE privilege.
      
      
      mysql-test/r/sp-error.result:
        Update the result for new message.
      mysql-test/r/trigger-grant.result:
        Add result for bug#14635.
      mysql-test/r/trigger.result:
        Add result for bug#14635.
      mysql-test/t/trigger-grant.test:
        Add test case for bug#14635.
      mysql-test/t/trigger.test:
        Add test case for bug#14635.
      sql/item.cc:
        Add implementations of set_value() and set_required_privilege() methods
        of Settable_routine_parameter interface.
        
        Use Item_trigger_field::want_privilege instead of
        Item_trigger_field::access_type.
        
        Reset privileges on Item_trigger_field::cleanup().
      sql/item.h:
        Add interface class Settable_routine_parameter and interface query
        method to Item class.  Item_splocal and Item_trigger_field implement
        this interface.
        
        For Item_trigger_field:
         - add read_only attribute and is_read_only() method.
         - remove access_type and add original_privilege and want_privilege
           instead.
         - add set_value() method.
         - add reset_privilege() method.
      sql/item_func.cc:
        Add implementations of set_value() method of Settable_routine_parameter
        interface.
      sql/item_func.h:
        Item_func_get_user_var implements Settable_routine_parameter interface.
      sql/share/errmsg.txt:
        Update english ER_SP_NOT_VAR_ARG message.
      sql/sp_head.cc:
        Use Settable_routine_parameter interface for parameter update.
      sql/sql_yacc.yy:
        Set read_only and want_privilege members in Item_trigger_field
        appropriately.  For NEW.x trigger variable used in left-hand-side
        of SET statement the latter is set to UPDATE_ACL, otherwise it is
        set to SELECT_ACL (but see Item_trigger_field::set_required_privilege(),
        where it may be updated to different value).
      eb567121
  24. 28 Apr, 2006 1 commit
    • unknown's avatar
      BUG#18492: mysqld reports ER_ILLEGAL_REFERENCE in --ps-protocol · 0e0d0d9d
      unknown authored
      In the code that converts IN predicates to EXISTS predicates it is changing
      the select list elements to constant 1. Example :
      SELECT ... FROM ...  WHERE a IN (SELECT c FROM ...)
      is transformed to :
      SELECT ... FROM ... WHERE EXISTS (SELECT 1 FROM ...  HAVING a = c)
      However there can be no FROM clause in the IN subquery and it may not be
      a simple select : SELECT ... FROM ... WHERE a IN (SELECT f(..) AS
      c UNION SELECT ...) This query is transformed to : SELECT ... FROM ...
      WHERE EXISTS (SELECT 1 FROM (SELECT f(..) AS c UNION SELECT ...)
      x HAVING a = c) In the above query c in the HAVING clause is made to be
      an Item_null_helper (a subclass of Item_ref) pointing to the real
      Item_field (which is not referenced anywhere else in the query anymore).
      This is done because Item_ref_null_helper collects information whether
      there are NULL values in the result.  This is OK for directly executed
      statements, because the Item_field pointed by the Item_null_helper is
      already fixed when the transformation is done.  But when executed as
      a prepared statement all the Item instances are "un-fixed" before the
      recompilation of the prepared statement. So when the Item_null_helper
      gets fixed it discovers that the Item_field it points to is not fixed
      and issues an error.  The remedy is to keep the original select list
      references when there are no tables in the FROM clause. So the above
      becomes : SELECT ... FROM ...  WHERE EXISTS (SELECT c FROM (SELECT f(..)
      AS c UNION SELECT ...) x HAVING a = c) In this way c is referenced
      directly in the select list as well as by reference in the HAVING
      clause. So it gets correctly fixed even with prepared statements.  And
      since the Item_null_helper subclass of Item_ref_null_helper is not used
      anywhere else it's taken out.
      
      
      mysql-test/r/ps_11bugs.result:
        Test case for the bug
      mysql-test/r/subselect.result:
        Explain updated because of the tranformation
      mysql-test/t/ps_11bugs.test:
        Testcase for the bug
      sql/item.cc:
        Taking out Item_null_helper as it's no longer needed
      sql/item.h:
        Taking out Item_null_helper as it's no longer needed
      sql/item_subselect.cc:
        The described change to the IN->EXISTS transformation
      0e0d0d9d
  25. 25 Apr, 2006 1 commit
    • unknown's avatar
      BUG#15872: Don't run the range analyzer on "t1.keypart NOT IN (const1, ..., )", as that consumes · ccf8af40
      unknown authored
      too much memory. Instead, either create the equvalent SEL_TREE manually, or create only two ranges that
      strictly include the area to scan
      (Note: just to re-iterate: increasing NOT_IN_IGNORE_THRESHOLD will make optimization run slower for big 
      IN-lists, but the server will not run out of memory. O(N^2) memory use has been eliminated)
      
      
      mysql-test/r/func_in.result:
        Testcase for BUG#15872
      mysql-test/t/func_in.test:
        Testcase for BUG#15872
      sql/item.cc:
        BUG#15872: Added Item_decimal::set_decimal_value()
      sql/item.h:
        UG#15872: Added Item_decimal::set_decimal_value()
      sql/item_cmpfunc.h:
        BUG#15872: Added in_vector::create_item(), in_vector::value_to_item() and their implementations in concrete
        classes.
      sql/opt_range.cc:
        BUG#15872: Don't run the range analyzer on "t1.keypart NOT IN (const1, ..., )", as that 
        consumes too much memory. Instead, either 
         A) create the equivalent SEL_TREE manually, making use of the fact that item_not_in->array
            has an ordered IN-list, or
         B) create only two ranges: (-inf|NULL) < X < min_value_from_in_list,  max_value_from_in_list < X
        (Choose #B if the IN-list has > 10K elements)
      ccf8af40
  26. 20 Apr, 2006 1 commit
    • unknown's avatar
      Fixed bug#18739: non-standard HAVING extension was allowed in strict ANSI sql mode. · ba39dcf6
      unknown authored
      The SQL standard doesn't allow to use in HAVING clause fields that are not 
      present in GROUP BY clause and not under any aggregate function in the HAVING
      clause. However, mysql allows using such fields. This extension assume that 
      the non-grouping fields will have the same group-wise values. Otherwise, the 
      result will be unpredictable. This extension allowed in strict 
      MODE_ONLY_FULL_GROUP_BY sql mode results in misunderstanding of HAVING 
      capabilities.
      
      The new error message ER_NON_GROUPING_FIELD_USED message is added. It says
      "non-grouping field '%-.64s' is used in %-.64s clause". This message is
      supposed to be used for reporting errors when some field is not found in the
      GROUP BY clause but have to be present there. Use cases for this message are 
      this bug and when a field is present in a SELECT item list not under any 
      aggregate function and there is GROUP BY clause present which doesn't mention 
      that field. It renders the ER_WRONG_FIELD_WITH_GROUP error message obsolete as
      being more descriptive.
      The resolve_ref_in_select_and_group() function now reports the 
      ER_NON_GROUPING_FIELD_FOUND error if the strict mode is set and the field for 
      HAVING clause is found in the SELECT item list only.
      
      
      
      sql/share/errmsg.txt:
        Added the new ER_NON_GROUPING_FIELD_USED error message for the bug#14169.
      mysql-test/t/having.test:
        Added test case for the bug#18739:  non-standard HAVING extension was allowed in strict ANSI sql mode.
      mysql-test/r/having.result:
        Added test case for the bug#18739:  non-standard HAVING extension was allowed in strict ANSI sql mode.
      sql/sql_select.cc:
        Added TODO comment to change the ER_WRONG_FIELD_WITH_GROUP to more detailed ER_NON_GROUPING_FIELD_USED message.
      sql/item.cc:
        Fixed bug#18739: non-standard HAVING extension was allowed in strict ANSI sql mode.
        The resolve_ref_in_select_and_group() function now reports the
        ER_NON_GROUPING_FIELD_FOUND error if the strict MODE_ONLY_FULL_GROUP_BY mode
        is set and the field for HAVING clause is found in the SELECT item list only.
      ba39dcf6
  27. 12 Apr, 2006 1 commit
    • unknown's avatar
      Bug#16461: connection_id() does not work properly inside trigger · 489ea1be
      unknown authored
      CONNECTION_ID() was implemented as a constant Item, i.e. an instance of
      Item_static_int_func class holding value computed at creation time.
      Since Items are created on parsing, and trigger statements are parsed
      on table open, the first connection to open a particular table would
      effectively set its own CONNECTION_ID() inside trigger statements for
      that table.
      
      Re-implement CONNECTION_ID() as a class derived from Item_int_func, and
      compute connection_id on every call to fix_fields().
      
      
      mysql-test/r/trigger.result:
        Add result for bug#16461.
      mysql-test/t/trigger.test:
        Add test case for bug#16461.
      sql/item.cc:
        Remove now unused class Item_static_int_func.
      sql/item.h:
        Remove now unused class Item_static_int_func.
      sql/item_create.cc:
        Use new implementation of CONNECTION_ID().
      sql/item_func.cc:
        Re-implement CONNECTION_ID() as Item_func_connection_id
        (was Item_static_int_func).  Set max_length to 10, as it was before.
        Compute connection_id dynamically on every call to fix_fields().
      sql/item_func.h:
        Re-implement CONNECTION_ID() as Item_func_connection_id
        (was Item_static_int_func).
      489ea1be
  28. 06 Apr, 2006 1 commit
    • unknown's avatar
      Fixed bug #15917: unexpected complain for a NIST test case. · eff2fcd0
      unknown authored
      The problem was due to the fact that with --lower-case-table-names set to 1 
      the function find_field_in_group did not convert the prefix 'HU' in
      HU.PROJ.CITY into lower case when looking for it in the group list. Yet the
      names in the group list were extended by the database name in lower case.
      
      
      mysql-test/r/having.result:
        Added a test case for bug #15917.
      mysql-test/t/having.test:
        Added a test case for bug #15917.
      sql/item.cc:
        Fixed bug #15917: unexpected complain for a NIST test case.
        The problem was due to the fact that with --lower-case-table-names set to 1 
        the function find_field_in_group did not convert the prefix 'HU' in
        HU.PROJ.CITY into lower case when looking for it in the group list. Yet the
        names in the group list were extended by the database name in lower case.
        The needed conversion was added to the code of find_field_in_group.
      eff2fcd0
  29. 01 Apr, 2006 1 commit
    • unknown's avatar
      Fixed bug #16504. · 62302ad0
      unknown authored
      Multiple equalities were not adjusted after reading constant tables.
      It resulted in neglecting good index based methods that could be
      used to access of other tables.
      
      
      mysql-test/r/having.result:
        Adjusted a test case results after fix for bug #16504.
      mysql-test/r/select.result:
        Added a test case for bug #16504.
      mysql-test/r/subselect.result:
        Adjusted a test case results after fix for bug #16504.
      mysql-test/r/varbinary.result:
        Adjusted a test case results after fix for bug #16504.
      mysql-test/t/select.test:
        Added a test case for bug #16504.
      sql/item.cc:
        Fixed bug #16504.
        An Item_equal object may contain only a constant member.
        It may happen after reading constant tables.
      sql/item_cmpfunc.cc:
        Fixed bug #16504.
        Added method Item_equal::check_const that check appearance of new 
        constant items in a multiple equality.
      sql/item_cmpfunc.h:
        Fixed bug #16504.
        Added method Item_equal::check_const that check appearance of new 
        constant items in a multiple equality.
      sql/sql_select.cc:
        Fixed bug #16504.
        Adjusted multiple equalities after reading constant tables.
        Fixed a few typo in comments.
      62302ad0
  30. 31 Mar, 2006 2 commits
    • unknown's avatar
      Fixed a typo. · 5bdcdfb5
      unknown authored
      5bdcdfb5
    • unknown's avatar
      Fix for BUG#16710. · bb839d3a
      unknown authored
      The bug was due to a missed case in the detection of whether an index
      can be used for loose scan. More precisely, the range optimizer chose
      to use loose index scan for queries for which the condition(s) over
      an index key part could not be pushed to the index together with the
      loose scan.
      
      As a result, loose index scan was selecting the first row in the
      index with a given GROUP BY prefix, and was applying the WHERE
      clause after that, while it should have inspected all rows with
      the given prefix, and apply the WHERE clause to all of them.
      
      The fix detects and skips such cases.
      
      
      mysql-test/r/group_min_max.result:
        Added test for BUG#16710.
      mysql-test/t/group_min_max.test:
        Added test for BUG#16710.
      sql/item.cc:
        Added new method [Item | Item_field]::find_item_in_field_list_processor.
      sql/item.h:
        Added new method [Item | Item_field]::find_item_in_field_list_processor.
      sql/opt_range.cc:
        Handle the case when there is no MIN/MAX aggregate function, and a
        keypart of the index being considered, that is after the GROUP BY
        prefix, is used in the WHERE clause and the condition where it is
        used cannot be pushed to the index.
        If this is the case, we rule out this index.
      bb839d3a
  31. 28 Mar, 2006 1 commit
    • unknown's avatar
      Fixed bug #18386. · 49585a2f
      unknown authored
      An invalid assertion in Item_direct_view_ref::eq caused 
      an assertion abort in the debug version.
      
      
      mysql-test/r/view.result:
        Added a test case for bug #18386.
      mysql-test/t/view.test:
        Added a test case for bug #18386.
      sql/item.cc:
        Fixed bug #18386.
        An invalid assertion in Item_direct_view_ref::eq caused 
        an assertion abort in the debug version.
        Changed the assertion.
      49585a2f
  32. 21 Mar, 2006 1 commit
    • unknown's avatar
      BUG#18293 (Values in stored procedures written to binlog unescaped): · 36d34667
      unknown authored
      Generating character set-independent quoting of strings for the
      binary log when executing statements from inside stored procedure.
      
      
      mysql-test/r/ctype_cp932_binlog.result:
        Result change
      mysql-test/t/ctype_cp932_binlog.test:
        Adding check that string literals are written correctly for multi-byte
        character sets.
      sql/item.cc:
        Cutting out character set-independent string escaping code and putting it
        in a separate function.
      sql/log_event.cc:
        Adding characters set-independent code to separate function.
      sql/mysql_priv.h:
        Adding new function.
      sql/sp_head.cc:
        Escaping string value representing a string item.
      36d34667
  33. 01 Mar, 2006 1 commit
    • unknown's avatar
      Bug#15949 union + illegal mix of collations (IMPLICIT + COERCIBLE) · d00c37c2
      unknown authored
      union.result, union.test:
        Adding test case.
      item.cc:
        Allow safe character set conversion in UNION
        - string constant to column's charset
        - to unicode
        Thus, UNION now works the same with CONCAT (and other string functions)
        in respect of aggregating arguments with different character sets.
      
      
      sql/item.cc:
        Allow character set conversion in UNION
        - string to column's charset
        - to unicode
        Bug#15949 union + illegal mix of collations (IMPLICIT + COERCIBLE)
      mysql-test/t/union.test:
        Adding test case.
      mysql-test/r/union.result:
        Adding test case.
      d00c37c2
  34. 24 Feb, 2006 1 commit
    • unknown's avatar
      Fixes to embedded server to be able to run tests with it · 988f0be6
      unknown authored
      (Needed for "list of pushes" web page and autopush)
      
      
      include/mysql.h:
        Fix to embedded server to be able to run tests on it
      libmysql/libmysql.c:
        Fix to embedded server to be able to run tests on it
      libmysqld/emb_qcache.cc:
        Fix to embedded server to be able to run tests on it
      libmysqld/embedded_priv.h:
        Fix to embedded server to be able to run tests on it
      libmysqld/lib_sql.cc:
        Fix to embedded server to be able to run tests on it
      libmysqld/libmysqld.c:
        Fix to embedded server to be able to run tests on it
      mysql-test/mysql-test-run.sh:
        Fix to embedded server to be able to run tests on it
      mysql-test/r/binlog.result:
        Updated test for embedded server
      mysql-test/r/ctype_cp932.result:
        Updated test for embedded server
      mysql-test/r/innodb.result:
        Updated test for embedded server
      mysql-test/r/mysqltest.result:
        Updated test for embedded server
      mysql-test/r/query_cache.result:
        Updated test for embedded server
      mysql-test/r/query_cache_notembedded.result:
        Updated test for embedded server
      mysql-test/r/sp-error.result:
        Updated test for embedded server
      mysql-test/r/sp.result:
        Updated test for embedded server
      mysql-test/r/subselect.result:
        Updated test for embedded server
      mysql-test/r/view.result:
        Updated test for embedded server
      mysql-test/r/view_grant.result:
        Updated test for embedded server
      mysql-test/t/backup.test:
        Updated test for embedded server
      mysql-test/t/binlog.test:
        Updated test for embedded server
      mysql-test/t/blackhole.test:
        Updated test for embedded server
      mysql-test/t/compress.test:
        Updated test for embedded server
      mysql-test/t/ctype_cp932.test:
        Updated test for embedded server
      mysql-test/t/delayed.test:
        Updated test for embedded server
      mysql-test/t/handler.test:
        Updated test for embedded server
      mysql-test/t/innodb.test:
        Updated test for embedded server
      mysql-test/t/mysql.test:
        Updated test for embedded server
      mysql-test/t/mysql_client_test.test:
        Updated test for embedded server
      mysql-test/t/mysqltest.test:
        Updated test for embedded server
      mysql-test/t/query_cache.test:
        Updated test for embedded server
      mysql-test/t/query_cache_notembedded.test:
        Updated test for embedded server
      mysql-test/t/read_only.test:
        Updated test for embedded server
      mysql-test/t/skip_grants.test:
        Updated test for embedded server
      mysql-test/t/sp-destruct.test:
        Updated test for embedded server
      mysql-test/t/sp-error.test:
        Updated test for embedded server
      mysql-test/t/sp-threads.test:
        Updated test for embedded server
      mysql-test/t/sp.test:
        Updated test for embedded server
      mysql-test/t/subselect.test:
        Updated test for embedded server
      mysql-test/t/temp_table.test:
        Updated test for embedded server
      mysql-test/t/view.test:
        Updated test for embedded server
      mysql-test/t/view_grant.test:
        Updated test for embedded server
      mysql-test/t/wait_timeout.test:
        Updated test for embedded server
      mysys/mf_dirname.c:
        Review fix: Don't access data outside of array
      mysys/my_bitmap.c:
        Remove compiler warnings
      scripts/mysql_fix_privilege_tables.sql:
        Add flush privileges to .sql script so that one doesn't have to reboot mysqld when one runs the mysql_fix_privilege_script
      sql-common/client.c:
        Updated test for embedded server
      sql/item.cc:
        Remove DBUG_PRINT statement that can cause crashes when running with --debug
      sql/mysqld.cc:
        Fix to embedded server to be able to run tests on it
      sql/protocol.cc:
        Fix to embedded server to be able to run tests on it
        (Trivial reconstruction of code)
      sql/protocol.h:
        Fix to embedded server to be able to run tests on it
      sql/sql_base.cc:
        Better comment
      sql/sql_class.cc:
        Fix to embedded server to be able to run tests on it
      sql/sql_class.h:
        Fix to embedded server to be able to run tests on it
      sql/sql_cursor.cc:
        Fix to embedded server to be able to run tests on it
      sql/sql_parse.cc:
        Fix to embedded server to be able to run tests on it
        Don't crash for disabled commands when using embedded server
      sql/sql_prepare.cc:
        Fix to embedded server to be able to run tests on it
      mysql-test/r/ctype_cp932_notembedded.result:
        New BitKeeper file ``mysql-test/r/ctype_cp932_notembedded.result''
      mysql-test/r/innodb_notembedded.result:
        New BitKeeper file ``mysql-test/r/innodb_notembedded.result''
      mysql-test/r/sp.result.orig:
        New BitKeeper file ``mysql-test/r/sp.result.orig''
      mysql-test/r/sp_notembedded.result:
        New BitKeeper file ``mysql-test/r/sp_notembedded.result''
      mysql-test/r/subselect_notembedded.result:
        New BitKeeper file ``mysql-test/r/subselect_notembedded.result''
      mysql-test/t/ctype_cp932_notembedded.test:
        New BitKeeper file ``mysql-test/t/ctype_cp932_notembedded.test''
      mysql-test/t/innodb_notembedded.test:
        New BitKeeper file ``mysql-test/t/innodb_notembedded.test''
      mysql-test/t/sp.test.orig:
        New BitKeeper file ``mysql-test/t/sp.test.orig''
      mysql-test/t/sp_notembedded.test:
        New BitKeeper file ``mysql-test/t/sp_notembedded.test''
      mysql-test/t/subselect_notembedded.test:
        New BitKeeper file ``mysql-test/t/subselect_notembedded.test''
      988f0be6
  35. 22 Feb, 2006 1 commit
    • unknown's avatar
      BUG#17265 Assertion failure in rpl_row_view01. · fc08a36c
      unknown authored
      To quote Timour review lines:
      
      The actual cause of the bug is that sql_base.cc:setup_wild()
      sets "select_lex->with_wild = 0" (in the end of the function) once
      it expands all wild-cards, and wild-card expansion is done during
      the prepare phase. During this phase we replace all "*" with the
      corresponding items, which for views happen to be references to
      references. When we do execute, select_lex->with_wild = 0, and
      all "*" are already replaced by the corresponding items, which
      in the case of views need to be dereferenced first.
      
      Fixed by refining the assert. Regression test for the bug is rpl_row_view01,
      as was reported.
      
      
      sql/item.cc:
        Refined asssert, suggested by Evgen, due to BUG#17265 prepared statement for select with ps-protocol 
        does not hold the former.
      fc08a36c