From 23006f9b54247c9a99892e0e7d12aa034b69488d Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 17 May 2006 17:00:30 +0500 Subject: [PATCH] Fix for #16327: invalid TIMESTAMP values retrieved mysql-test/r/func_time.result: Fix for #16327: invalid TIMESTAMP values retrieved - test result mysql-test/t/func_time.test: Fix for #16327: invalid TIMESTAMP values retrieved - test case sql/field.cc: Fix for #16327: invalid TIMESTAMP values retrieved - let 1969 as well --- mysql-test/r/func_time.result | 7 +++++++ mysql-test/t/func_time.test | 10 ++++++++++ sql/field.cc | 2 +- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/func_time.result b/mysql-test/r/func_time.result index 02f3d2f7273..6f35285c945 100644 --- a/mysql-test/r/func_time.result +++ b/mysql-test/r/func_time.result @@ -630,3 +630,10 @@ select monthname(str_to_date(null, '%m')), monthname(str_to_date(null, '%m')), monthname(str_to_date(1, '%m')), monthname(str_to_date(0, '%m')); monthname(str_to_date(null, '%m')) monthname(str_to_date(null, '%m')) monthname(str_to_date(1, '%m')) monthname(str_to_date(0, '%m')) NULL NULL January NULL +set time_zone='-6:00'; +create table t1(a timestamp); +insert into t1 values (19691231190001); +select * from t1; +a +1969-12-31 19:00:01 +drop table t1; diff --git a/mysql-test/t/func_time.test b/mysql-test/t/func_time.test index 01e4e47d318..e4bb9248bd9 100644 --- a/mysql-test/t/func_time.test +++ b/mysql-test/t/func_time.test @@ -322,4 +322,14 @@ select last_day('2005-01-00'); select monthname(str_to_date(null, '%m')), monthname(str_to_date(null, '%m')), monthname(str_to_date(1, '%m')), monthname(str_to_date(0, '%m')); +# +# Bug #16327: problem with timestamp < 1970 +# + +set time_zone='-6:00'; +create table t1(a timestamp); +insert into t1 values (19691231190001); +select * from t1; +drop table t1; + # End of 4.1 tests diff --git a/sql/field.cc b/sql/field.cc index a64eaad7308..e018f4122cf 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -3809,7 +3809,7 @@ String *Field_timestamp::val_str(String *val_buffer, String *val_ptr) thd->time_zone_used= 1; temp= time_tmp.year % 100; - if (temp < YY_PART_YEAR) + if (temp < YY_PART_YEAR - 1) { *to++= '2'; *to++= '0';