• unknown's avatar
    Backport of TIME->MYSQL_TIME / Y2K fixset · 509fc656
    unknown authored
       
    Made year 2000 handling more uniform
    Removed year 2000 handling out from calc_days()
    The above removes some bugs in date/datetimes with year between 0 and 200
    Now we get a note when we insert a datetime value into a date column
    For default values to CREATE, don't give errors for warning level NOTE
    Fixed some compiler failures
    Added library ws2_32 for windows compilation (needed if we want to compile with IOCP support)
    Removed duplicate typedef TIME and replaced it with MYSQL_TIME
    
    Better (more complete) fix for: Bug#21103 "DATE column not compared as DATE"
    Fixed properly Bug#18997 "DATE_ADD and DATE_SUB perform year2K autoconversion magic on 4-digit year value"
    Fixed Bug#23093 "Implicit conversion of 9912101 to date does not match cast(9912101 as date)"
     
    
    
    include/my_time.h:
      Removed not used define YY_MAGIC_BELOW
      Added prototype for year_2000_handling()
    mysql-test/r/date_formats.result:
      Updated results (fixed bug in date_format() with year < 99
    mysql-test/r/func_sapdb.result:
      Added more testing of make_date()
    mysql-test/r/ps_2myisam.result:
      Now we get a note when we insert a datetime value into a date column
    mysql-test/r/ps_3innodb.result:
      Now we get a note when we insert a datetime value into a date column
    mysql-test/r/ps_4heap.result:
      Now we get a note when we insert a datetime value into a date column
    mysql-test/r/ps_5merge.result:
      Now we get a note when we insert a datetime value into a date column
    mysql-test/r/ps_7ndb.result:
      Now we get a note when we insert a datetime value into a date column
    mysql-test/r/strict.result:
      zero-year in str_to_date() throws warning in strict
    mysql-test/r/type_date.result:
      Added test for date conversions
    mysql-test/r/type_datetime.result:
      Added testcase for datetime to date conversion.
    mysql-test/t/date_formats.test:
      Added testing of dates < 200
    mysql-test/t/func_sapdb.test:
      More testing of makedate()
    mysql-test/t/type_date.test:
      Added test for date conversions
    mysql-test/t/type_datetime.test:
      Added testcase for datetime to date conversion
    sql/field.cc:
      Give note if we insert a datetime value in a date field
      Don't give notes if we are doing internal test conversions (like from convert_constant_item())
      More documentation (store functions can now return '3' to inform that the function did return a NOTE (not warning or error))
      Revert some changes in Field_newdate::store() to get more optimal code
      Field::set_warning() will now ignore notes if CHECK_FIELD_IGNORE is set.
      New parameters to make_truncated_value_warning()
    sql/field.h:
      Give note if we insert a datetime value in a date field
      Don't give notes if we are doing internal test conversions (like from convert_constant_item())
      More documentation (store functions can now return '3' to inform that the function did return a NOTE (not warning or error))
      Revert some changes in Field_newdate::store() to get more optimal code
      Field::set_warning() will now ignore notes if CHECK_FIELD_IGNORE is set.
      New parameters to make_truncated_value_warning()
    sql/item.cc:
      Give note if we insert a datetime value in a date field
      Don't give notes if we are doing internal test conversions (like from convert_constant_item())
      More documentation (store functions can now return '3' to inform that the function did return a NOTE (not warning or error))
      Revert some changes in Field_newdate::store() to get more optimal code
      Field::set_warning() will now ignore notes if CHECK_FIELD_IGNORE is set.
      New parameters to make_truncated_value_warning()
    sql/item.h:
      TIME -> MYSQL_TIME
    sql/item_cmpfunc.cc:
      Don't print notes in convert_constant_item()
    sql/item_func.h:
      TIME -> MYSQL_TIME
    sql/item_timefunc.cc:
      New parameters to make_truncated_value_warning()
      Moved year 2000 handling out from calc_days()
    sql/item_timefunc.h:
      TIME -> MYSQL_TIME
    sql/my_decimal.cc:
      TIME -> MYSQL_TIME
    sql/my_decimal.h:
      TIME -> MYSQL_TIME
    sql/mysql_priv.h:
      Added error level to make_truncated_value_warning()
    sql/protocol.cc:
      TIME -> MYSQL_TIME
    sql/protocol.h:
      TIME -> MYSQL_TIME
    sql/sp.cc:
      TIME -> MYSQL_TIME
    sql/sql_base.cc:
      Make testing of result value of save_in_field() uniform
    sql/sql_class.h:
      TIME -> MYSQL_TIME
    sql/sql_show.cc:
      TIME -> MYSQL_TIME
    sql/structs.h:
      TIME -> MYSQL_TIME
    sql/time.cc:
      Added error level to make_truncated_value_warning()
    sql/tztime.cc:
      TIME -> MYSQL_TIME
    sql/tztime.h:
      TIME -> MYSQL_TIME
    sql/unireg.cc:
      For default values to CREATE, don't give errors for warning level NOTE
      (Fixed failed CREATE when we give a datetime value to a date field)
    sql-common/my_time.c:
      Added year_2000_handling()
      Removed year 2000 handling from calc_daynr()
    509fc656
sql_base.cc 181 KB