1. 13 Jun, 2006 1 commit
    • unknown's avatar
      Fixed bug#16377: result of DATE/TIME functions were compared as strings which · e3df0745
      unknown authored
      can lead to a wrong result.
      
      All date/time functions has the STRING result type thus their results are
      compared as strings. The string date representation allows a user to skip 
      some of leading zeros. This can lead to wrong comparison result if a date/time 
      function result is compared to such a string constant.
      
      The idea behind this bug fix is to compare results of date/time functions
      and data/time constants as ints, because that date/time representation is 
      more exact. To achieve this the agg_cmp_type() is changed to take in the
      account that a date/time field or an date/time item should be compared 
      as ints.
      
      This bug fix is partially back ported from 5.0.
      
      The agg_cmp_type() function now accepts THD as one of parameters. 
      In addition, it now checks if a date/time field/function is present in the
      list. If so, it tries to coerce all constants to INT to make date/time
      comparison return correct result. The field for the constant coercion is
      taken from the Item_field or constructed from the Item_func. In latter case
      the constructed field will be freed after conversion of all constant items.
      Otherwise the result is same as before - aggregated with help of the
      item_cmp_type() function.
      
      From the Item_func_between::fix_length_and_dec() function removed the part
      which was converting date/time constants to int if possible. Now this is 
      done by the agg_cmp_type() function.
      
      The new function result_as_longlong() is added to the Item class. 
      It indicates that the item is a date/time item and result of it can be
      compared as int. Such items are date/time fields/functions.
      
      Correct val_int() methods are implemented for classes Item_date_typecast, 
      Item_func_makedate, Item_time_typecast, Item_datetime_typecast. All these
      classes are derived from Item_str_func and Item_str_func::val_int() converts
      its string value to int without regard to the date/time type of these items.
      
      Arg_comparator::set_compare_func() and Arg_comparator::set_cmp_func()
      functions are changed to substitute result type of an item with the INT_RESULT
      if the item is a date/time item and another item is a constant. This is done
      to get a correct result of comparisons like date_time_function() = string_constant.
      
      
      mysql-test/r/cast.result:
        Fixed wrong test case result after bug fix#16377.
      sql/item_timefunc.h:
        Fixed bug#16377: result of DATE/TIME functions were compared as strings which
        can lead to a wrong result.
        The result_as_longlong() function is set to return TRUE for these classes:
        Item_date, Item_date_func, Item_func_curtime, Item_func_sec_to_time,
        Item_date_typecast, Item_time_typecast, Item_datetime_typecast,
        Item_func_makedate.
      sql/item_timefunc.cc:
        Fixed bug#16377: result of DATE/TIME functions were compared as strings which
        can lead to a wrong result.Correct val_int() methods are implemented for classes Item_date_typecast, 
        Item_func_makedate, Item_time_typecast, Item_datetime_typecast.
      sql/item_cmpfunc.h:
        Fixed bug#16377: result of DATE/TIME functions were compared as strings which
        can lead to a wrong result.
        Arg_comparator::set_compare_func() and Arg_comparator::set_cmp_func()
        functions are changed to substitute result type of an item with the INT_RESULT
        if the item is a date/time item and another item is a constant.
      sql/field.cc:
        Fixed bug#16377: result of DATE/TIME functions were compared as strings which
        can lead to a wrong result.
        Field::set_warning(), Field::set_datetime_warning() now use current_thd to get thd if table isn't set.
      sql/item_cmpfunc.cc:
        Fixed bug#16377: result of DATE/TIME functions were compared as strings which
        can lead to a wrong result.
        The agg_cmp_type() function now accepts THD as one of parameters. 
        In addition, it now checks if a date/time field/function is present in the
        list. If so, it tries to coerce all constants to INT to make date/time
        comparison return correct result. The field for the constant coercion is
        taken from the Item_field or constructed from the Item_func. In latter case
        the constructed field will be freed after conversion of all constant items.
        Otherwise the result is same as before - aggregated with help of the
        item_cmp_type() function.
      sql/item.h:
        The new function result_as_longlong() is added to the Item class. 
        It indicates that the item is a date/time item and result of it can be
        compared as int. Such items are date/time fields/functions.
      mysql-test/t/func_time.test:
        Added test case fot bug#16377: result of DATE/TIME functions were compared as strings which
        can lead to a wrong result.
      mysql-test/r/func_time.result:
        Added test case fot bug#16377: result of DATE/TIME functions were compared as strings which
        can lead to a wrong result.
      e3df0745
  2. 30 May, 2006 1 commit
  3. 29 May, 2006 1 commit
    • unknown's avatar
      Fixed bug#18360: Incorrect type coercion in IN() results in false comparison · a719dc38
      unknown authored
      The IN() function uses agg_cmp_type() to aggregate all types of its arguments
      to find out some common type for comparisons. In this particular case the 
      char() and the int was aggregated to double because char() can contain values
      like '1.5'. But all strings which do not start from a digit are converted to
      0. thus 'a' and 'z' become equal. 
      This behaviour is reasonable when all function arguments are constants. But 
      when there is a field or an expression this can lead to false comparisons. In
      this case it makes more sense to coerce constants to the type of the field
      argument.
      
      The agg_cmp_type() function now aggregates types of constant and non-constant
      items separately. If some non-constant items will be found then their
      aggregated type will be returned. Thus after the aggregation constants will be
      coerced to the aggregated type. 
      
      
      mysql-test/t/func_in.test:
        Added test case for bug#18360: Incorrect type coercion in IN() results in false comparison.
      mysql-test/r/func_in.result:
        Added test case for bug#18360: Incorrect type coercion in IN() results in false comparison.
      sql/item_cmpfunc.cc:
        Fixed bug#18360: Incorrect type coercion in IN() results in false comparison.
        The agg_cmp_type() function now aggregates types of constant and non-constant
        items separately. If some non-constant items will be found then their
        aggregated type will be returned. Thus after the aggregation constants will
        be coerced to the aggregated type.
      a719dc38
  4. 28 May, 2006 1 commit
    • unknown's avatar
      Fixed bug#19225: unchecked error results in server crash · ae331d61
      unknown authored
      In multi-table delete a table for delete can't be used for selecting in
      subselects. Appropriate error was raised but wasn't checked which leads to a
      crash at the execution phase.
      
      The mysql_execute_command() now checks for errors before executing select
      for multi-delete.
      
      
      mysql-test/t/multi_update.test:
        Added test case for bug#19225: unchecked error results in server crash
      mysql-test/r/multi_update.result:
        Added test case for bug#19225: unchecked error results in server crash
      sql/sql_parse.cc:
        Fixed bug#19225: unchecked error results in server crash
        The mysql_execute_command() now checks for errors before executing select for multi-delete.
      ae331d61
  5. 23 May, 2006 3 commits
  6. 22 May, 2006 1 commit
  7. 21 May, 2006 1 commit
  8. 20 May, 2006 2 commits
    • unknown's avatar
      Merge · 3d590258
      unknown authored
      
      support-files/mysql.spec.sh:
        SCCS merged
      3d590258
    • unknown's avatar
      mysql.spec.sh: · 16b027ee
      unknown authored
        Always compile position independent
      
      
      support-files/mysql.spec.sh:
        Always compile position independent
      16b027ee
  9. 19 May, 2006 4 commits
    • unknown's avatar
      Fix for bug #18536: mysqldump does not maintain table orders as per --tables option · 985f4684
      unknown authored
      
      client/mysqldump.c:
        Fix for bug #18536: mysqldump does not maintain table orders as per --tables option
          - use list to store table names instead of hash.
      mysql-test/r/mysqldump.result:
        Fix for bug #18536: mysqldump does not maintain table orders as per --tables option
          - test result.
      mysql-test/t/mysqldump.test:
        Fix for bug #18536: mysqldump does not maintain table orders as per --tables option
          - test case.
      985f4684
    • unknown's avatar
      Merge bk-internal:/home/bk/mysql-4.1 · 8fab0d7b
      unknown authored
      into  neptunus.(none):/home/msvensson/mysql/mysql-4.1
      
      8fab0d7b
    • unknown's avatar
      Merge neptunus.(none):/home/msvensson/mysql/my41-bug13711 · 5bf0b1aa
      unknown authored
      into  neptunus.(none):/home/msvensson/mysql/mysql-4.1
      
      5bf0b1aa
    • unknown's avatar
      Bug#15869 Cannot shutdown the server - it restarts · e4bafd2f
      unknown authored
       - A segfault occured when the function 'kill_server' called 
         'my_sigset' with signal number 0. 'my_sigset' is a macro which
         uses 'sigaction' to install the signal handler with an invalid
         signal number will on most platforms return EINVAL but yields
         a segfauilt on IRIX 6.5
       - The server crash was detected by mysqld_safe and it was restarted although
         a shutdown was requested. 
       - Semantics of kill_server(0) is not known, leaving it intact
      
      
      include/my_pthread.h:
        Check return value from sigaction with a DBUG_ASSERT
        Also DBUG_ASSERT if signal number 0 is passed
      sql/mysqld.cc:
        Don't call my_sigset if signo is 0
      e4bafd2f
  10. 17 May, 2006 2 commits
  11. 16 May, 2006 9 commits
  12. 15 May, 2006 5 commits
    • unknown's avatar
      ndb - bug#19537: arithmetic conversion Uint64 reg to Uint32 attr · eef1243b
      unknown authored
      
      ndb/test/ndbapi/Makefile.am:
        enable testInterpreter
      ndb/test/ndbapi/testInterpreter.cpp:
        add test case Bug19537
        the bug fix also fixed IncValue64 for whatever reason..
      ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp:
        bug#19537: write_attr: perform arithmetic conversion Uint64 to Uint32
      eef1243b
    • unknown's avatar
      Merge aivanov@bk-internal.mysql.com:/home/bk/mysql-4.1 · ab28d3a7
      unknown authored
      into  mysql.com:/home/alexi/innodb/mysql-4.1-ss29
      
      ab28d3a7
    • unknown's avatar
      Bug #16875 , correction of previous patch · 8dcc5fae
      unknown authored
      8dcc5fae
    • unknown's avatar
      Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail · 942fb3d1
      unknown authored
      - invalidate ndb dict cache on cluster disconnect (ClusterMgr.cpp)
      - add check for correct frm on external lock when table cache is found invalid
      
      
      ndb/include/ndbapi/ndb_cluster_connection.hpp:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      ndb/src/ndbapi/ClusterMgr.cpp:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      ndb/src/ndbapi/ClusterMgr.hpp:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      ndb/src/ndbapi/DictCache.cpp:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      ndb/src/ndbapi/DictCache.hpp:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      ndb/src/ndbapi/TransporterFacade.hpp:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      ndb/src/ndbapi/ndb_cluster_connection.cpp:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      ndb/src/ndbapi/ndb_cluster_connection_impl.hpp:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      sql/ha_ndbcluster.cc:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      mysql-test/r/ndb_autodiscover3.result:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      mysql-test/t/ndb_autodiscover3.test:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      942fb3d1
    • unknown's avatar
      Applied innodb-4.1-ss29 snapshot. · ef57730f
      unknown authored
       Fix BUG#19542 "InnoDB doesn't increase the Handler_read_prev counter.
       
      
      
      innobase/os/os0file.c:
        Applied innodb-4.1-ss29 snapshot.
         Check the page trailers also after writing to disk.
         This improves the chances of diagnosing Bug 18886.
         os_file_check_page_trailers(): New function for checking
         that two copies of the LSN stamped on the pages match.
         os_aio_simulated_handle(): Call os_file_check_page_trailers()
         before and after os_file_write().
      sql/ha_innodb.cc:
        Applied innodb-4.1-ss29 snapshot.
         Increment statistic counter in ha_innobase::index_prev().
      ef57730f
  13. 14 May, 2006 3 commits
  14. 13 May, 2006 1 commit
    • unknown's avatar
      BUG#14157: utf8 encoding in binlog without set character_set_client · 6f867c13
      unknown authored
      fixing a path to find charset by $MYSQL client. I believe the fix is done what should be
      by default. 
      
      
      mysql-test/t/mysqlbinlog.test:
        --character-sets-dir=../sql/share/charsets  is added otherwise client/.libs/lt-mysql
        searches in /usr/local/mysql ... A bug?
      mysql-test/t/rpl_temporary.test:
        --character-sets-dir=../sql/share/charsets/
      6f867c13
  15. 12 May, 2006 5 commits
    • unknown's avatar
      Merge mysql.com:/net/nb/home/elkin/MySQL/FIXES/4.1-bug19188_tmp_name · 301f748b
      unknown authored
      into  mysql.com:/usr_rh9/home/elkin.rh9/MySQL/Merge/4.1
      
      
      mysql-test/r/rpl_temporary.result:
        Auto merged
      mysql-test/t/rpl_temporary.test:
        Auto merged
      sql/sql_base.cc:
        Auto merged
      sql/mysql_priv.h:
        manual merge, a comment added
      301f748b
    • unknown's avatar
      Merge mysql.com:/usr_rh9/home/elkin.rh9/MySQL/FIXES/4.1-bug14157-utf8_binlog · e803167e
      unknown authored
      into  mysql.com:/usr_rh9/home/elkin.rh9/MySQL/Merge/4.1
      
      e803167e
    • unknown's avatar
      BUG#19188: incorrect temporary table name of DROP query in replication · 01e8c6c2
      unknown authored
        A pattern to generate binlog for DROPped temp table in close_temporary_tables
        was buggy: could not deal with a grave-accent-in-name table.
      
        The fix exploits `append_identifier()' for quoting and duplicating accents.
      
      
      mysql-test/r/rpl_temporary.result:
        results changed
      mysql-test/t/rpl_temporary.test:
        more correct internal table emulation; typo of @@session in bug#17263.
      sql/mysql_priv.h:
        bool is_user_table(TABLE * table) 
        is added to answer wheather temporary table was created explicitly.
      sql/sql_base.cc:
        Utilizing `append_identifier' to quote. `close_temporary_tables' once again recoded
        I hope to become much simplier than previously. No-binlog branch is separated completely the
        rest that adopts String's methods.
      01e8c6c2
    • unknown's avatar
      Many files: · e43e65f1
      unknown authored
        Change mode to -rw-rw-r--
      Ereport.pl, Ecreate.pl, Ecompare.pl:
        Change mode to -rwxrwxr--
      
      
      bdb/dist/s_dir:
        Change mode to -rw-rw-r--
      myisam/ftbench/Ecompare.pl:
        Change mode to -rwxrwxr--
      myisam/ftbench/Ecreate.pl:
        Change mode to -rwxrwxr--
      myisam/ftbench/Ereport.pl:
        Change mode to -rwxrwxr--
      myisam/ftbench/README:
        Change mode to -rw-rw-r--
      myisammrg/myrg_rnext_same.c:
        Change mode to -rw-rw-r--
      mysql-test/include/rpl_stmt_seq.inc:
        Change mode to -rw-rw-r--
      mysql-test/misc/kill_master.sh:
        Change mode to -rw-rw-r--
      mysql-test/r/blackhole.result:
        Change mode to -rw-rw-r--
      mysql-test/r/ctype_cp1250_ch.result:
        Change mode to -rw-rw-r--
      mysql-test/r/ctype_cp932_binlog.result:
        Change mode to -rw-rw-r--
      mysql-test/r/ctype_euckr.result:
        Change mode to -rw-rw-r--
      mysql-test/r/ctype_gb2312.result:
        Change mode to -rw-rw-r--
      mysql-test/r/ctype_ucs_binlog.result:
        Change mode to -rw-rw-r--
      mysql-test/r/fulltext2.result:
        Change mode to -rw-rw-r--
      mysql-test/r/func_des_encrypt.result:
        Change mode to -rw-rw-r--
      mysql-test/r/grant2.result:
        Change mode to -rw-rw-r--
      mysql-test/r/insert_update.result:
        Change mode to -rw-rw-r--
      mysql-test/r/ndb_database.result:
        Change mode to -rw-rw-r--
      mysql-test/r/ndb_update.result:
        Change mode to -rw-rw-r--
      mysql-test/r/not_embedded_server.result:
        Change mode to -rw-rw-r--
      mysql-test/r/query_cache_notembedded.result:
        Change mode to -rw-rw-r--
      mysql-test/r/rpl_create_database.result:
        Change mode to -rw-rw-r--
      mysql-test/r/rpl_drop_db.result:
        Change mode to -rw-rw-r--
      mysql-test/r/rpl_dual_pos_advance.result:
        Change mode to -rw-rw-r--
      mysql-test/r/rpl_insert_select.result:
        Change mode to -rw-rw-r--
      mysql-test/r/rpl_multi_update3.result:
        Change mode to -rw-rw-r--
      mysql-test/r/rpl_multi_update4.result:
        Change mode to -rw-rw-r--
      mysql-test/r/rpl_slave_status.result:
        Change mode to -rw-rw-r--
      mysql-test/r/rpl_trunc_temp.result:
        Change mode to -rw-rw-r--
      mysql-test/r/timezone_grant.result:
        Change mode to -rw-rw-r--
      mysql-test/std_data/master-bin.000001:
        Change mode to -rw-rw-r--
      mysql-test/t/ctype_latin1.test:
        Change mode to -rw-rw-r--
      mysql-test/t/fulltext2.test:
        Change mode to -rw-rw-r--
      mysql-test/t/gis-rtree.test:
        Change mode to -rw-rw-r--
      mysql-test/t/grant2.test:
        Change mode to -rw-rw-r--
      mysql-test/t/insert_update.test:
        Change mode to -rw-rw-r--
      mysql-test/t/mysqltest.test:
        Change mode to -rw-rw-r--
      mysql-test/t/rpl_ddl.test:
        Change mode to -rw-rw-r--
      mysql-test/t/rpl_insert_ignore.test:
        Change mode to -rw-rw-r--
      mysql-test/t/rpl_multi_query.test:
        Change mode to -rw-rw-r--
      mysql-test/t/rpl_rewrite_db-slave.opt:
        Change mode to -rw-rw-r--
      mysql-test/t/rpl_rewrite_db.test:
        Change mode to -rw-rw-r--
      mysql-test/t/subselect2.test:
        Change mode to -rw-rw-r--
      mysql-test/t/union-master.opt:
        Change mode to -rw-rw-r--
      mysys/mf_tempdir.c:
        Change mode to -rw-rw-r--
      mysys/my_crc32.c:
        Change mode to -rw-rw-r--
      mysys/my_gethwaddr.c:
        Change mode to -rw-rw-r--
      mysys/my_getsystime.c:
        Change mode to -rw-rw-r--
      scripts/mysql_prepare_privilege_tables_for_5.sql:
        Change mode to -rw-rw-r--
      sql/sql_bitmap.h:
        Change mode to -rw-rw-r--
      zlib/Makefile.am:
        Change mode to -rw-rw-r--
      e43e65f1
    • unknown's avatar
      Merge · f46bfc25
      unknown authored
      
      BitKeeper/deleted/.del-master-bin.001~8917149781db8413:
        Auto merged
      myisammrg/myrg_range.c:
        Auto merged
      mysql-test/r/innodb_handler.result:
        Auto merged
      mysql-test/r/repair.result:
        Auto merged
      mysql-test/std_data/trunc_binlog.000001:
        Auto merged
      mysql-test/t/bulk_replace.test:
        Auto merged
      mysql-test/t/create_select_tmp.test:
        Auto merged
      mysql-test/t/ctype_tis620.test:
        Auto merged
      mysql-test/t/handler.test:
        Auto merged
      mysql-test/t/innodb_handler.test:
        Auto merged
      mysql-test/t/repair.test:
        Auto merged
      mysql-test/t/rpl_commit_after_flush.test:
        Auto merged
      mysql-test/t/rpl_free_items.test:
        Auto merged
      sql/sql_handler.cc:
        Auto merged
      f46bfc25