Commit 52baee63 authored by dlenev@mysql.com's avatar dlenev@mysql.com

Merge bk-internal.mysql.com:/home/bk/mysql-4.1

into mysql.com:/home/dlenev/src/mysql-4.1-dtbug
parents 78756fe7 23c9e0a7
...@@ -97,13 +97,16 @@ timediff("1997-12-31 23:59:59.000001","1997-12-30 01:01:01.000002") ...@@ -97,13 +97,16 @@ timediff("1997-12-31 23:59:59.000001","1997-12-30 01:01:01.000002")
46:58:57.999999 46:58:57.999999
select timediff("1997-12-30 23:59:59.000001","1997-12-31 23:59:59.000002"); select timediff("1997-12-30 23:59:59.000001","1997-12-31 23:59:59.000002");
timediff("1997-12-30 23:59:59.000001","1997-12-31 23:59:59.000002") timediff("1997-12-30 23:59:59.000001","1997-12-31 23:59:59.000002")
-23:59:59.999999 -24:00:00.000001
select timediff("1997-12-31 23:59:59.000001","23:59:59.000001"); select timediff("1997-12-31 23:59:59.000001","23:59:59.000001");
timediff("1997-12-31 23:59:59.000001","23:59:59.000001") timediff("1997-12-31 23:59:59.000001","23:59:59.000001")
NULL NULL
select timediff("2000:01:01 00:00:00", "2000:01:01 00:00:00.000001"); select timediff("2000:01:01 00:00:00", "2000:01:01 00:00:00.000001");
timediff("2000:01:01 00:00:00", "2000:01:01 00:00:00.000001") timediff("2000:01:01 00:00:00", "2000:01:01 00:00:00.000001")
-00:00:00.000001 -00:00:00.000001
select timediff("2005-01-11 15:48:49.999999", "2005-01-11 15:48:50");
timediff("2005-01-11 15:48:49.999999", "2005-01-11 15:48:50")
-00:00:00.000001
select maketime(10,11,12); select maketime(10,11,12);
maketime(10,11,12) maketime(10,11,12)
10:11:12 10:11:12
...@@ -175,7 +178,7 @@ f8 date YES NULL ...@@ -175,7 +178,7 @@ f8 date YES NULL
f9 time YES NULL f9 time YES NULL
select * from t1; select * from t1;
f1 f2 f3 f4 f5 f6 f7 f8 f9 f1 f2 f3 f4 f5 f6 f7 f8 f9
1997-01-01 1998-01-02 01:01:00 49:01:01 46:58:57 -23:59:59 10:11:12 2001-12-01 01:01:01 1997-12-31 23:59:59 1997-01-01 1998-01-02 01:01:00 49:01:01 46:58:57 -24:00:00 10:11:12 2001-12-01 01:01:01 1997-12-31 23:59:59
create table test(t1 datetime, t2 time, t3 time, t4 datetime); create table test(t1 datetime, t2 time, t3 time, t4 datetime);
insert into test values insert into test values
('2001-01-01 01:01:01', '01:01:01', null, '2001-02-01 01:01:01'), ('2001-01-01 01:01:01', '01:01:01', null, '2001-02-01 01:01:01'),
......
...@@ -422,3 +422,13 @@ max(t) ...@@ -422,3 +422,13 @@ max(t)
2004-01-01 01:00:00 2004-01-01 01:00:00
2004-02-01 00:00:00 2004-02-01 00:00:00
drop table t1; drop table t1;
set sql_mode='maxdb';
create table t1 (a timestamp, b timestamp(19));
show create table t1;
Table Create Table
t1 CREATE TABLE "t1" (
"a" datetime default NULL,
"b" datetime default NULL
)
set sql_mode='';
drop table t1;
...@@ -54,6 +54,7 @@ select timediff("1997-12-31 23:59:59.000001","1997-12-30 01:01:01.000002"); ...@@ -54,6 +54,7 @@ select timediff("1997-12-31 23:59:59.000001","1997-12-30 01:01:01.000002");
select timediff("1997-12-30 23:59:59.000001","1997-12-31 23:59:59.000002"); select timediff("1997-12-30 23:59:59.000001","1997-12-31 23:59:59.000002");
select timediff("1997-12-31 23:59:59.000001","23:59:59.000001"); select timediff("1997-12-31 23:59:59.000001","23:59:59.000001");
select timediff("2000:01:01 00:00:00", "2000:01:01 00:00:00.000001"); select timediff("2000:01:01 00:00:00", "2000:01:01 00:00:00.000001");
select timediff("2005-01-11 15:48:49.999999", "2005-01-11 15:48:50");
--enable_ps_protocol --enable_ps_protocol
select maketime(10,11,12); select maketime(10,11,12);
......
...@@ -286,3 +286,15 @@ insert into t1 values ('a', '2004-01-01 00:00:00'), ('a', '2004-01-01 01:00:00') ...@@ -286,3 +286,15 @@ insert into t1 values ('a', '2004-01-01 00:00:00'), ('a', '2004-01-01 01:00:00')
('b', '2004-02-01 00:00:00'); ('b', '2004-02-01 00:00:00');
select max(t) from t1 group by a; select max(t) from t1 group by a;
drop table t1; drop table t1;
#
# Test for bug #7418 "TIMESTAMP not always converted to DATETIME in MAXDB
# mode". TIMESTAMP columns should be converted DATETIME columns in MAXDB
# mode regardless of whether a display width is given.
#
set sql_mode='maxdb';
create table t1 (a timestamp, b timestamp(19));
show create table t1;
# restore default mode
set sql_mode='';
drop table t1;
...@@ -2432,8 +2432,7 @@ void Item_func_add_time::print(String *str) ...@@ -2432,8 +2432,7 @@ void Item_func_add_time::print(String *str)
String *Item_func_timediff::val_str(String *str) String *Item_func_timediff::val_str(String *str)
{ {
DBUG_ASSERT(fixed == 1); DBUG_ASSERT(fixed == 1);
longlong seconds; longlong microseconds;
long microseconds;
long days; long days;
int l_sign= 1; int l_sign= 1;
TIME l_time1 ,l_time2, l_time3; TIME l_time1 ,l_time2, l_time3;
...@@ -2457,32 +2456,23 @@ String *Item_func_timediff::val_str(String *str) ...@@ -2457,32 +2456,23 @@ String *Item_func_timediff::val_str(String *str)
(uint) l_time2.month, (uint) l_time2.month,
(uint) l_time2.day)); (uint) l_time2.day));
microseconds= l_time1.second_part - l_sign*l_time2.second_part; microseconds= ((longlong)days*86400L +
seconds= ((longlong) days*86400L + l_time1.hour*3600L + l_time1.hour*3600L + l_time1.minute*60L + l_time1.second -
l_time1.minute*60L + l_time1.second + microseconds/1000000L - (longlong)l_sign*(l_time2.hour*3600L + l_time2.minute*60L +
(longlong)l_sign*(l_time2.hour*3600L+l_time2.minute*60L+ l_time2.second))*1000000 +
l_time2.second)); l_time1.second_part - l_sign*l_time2.second_part;
l_time3.neg= 0; l_time3.neg= 0;
if (seconds < 0) if (microseconds < 0)
{
seconds= -seconds;
l_time3.neg= 1;
}
else if (seconds == 0 && microseconds < 0)
{ {
microseconds= -microseconds; microseconds= -microseconds;
l_time3.neg= 1; l_time3.neg= 1;
} }
if (microseconds < 0) if ((l_time2.neg == l_time1.neg) && l_time1.neg && microseconds)
{
microseconds+= 1000000L;
seconds--;
}
if ((l_time2.neg == l_time1.neg) && l_time1.neg)
l_time3.neg= l_time3.neg ? 0 : 1; l_time3.neg= l_time3.neg ? 0 : 1;
calc_time_from_sec(&l_time3, (long) seconds, microseconds); calc_time_from_sec(&l_time3, (long)(microseconds/1000000),
(long)(microseconds%1000000));
if (!make_datetime(l_time1.second_part || l_time2.second_part ? if (!make_datetime(l_time1.second_part || l_time2.second_part ?
TIME_MICROSECOND : TIME_ONLY, TIME_MICROSECOND : TIME_ONLY,
......
...@@ -1415,7 +1415,7 @@ type: ...@@ -1415,7 +1415,7 @@ type:
| YEAR_SYM opt_len field_options { $$=FIELD_TYPE_YEAR; } | YEAR_SYM opt_len field_options { $$=FIELD_TYPE_YEAR; }
| DATE_SYM { $$=FIELD_TYPE_DATE; } | DATE_SYM { $$=FIELD_TYPE_DATE; }
| TIME_SYM { $$=FIELD_TYPE_TIME; } | TIME_SYM { $$=FIELD_TYPE_TIME; }
| TIMESTAMP | TIMESTAMP opt_len
{ {
if (YYTHD->variables.sql_mode & MODE_MAXDB) if (YYTHD->variables.sql_mode & MODE_MAXDB)
$$=FIELD_TYPE_DATETIME; $$=FIELD_TYPE_DATETIME;
...@@ -1428,13 +1428,6 @@ type: ...@@ -1428,13 +1428,6 @@ type:
$$=FIELD_TYPE_TIMESTAMP; $$=FIELD_TYPE_TIMESTAMP;
} }
} }
| TIMESTAMP '(' NUM ')'
{
LEX *lex= Lex;
lex->length= $3.str;
lex->type|= NOT_NULL_FLAG;
$$= FIELD_TYPE_TIMESTAMP;
}
| DATETIME { $$=FIELD_TYPE_DATETIME; } | DATETIME { $$=FIELD_TYPE_DATETIME; }
| TINYBLOB { Lex->charset=&my_charset_bin; | TINYBLOB { Lex->charset=&my_charset_bin;
$$=FIELD_TYPE_TINY_BLOB; } $$=FIELD_TYPE_TINY_BLOB; }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment