• unknown's avatar
    Fix for bug #6266 "Invalid DATETIME value is not handled properly". · 5d9f7edd
    unknown authored
    In server we assume that datetime values stored in MYSQL_TIME struct
    are normalized (and year is not greater than 9999), so we should 
    perform range checks in all places then we convert something to
    MYSQL_TIME. 
    
    
    include/my_time.h:
      Added one more argument to set_zero_time() function to make it more 
      convinient.
      Added comment clarifying why MAX_DATE_STRING_REP_LENGTH value is 30.
    include/mysql_time.h:
      Documented MySQL's internal assumptions for members of MYSQL_TIME
      structure.
    libmysql/libmysql.c:
      It does not make sense to set MYSQL_TIME::time_type twice in case of 
      errors.
    mysql-test/r/type_datetime.result:
      Added test for bug #6266 "Invalid DATETIME value not handled properly".
    mysql-test/t/type_datetime.test:
      Added test for bug #6266 "Invalid DATETIME value not handled properly".
    sql-common/my_time.c:
      str_to_datetime(): Added missing check for too big year values.
      set_zero_time(): added time_type argument, since MYSQL_TIMESTAMP_NONE
        is not the value that we want in most cases.
    sql/field.cc:
      Field_datetime::store_time():
        clarified why we don't perform any range checks here.
    sql/item.cc:
      Item_param::set_time():
       Added comment describing this method and range checking for TIME
       values.
    sql/sql_prepare.cc:
      Removed comments about range checking for TIME values in prepared 
      statements, which are no longer true.
      set_zero_time() has one more argument now.
    tests/client_test.c:
      Added test for bug #6266 "Invalid DATETIME value not handled properly"
    5d9f7edd
mysql_time.h 2.13 KB