Commit 3e90d418 authored by unknown's avatar unknown

Merge mysql.com:/misc/mysql/31990/50-31990

into  mysql.com:/misc/mysql/31990/51-31990


mysql-test/r/cast.result:
  Auto merged
mysql-test/t/cast.test:
  Auto merged
sql/item_timefunc.cc:
  Auto merged
sql/item_timefunc.h:
  Auto merged
parents f97b8e48 b1fc4b9e
...@@ -414,4 +414,28 @@ NULL ...@@ -414,4 +414,28 @@ NULL
NULL NULL
20070719 20070719
drop table t1; drop table t1;
CREATE TABLE t1 (f1 DATE);
INSERT INTO t1 VALUES ('2007-07-19'), (NULL);
SELECT HOUR(f1),
MINUTE(f1),
SECOND(f1) FROM t1;
HOUR(f1) MINUTE(f1) SECOND(f1)
0 0 0
NULL NULL NULL
SELECT HOUR(CAST('2007-07-19' AS DATE)),
MINUTE(CAST('2007-07-19' AS DATE)),
SECOND(CAST('2007-07-19' AS DATE));
HOUR(CAST('2007-07-19' AS DATE)) MINUTE(CAST('2007-07-19' AS DATE)) SECOND(CAST('2007-07-19' AS DATE))
0 0 0
SELECT HOUR(CAST(NULL AS DATE)),
MINUTE(CAST(NULL AS DATE)),
SECOND(CAST(NULL AS DATE));
HOUR(CAST(NULL AS DATE)) MINUTE(CAST(NULL AS DATE)) SECOND(CAST(NULL AS DATE))
NULL NULL NULL
SELECT HOUR(NULL),
MINUTE(NULL),
SECOND(NULL);
HOUR(NULL) MINUTE(NULL) SECOND(NULL)
NULL NULL NULL
DROP TABLE t1;
End of 5.0 tests End of 5.0 tests
...@@ -246,4 +246,26 @@ INSERT INTO t1(d1) VALUES ('2007-07-19 08:30:00'), (NULL), ...@@ -246,4 +246,26 @@ INSERT INTO t1(d1) VALUES ('2007-07-19 08:30:00'), (NULL),
SELECT cast(date(d1) as signed) FROM t1; SELECT cast(date(d1) as signed) FROM t1;
drop table t1; drop table t1;
#
# Bug #31990: MINUTE() and SECOND() return bogus results when used on a DATE
#
# Show that HH:MM:SS of a DATE are 0, and that it's the same for columns
# and typecasts (NULL in, NULL out).
CREATE TABLE t1 (f1 DATE);
INSERT INTO t1 VALUES ('2007-07-19'), (NULL);
SELECT HOUR(f1),
MINUTE(f1),
SECOND(f1) FROM t1;
SELECT HOUR(CAST('2007-07-19' AS DATE)),
MINUTE(CAST('2007-07-19' AS DATE)),
SECOND(CAST('2007-07-19' AS DATE));
SELECT HOUR(CAST(NULL AS DATE)),
MINUTE(CAST(NULL AS DATE)),
SECOND(CAST(NULL AS DATE));
SELECT HOUR(NULL),
MINUTE(NULL),
SECOND(NULL);
DROP TABLE t1;
--echo End of 5.0 tests --echo End of 5.0 tests
...@@ -2586,6 +2586,13 @@ bool Item_date_typecast::get_date(MYSQL_TIME *ltime, uint fuzzy_date) ...@@ -2586,6 +2586,13 @@ bool Item_date_typecast::get_date(MYSQL_TIME *ltime, uint fuzzy_date)
} }
bool Item_date_typecast::get_time(MYSQL_TIME *ltime)
{
bzero((char *)ltime, sizeof(MYSQL_TIME));
return args[0]->null_value;
}
String *Item_date_typecast::val_str(String *str) String *Item_date_typecast::val_str(String *str)
{ {
DBUG_ASSERT(fixed == 1); DBUG_ASSERT(fixed == 1);
......
...@@ -778,6 +778,7 @@ class Item_date_typecast :public Item_typecast_maybe_null ...@@ -778,6 +778,7 @@ class Item_date_typecast :public Item_typecast_maybe_null
const char *func_name() const { return "cast_as_date"; } const char *func_name() const { return "cast_as_date"; }
String *val_str(String *str); String *val_str(String *str);
bool get_date(MYSQL_TIME *ltime, uint fuzzy_date); bool get_date(MYSQL_TIME *ltime, uint fuzzy_date);
bool get_time(MYSQL_TIME *ltime);
const char *cast_type() const { return "date"; } const char *cast_type() const { return "date"; }
enum_field_types field_type() const { return MYSQL_TYPE_DATE; } enum_field_types field_type() const { return MYSQL_TYPE_DATE; }
Field *tmp_table_field(TABLE *table) Field *tmp_table_field(TABLE *table)
......
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