mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 21:12:26 +01:00
Fix bug#11325 Wrong date comparison in views
Wrong comparing method were choosen which results in false comparison. Make Item_bool_func2::fix_length_and_dec() to get type and field from real_item() to make REF_ITEM pass the check.
This commit is contained in:
parent
539d63d09a
commit
3415fae789
3 changed files with 28 additions and 4 deletions
|
@ -1831,3 +1831,14 @@ select * from v1;
|
|||
t
|
||||
01:00
|
||||
drop view v1;
|
||||
create table t1 (f1 date);
|
||||
insert into t1 values ('2005-01-01'),('2005-02-02');
|
||||
create view v1 as select * from t1;
|
||||
select * from v1 where f1='2005.02.02';
|
||||
f1
|
||||
2005-02-02
|
||||
select * from v1 where '2005.02.02'=f1;
|
||||
f1
|
||||
2005-02-02
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
|
|
@ -1673,3 +1673,14 @@ create view v1(k, K) as select 1,2;
|
|||
create view v1 as SELECT TIME_FORMAT(SEC_TO_TIME(3600),'%H:%i') as t;
|
||||
select * from v1;
|
||||
drop view v1;
|
||||
|
||||
#
|
||||
# bug #11325 Wrong date comparison in views
|
||||
#
|
||||
create table t1 (f1 date);
|
||||
insert into t1 values ('2005-01-01'),('2005-02-02');
|
||||
create view v1 as select * from t1;
|
||||
select * from v1 where f1='2005.02.02';
|
||||
select * from v1 where '2005.02.02'=f1;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
|
|
@ -238,9 +238,10 @@ void Item_bool_func2::fix_length_and_dec()
|
|||
return;
|
||||
}
|
||||
|
||||
if (args[0]->type() == FIELD_ITEM)
|
||||
Item *real_item= args[0]->real_item();
|
||||
if (real_item->type() == FIELD_ITEM)
|
||||
{
|
||||
Field *field=((Item_field*) args[0])->field;
|
||||
Field *field= ((Item_field*) real_item)->field;
|
||||
if (field->can_be_compared_as_longlong())
|
||||
{
|
||||
if (convert_constant_item(thd, field,&args[1]))
|
||||
|
@ -251,9 +252,10 @@ void Item_bool_func2::fix_length_and_dec()
|
|||
}
|
||||
}
|
||||
}
|
||||
if (args[1]->type() == FIELD_ITEM /* && !args[1]->const_item() */)
|
||||
real_item= args[1]->real_item();
|
||||
if (real_item->type() == FIELD_ITEM)
|
||||
{
|
||||
Field *field=((Item_field*) args[1])->field;
|
||||
Field *field= ((Item_field*) real_item)->field;
|
||||
if (field->can_be_compared_as_longlong())
|
||||
{
|
||||
if (convert_constant_item(thd, field,&args[0]))
|
||||
|
|
Loading…
Reference in a new issue