Commit ac5492c2 authored by unknown's avatar unknown

Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.1-maint

into  mysql.com:/home/tnurnberg/21103/51-21103


sql/field.cc:
  Auto merged
parents 6a880e94 52c7213e
...@@ -1152,19 +1152,19 @@ select '-- select .. where date/time column = .. --' as test_sequence ; ...@@ -1152,19 +1152,19 @@ select '-- select .. where date/time column = .. --' as test_sequence ;
######## SELECT .. WHERE column(date/time/..)=value(CHAR(n)/LONGTEXT) ######## ######## SELECT .. WHERE column(date/time/..)=value(CHAR(n)/LONGTEXT) ########
set @arg00= '1991-01-01 01:01:01' ; set @arg00= '1991-01-01 01:01:01' ;
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= '1991-01-01 01:01:01' and c14= '1991-01-01 01:01:01' and where c1= 20 and c13= CAST('1991-01-01 01:01:01' AS DATE) and c14= '1991-01-01 01:01:01' and
c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and
c17= '1991-01-01 01:01:01' ; c17= '1991-01-01 01:01:01' ;
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= @arg00 and c14= @arg00 and c15= @arg00 and c16= @arg00 where c1= 20 and c13= CAST(@arg00 AS DATE) and c14= @arg00 and c15= @arg00 and c16= @arg00
and c17= @arg00 ; and c17= @arg00 ;
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= '1991-01-01 01:01:01' and c14= '1991-01-01 01:01:01' and where c1= 20 and c13= CAST('1991-01-01 01:01:01' AS DATE) and c14= '1991-01-01 01:01:01' and
c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and
c17= '1991-01-01 01:01:01'" ; c17= '1991-01-01 01:01:01'" ;
execute stmt1 ; execute stmt1 ;
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= ? and c14= ? and c15= ? and c16= ? and c17= ?" ; where c1= 20 and c13= CAST(? AS DATE) and c14= ? and c15= ? and c16= ? and c17= ?" ;
execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ; execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ;
...@@ -1177,7 +1177,7 @@ where c1= 20 and c13= CAST('1991-01-01 01:01:01' as datetime) and ...@@ -1177,7 +1177,7 @@ where c1= 20 and c13= CAST('1991-01-01 01:01:01' as datetime) and
c16= CAST('1991-01-01 01:01:01' as datetime) and c16= CAST('1991-01-01 01:01:01' as datetime) and
c17= CAST('1991-01-01 01:01:01' as datetime) ; c17= CAST('1991-01-01 01:01:01' as datetime) ;
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= @arg00 and c14= @arg00 and c15= @arg00 and c16= @arg00 where c1= 20 and c13= CAST(@arg00 AS DATE) and c14= @arg00 and c15= @arg00 and c16= @arg00
and c17= @arg00 ; and c17= @arg00 ;
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= CAST('1991-01-01 01:01:01' as datetime) and where c1= 20 and c13= CAST('1991-01-01 01:01:01' as datetime) and
...@@ -1187,7 +1187,7 @@ where c1= 20 and c13= CAST('1991-01-01 01:01:01' as datetime) and ...@@ -1187,7 +1187,7 @@ where c1= 20 and c13= CAST('1991-01-01 01:01:01' as datetime) and
c17= CAST('1991-01-01 01:01:01' as datetime)" ; c17= CAST('1991-01-01 01:01:01' as datetime)" ;
execute stmt1 ; execute stmt1 ;
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= ? and c14= ? and c15= ? and c16= ? and c17= ?" ; where c1= 20 and c13= CAST(? AS DATE) and c14= ? and c15= ? and c16= ? and c17= ?" ;
execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ; execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ;
......
...@@ -1183,6 +1183,23 @@ set time_zone= @@global.time_zone; ...@@ -1183,6 +1183,23 @@ set time_zone= @@global.time_zone;
select str_to_date('10:00 PM', '%h:%i %p') + INTERVAL 10 MINUTE; select str_to_date('10:00 PM', '%h:%i %p') + INTERVAL 10 MINUTE;
str_to_date('10:00 PM', '%h:%i %p') + INTERVAL 10 MINUTE str_to_date('10:00 PM', '%h:%i %p') + INTERVAL 10 MINUTE
NULL NULL
create table t1 (field DATE);
insert into t1 values ('2006-11-06');
select * from t1 where field < '2006-11-06 04:08:36.0';
field
2006-11-06
select * from t1 where field = '2006-11-06 04:08:36.0';
field
select * from t1 where field = '2006-11-06';
field
2006-11-06
select * from t1 where CAST(field as DATETIME) < '2006-11-06 04:08:36.0';
field
2006-11-06
select * from t1 where CAST(field as DATE) < '2006-11-06 04:08:36.0';
field
2006-11-06
drop table t1;
CREATE TABLE t1 (a int, t1 time, t2 time, d date, PRIMARY KEY (a)); CREATE TABLE t1 (a int, t1 time, t2 time, d date, PRIMARY KEY (a));
INSERT INTO t1 VALUES (1, '10:00:00', NULL, NULL), INSERT INTO t1 VALUES (1, '10:00:00', NULL, NULL),
(2, '11:00:00', '11:15:00', '1972-02-06'); (2, '11:00:00', '11:15:00', '1972-02-06');
......
...@@ -3046,25 +3046,25 @@ test_sequence ...@@ -3046,25 +3046,25 @@ test_sequence
-- select .. where date/time column = .. -- -- select .. where date/time column = .. --
set @arg00= '1991-01-01 01:01:01' ; set @arg00= '1991-01-01 01:01:01' ;
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= '1991-01-01 01:01:01' and c14= '1991-01-01 01:01:01' and where c1= 20 and c13= CAST('1991-01-01 01:01:01' AS DATE) and c14= '1991-01-01 01:01:01' and
c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and
c17= '1991-01-01 01:01:01' ; c17= '1991-01-01 01:01:01' ;
found found
true true
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= @arg00 and c14= @arg00 and c15= @arg00 and c16= @arg00 where c1= 20 and c13= CAST(@arg00 AS DATE) and c14= @arg00 and c15= @arg00 and c16= @arg00
and c17= @arg00 ; and c17= @arg00 ;
found found
true true
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= '1991-01-01 01:01:01' and c14= '1991-01-01 01:01:01' and where c1= 20 and c13= CAST('1991-01-01 01:01:01' AS DATE) and c14= '1991-01-01 01:01:01' and
c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and
c17= '1991-01-01 01:01:01'" ; c17= '1991-01-01 01:01:01'" ;
execute stmt1 ; execute stmt1 ;
found found
true true
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= ? and c14= ? and c15= ? and c16= ? and c17= ?" ; where c1= 20 and c13= CAST(? AS DATE) and c14= ? and c15= ? and c16= ? and c17= ?" ;
execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ; execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ;
found found
true true
...@@ -3078,7 +3078,7 @@ c17= CAST('1991-01-01 01:01:01' as datetime) ; ...@@ -3078,7 +3078,7 @@ c17= CAST('1991-01-01 01:01:01' as datetime) ;
found found
true true
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= @arg00 and c14= @arg00 and c15= @arg00 and c16= @arg00 where c1= 20 and c13= CAST(@arg00 AS DATE) and c14= @arg00 and c15= @arg00 and c16= @arg00
and c17= @arg00 ; and c17= @arg00 ;
found found
true true
...@@ -3092,7 +3092,7 @@ execute stmt1 ; ...@@ -3092,7 +3092,7 @@ execute stmt1 ;
found found
true true
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= ? and c14= ? and c15= ? and c16= ? and c17= ?" ; where c1= 20 and c13= CAST(? AS DATE) and c14= ? and c15= ? and c16= ? and c17= ?" ;
execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ; execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ;
found found
true true
......
...@@ -3029,25 +3029,25 @@ test_sequence ...@@ -3029,25 +3029,25 @@ test_sequence
-- select .. where date/time column = .. -- -- select .. where date/time column = .. --
set @arg00= '1991-01-01 01:01:01' ; set @arg00= '1991-01-01 01:01:01' ;
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= '1991-01-01 01:01:01' and c14= '1991-01-01 01:01:01' and where c1= 20 and c13= CAST('1991-01-01 01:01:01' AS DATE) and c14= '1991-01-01 01:01:01' and
c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and
c17= '1991-01-01 01:01:01' ; c17= '1991-01-01 01:01:01' ;
found found
true true
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= @arg00 and c14= @arg00 and c15= @arg00 and c16= @arg00 where c1= 20 and c13= CAST(@arg00 AS DATE) and c14= @arg00 and c15= @arg00 and c16= @arg00
and c17= @arg00 ; and c17= @arg00 ;
found found
true true
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= '1991-01-01 01:01:01' and c14= '1991-01-01 01:01:01' and where c1= 20 and c13= CAST('1991-01-01 01:01:01' AS DATE) and c14= '1991-01-01 01:01:01' and
c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and
c17= '1991-01-01 01:01:01'" ; c17= '1991-01-01 01:01:01'" ;
execute stmt1 ; execute stmt1 ;
found found
true true
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= ? and c14= ? and c15= ? and c16= ? and c17= ?" ; where c1= 20 and c13= CAST(? AS DATE) and c14= ? and c15= ? and c16= ? and c17= ?" ;
execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ; execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ;
found found
true true
...@@ -3061,7 +3061,7 @@ c17= CAST('1991-01-01 01:01:01' as datetime) ; ...@@ -3061,7 +3061,7 @@ c17= CAST('1991-01-01 01:01:01' as datetime) ;
found found
true true
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= @arg00 and c14= @arg00 and c15= @arg00 and c16= @arg00 where c1= 20 and c13= CAST(@arg00 AS DATE) and c14= @arg00 and c15= @arg00 and c16= @arg00
and c17= @arg00 ; and c17= @arg00 ;
found found
true true
...@@ -3075,7 +3075,7 @@ execute stmt1 ; ...@@ -3075,7 +3075,7 @@ execute stmt1 ;
found found
true true
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= ? and c14= ? and c15= ? and c16= ? and c17= ?" ; where c1= 20 and c13= CAST(? AS DATE) and c14= ? and c15= ? and c16= ? and c17= ?" ;
execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ; execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ;
found found
true true
......
...@@ -3030,25 +3030,25 @@ test_sequence ...@@ -3030,25 +3030,25 @@ test_sequence
-- select .. where date/time column = .. -- -- select .. where date/time column = .. --
set @arg00= '1991-01-01 01:01:01' ; set @arg00= '1991-01-01 01:01:01' ;
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= '1991-01-01 01:01:01' and c14= '1991-01-01 01:01:01' and where c1= 20 and c13= CAST('1991-01-01 01:01:01' AS DATE) and c14= '1991-01-01 01:01:01' and
c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and
c17= '1991-01-01 01:01:01' ; c17= '1991-01-01 01:01:01' ;
found found
true true
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= @arg00 and c14= @arg00 and c15= @arg00 and c16= @arg00 where c1= 20 and c13= CAST(@arg00 AS DATE) and c14= @arg00 and c15= @arg00 and c16= @arg00
and c17= @arg00 ; and c17= @arg00 ;
found found
true true
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= '1991-01-01 01:01:01' and c14= '1991-01-01 01:01:01' and where c1= 20 and c13= CAST('1991-01-01 01:01:01' AS DATE) and c14= '1991-01-01 01:01:01' and
c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and
c17= '1991-01-01 01:01:01'" ; c17= '1991-01-01 01:01:01'" ;
execute stmt1 ; execute stmt1 ;
found found
true true
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= ? and c14= ? and c15= ? and c16= ? and c17= ?" ; where c1= 20 and c13= CAST(? AS DATE) and c14= ? and c15= ? and c16= ? and c17= ?" ;
execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ; execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ;
found found
true true
...@@ -3062,7 +3062,7 @@ c17= CAST('1991-01-01 01:01:01' as datetime) ; ...@@ -3062,7 +3062,7 @@ c17= CAST('1991-01-01 01:01:01' as datetime) ;
found found
true true
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= @arg00 and c14= @arg00 and c15= @arg00 and c16= @arg00 where c1= 20 and c13= CAST(@arg00 AS DATE) and c14= @arg00 and c15= @arg00 and c16= @arg00
and c17= @arg00 ; and c17= @arg00 ;
found found
true true
...@@ -3076,7 +3076,7 @@ execute stmt1 ; ...@@ -3076,7 +3076,7 @@ execute stmt1 ;
found found
true true
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= ? and c14= ? and c15= ? and c16= ? and c17= ?" ; where c1= 20 and c13= CAST(? AS DATE) and c14= ? and c15= ? and c16= ? and c17= ?" ;
execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ; execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ;
found found
true true
......
...@@ -2966,25 +2966,25 @@ test_sequence ...@@ -2966,25 +2966,25 @@ test_sequence
-- select .. where date/time column = .. -- -- select .. where date/time column = .. --
set @arg00= '1991-01-01 01:01:01' ; set @arg00= '1991-01-01 01:01:01' ;
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= '1991-01-01 01:01:01' and c14= '1991-01-01 01:01:01' and where c1= 20 and c13= CAST('1991-01-01 01:01:01' AS DATE) and c14= '1991-01-01 01:01:01' and
c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and
c17= '1991-01-01 01:01:01' ; c17= '1991-01-01 01:01:01' ;
found found
true true
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= @arg00 and c14= @arg00 and c15= @arg00 and c16= @arg00 where c1= 20 and c13= CAST(@arg00 AS DATE) and c14= @arg00 and c15= @arg00 and c16= @arg00
and c17= @arg00 ; and c17= @arg00 ;
found found
true true
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= '1991-01-01 01:01:01' and c14= '1991-01-01 01:01:01' and where c1= 20 and c13= CAST('1991-01-01 01:01:01' AS DATE) and c14= '1991-01-01 01:01:01' and
c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and
c17= '1991-01-01 01:01:01'" ; c17= '1991-01-01 01:01:01'" ;
execute stmt1 ; execute stmt1 ;
found found
true true
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= ? and c14= ? and c15= ? and c16= ? and c17= ?" ; where c1= 20 and c13= CAST(? AS DATE) and c14= ? and c15= ? and c16= ? and c17= ?" ;
execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ; execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ;
found found
true true
...@@ -2998,7 +2998,7 @@ c17= CAST('1991-01-01 01:01:01' as datetime) ; ...@@ -2998,7 +2998,7 @@ c17= CAST('1991-01-01 01:01:01' as datetime) ;
found found
true true
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= @arg00 and c14= @arg00 and c15= @arg00 and c16= @arg00 where c1= 20 and c13= CAST(@arg00 AS DATE) and c14= @arg00 and c15= @arg00 and c16= @arg00
and c17= @arg00 ; and c17= @arg00 ;
found found
true true
...@@ -3012,7 +3012,7 @@ execute stmt1 ; ...@@ -3012,7 +3012,7 @@ execute stmt1 ;
found found
true true
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= ? and c14= ? and c15= ? and c16= ? and c17= ?" ; where c1= 20 and c13= CAST(? AS DATE) and c14= ? and c15= ? and c16= ? and c17= ?" ;
execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ; execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ;
found found
true true
...@@ -5980,25 +5980,25 @@ test_sequence ...@@ -5980,25 +5980,25 @@ test_sequence
-- select .. where date/time column = .. -- -- select .. where date/time column = .. --
set @arg00= '1991-01-01 01:01:01' ; set @arg00= '1991-01-01 01:01:01' ;
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= '1991-01-01 01:01:01' and c14= '1991-01-01 01:01:01' and where c1= 20 and c13= CAST('1991-01-01 01:01:01' AS DATE) and c14= '1991-01-01 01:01:01' and
c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and
c17= '1991-01-01 01:01:01' ; c17= '1991-01-01 01:01:01' ;
found found
true true
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= @arg00 and c14= @arg00 and c15= @arg00 and c16= @arg00 where c1= 20 and c13= CAST(@arg00 AS DATE) and c14= @arg00 and c15= @arg00 and c16= @arg00
and c17= @arg00 ; and c17= @arg00 ;
found found
true true
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= '1991-01-01 01:01:01' and c14= '1991-01-01 01:01:01' and where c1= 20 and c13= CAST('1991-01-01 01:01:01' AS DATE) and c14= '1991-01-01 01:01:01' and
c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and
c17= '1991-01-01 01:01:01'" ; c17= '1991-01-01 01:01:01'" ;
execute stmt1 ; execute stmt1 ;
found found
true true
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= ? and c14= ? and c15= ? and c16= ? and c17= ?" ; where c1= 20 and c13= CAST(? AS DATE) and c14= ? and c15= ? and c16= ? and c17= ?" ;
execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ; execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ;
found found
true true
...@@ -6012,7 +6012,7 @@ c17= CAST('1991-01-01 01:01:01' as datetime) ; ...@@ -6012,7 +6012,7 @@ c17= CAST('1991-01-01 01:01:01' as datetime) ;
found found
true true
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= @arg00 and c14= @arg00 and c15= @arg00 and c16= @arg00 where c1= 20 and c13= CAST(@arg00 AS DATE) and c14= @arg00 and c15= @arg00 and c16= @arg00
and c17= @arg00 ; and c17= @arg00 ;
found found
true true
...@@ -6026,7 +6026,7 @@ execute stmt1 ; ...@@ -6026,7 +6026,7 @@ execute stmt1 ;
found found
true true
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= ? and c14= ? and c15= ? and c16= ? and c17= ?" ; where c1= 20 and c13= CAST(? AS DATE) and c14= ? and c15= ? and c16= ? and c17= ?" ;
execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ; execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ;
found found
true true
......
...@@ -3029,25 +3029,25 @@ test_sequence ...@@ -3029,25 +3029,25 @@ test_sequence
-- select .. where date/time column = .. -- -- select .. where date/time column = .. --
set @arg00= '1991-01-01 01:01:01' ; set @arg00= '1991-01-01 01:01:01' ;
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= '1991-01-01 01:01:01' and c14= '1991-01-01 01:01:01' and where c1= 20 and c13= CAST('1991-01-01 01:01:01' AS DATE) and c14= '1991-01-01 01:01:01' and
c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and
c17= '1991-01-01 01:01:01' ; c17= '1991-01-01 01:01:01' ;
found found
true true
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= @arg00 and c14= @arg00 and c15= @arg00 and c16= @arg00 where c1= 20 and c13= CAST(@arg00 AS DATE) and c14= @arg00 and c15= @arg00 and c16= @arg00
and c17= @arg00 ; and c17= @arg00 ;
found found
true true
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= '1991-01-01 01:01:01' and c14= '1991-01-01 01:01:01' and where c1= 20 and c13= CAST('1991-01-01 01:01:01' AS DATE) and c14= '1991-01-01 01:01:01' and
c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and c15= '1991-01-01 01:01:01' and c16= '1991-01-01 01:01:01' and
c17= '1991-01-01 01:01:01'" ; c17= '1991-01-01 01:01:01'" ;
execute stmt1 ; execute stmt1 ;
found found
true true
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= ? and c14= ? and c15= ? and c16= ? and c17= ?" ; where c1= 20 and c13= CAST(? AS DATE) and c14= ? and c15= ? and c16= ? and c17= ?" ;
execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ; execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ;
found found
true true
...@@ -3061,7 +3061,7 @@ c17= CAST('1991-01-01 01:01:01' as datetime) ; ...@@ -3061,7 +3061,7 @@ c17= CAST('1991-01-01 01:01:01' as datetime) ;
found found
true true
select 'true' as found from t9 select 'true' as found from t9
where c1= 20 and c13= @arg00 and c14= @arg00 and c15= @arg00 and c16= @arg00 where c1= 20 and c13= CAST(@arg00 AS DATE) and c14= @arg00 and c15= @arg00 and c16= @arg00
and c17= @arg00 ; and c17= @arg00 ;
found found
true true
...@@ -3075,7 +3075,7 @@ execute stmt1 ; ...@@ -3075,7 +3075,7 @@ execute stmt1 ;
found found
true true
prepare stmt1 from "select 'true' as found from t9 prepare stmt1 from "select 'true' as found from t9
where c1= 20 and c13= ? and c14= ? and c15= ? and c16= ? and c17= ?" ; where c1= 20 and c13= CAST(? AS DATE) and c14= ? and c15= ? and c16= ? and c17= ?" ;
execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ; execute stmt1 using @arg00, @arg00, @arg00, @arg00, @arg00 ;
found found
true true
......
...@@ -693,6 +693,19 @@ set time_zone= @@global.time_zone; ...@@ -693,6 +693,19 @@ set time_zone= @@global.time_zone;
select str_to_date('10:00 PM', '%h:%i %p') + INTERVAL 10 MINUTE; select str_to_date('10:00 PM', '%h:%i %p') + INTERVAL 10 MINUTE;
#
# Bug #21103: DATE column not compared as DATE
#
create table t1 (field DATE);
insert into t1 values ('2006-11-06');
select * from t1 where field < '2006-11-06 04:08:36.0';
select * from t1 where field = '2006-11-06 04:08:36.0';
select * from t1 where field = '2006-11-06';
select * from t1 where CAST(field as DATETIME) < '2006-11-06 04:08:36.0';
select * from t1 where CAST(field as DATE) < '2006-11-06 04:08:36.0';
drop table t1;
# #
# Bug #25643: SEC_TO_TIME function problem # Bug #25643: SEC_TO_TIME function problem
# #
......
...@@ -5436,27 +5436,30 @@ int Field_newdate::store(const char *from,uint len,CHARSET_INFO *cs) ...@@ -5436,27 +5436,30 @@ int Field_newdate::store(const char *from,uint len,CHARSET_INFO *cs)
{ {
ASSERT_COLUMN_MARKED_FOR_WRITE; ASSERT_COLUMN_MARKED_FOR_WRITE;
TIME l_time; TIME l_time;
long tmp;
int error; int error;
THD *thd= table ? table->in_use : current_thd; THD *thd= table ? table->in_use : current_thd;
if (str_to_datetime(from, len, &l_time, enum enum_mysql_timestamp_type ret;
(TIME_FUZZY_DATE | if ((ret= str_to_datetime(from, len, &l_time,
(thd->variables.sql_mode & (TIME_FUZZY_DATE |
(MODE_NO_ZERO_IN_DATE | MODE_NO_ZERO_DATE | (thd->variables.sql_mode &
MODE_INVALID_DATES))), (MODE_NO_ZERO_IN_DATE | MODE_NO_ZERO_DATE |
&error) <= MYSQL_TIMESTAMP_ERROR) MODE_INVALID_DATES))),
&error)) <= MYSQL_TIMESTAMP_ERROR)
{ {
tmp= 0L; int3store(ptr,0L);
error= 2; error= 2;
} }
else else
tmp= l_time.day + l_time.month*32 + l_time.year*16*32; {
int3store(ptr, l_time.day + l_time.month*32 + l_time.year*16*32);
if(!error && (ret != MYSQL_TIMESTAMP_DATE))
return 2;
}
if (error) if (error)
set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, WARN_DATA_TRUNCATED, set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, WARN_DATA_TRUNCATED,
from, len, MYSQL_TIMESTAMP_DATE, 1); from, len, MYSQL_TIMESTAMP_DATE, 1);
int3store(ptr,tmp);
return error; return error;
} }
......
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