Commit 38114e1c authored by unknown's avatar unknown
Browse files

Merge mysql.com:/home/jimw/my/mysql-4.1-6067

into mysql.com:/home/jimw/my/mysql-4.1-clean


sql/field.cc:
  Auto merged
parents affcdef0 6162c4a6
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -96,3 +96,11 @@ f2
19781126
19781126
DROP TABLE t1, t2, t3;
CREATE TABLE t1 (y YEAR);
INSERT INTO t1 VALUES ('abc');
Warnings:
Warning	1265	Data truncated for column 'y' at row 1
SELECT * FROM t1;
y
0000
DROP TABLE t1;
+7 −0
Original line number Diff line number Diff line
@@ -107,3 +107,10 @@ SELECT * FROM t2;
SELECT * FROM t3;

DROP TABLE t1, t2, t3;

# Test that setting YEAR to invalid string results in default value, not
# 2000. (Bug #6067)
CREATE TABLE t1 (y YEAR);
INSERT INTO t1 VALUES ('abc');
SELECT * FROM t1;
DROP TABLE t1;
+10 −2
Original line number Diff line number Diff line
@@ -3512,9 +3512,17 @@ void Field_time::sql_type(String &res) const

int Field_year::store(const char *from, uint len,CHARSET_INFO *cs)
{
  int not_used;				// We can ignore result from str2int
  int err;
  char *end;
  long nr= my_strntol(cs, from, len, 10, &end, &not_used);
  long nr= my_strntol(cs, from, len, 10, &end, &err);

  if (err)
  {
    if (table->in_use->count_cuted_fields)
      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
    *ptr= 0;
    return 0;
  }

  if (nr < 0 || nr >= 100 && nr <= 1900 || nr > 2155)
  {