mariadb/tests
evgen@moonbone.local 4747fa0c03 Bug#27590: Wrong DATE/DATETIME comparison.
DATE and DATETIME can be compared either as strings or as int. Both
methods have their disadvantages. Strings can contain valid DATETIME value
but have insignificant zeros omitted thus became non-comparable with
other DATETIME strings. The comparison as int usually will require conversion
from the string representation and the automatic conversion in most cases is
carried out in a wrong way thus producing wrong comparison result. Another
problem occurs when one tries to compare DATE field with a DATETIME constant.
The constant is converted to DATE losing its precision i.e. losing time part.

This fix addresses the problems described above by adding a special
DATE/DATETIME comparator. The comparator correctly converts DATE/DATETIME
string values to int when it's necessary, adds zero time part (00:00:00)
to DATE values to compare them correctly to DATETIME values. Due to correct
conversion malformed DATETIME string values are correctly compared to other
DATE/DATETIME values.

As of this patch a DATE value equals to DATETIME value with zero time part.
For example '2001-01-01' equals to '2001-01-01 00:00:00'.

The compare_datetime() function is added to the Arg_comparator class.
It implements the correct comparator for DATE/DATETIME values.
Two supplementary functions called get_date_from_str() and get_datetime_value()
are added. The first one extracts DATE/DATETIME value from a string and the
second one retrieves the correct DATE/DATETIME value from an item.
The new Arg_comparator::can_compare_as_dates() function is added and used
to check whether two given items can be compared by the compare_datetime()
comparator.
Two caching variables were added to the Arg_comparator class to speedup the
DATE/DATETIME comparison.
One more store() method was added to the Item_cache_int class to cache int
values.
The new is_datetime() function was added to the Item class. It indicates
whether the item returns a DATE/DATETIME value.
2007-04-27 00:12:09 +04:00
..
.cvsignore Import changeset 2000-07-31 21:29:14 +02:00
auto_increment.res Import changeset 2000-07-31 21:29:14 +02:00
auto_increment.tst Import changeset 2000-07-31 21:29:14 +02:00
big_record.pl Safety fix to enable RAID in max binaries 2003-05-13 10:54:07 +03:00
CMakeLists.txt my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
connect_test.c Many files: 2006-12-23 20:17:15 +01:00
deadlock_test.c my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
drop_test.pl Bug fixes for 3.23.23 2000-08-29 12:31:01 +03:00
export.pl Fixed bug in send in mysqltest 2001-03-25 01:02:26 +02:00
fork2_test.pl Don't do signal() on windows (Causes instability problems) 2001-10-17 19:39:39 +03:00
fork_big.pl Don't do signal() on windows (Causes instability problems) 2001-10-17 19:39:39 +03:00
fork_big2.pl Save and clear run context before executing a stored function or trigger and restore it afterwards. 2005-08-15 18:15:12 +03:00
function.res Arjens LOG functions changes with small changes and tests added to mysql-test 2002-07-17 12:11:48 +04:00
function.tst Arjens LOG functions changes with small changes and tests added to mysql-test 2002-07-17 12:11:48 +04:00
grant.pl Fixed two bugs in MySQL ACL. 2005-03-17 08:16:56 +02:00
grant.res Merge with 4.0.18 2004-02-11 00:06:46 +01:00
index_corrupt.pl Fixed core dump bug when hot link list in key cache was empty. Bug #10167 2005-04-27 14:31:04 +03:00
insert_and_repair.pl Don't do signal() on windows (Causes instability problems) 2001-10-17 19:39:39 +03:00
insert_test.c Many files: 2006-12-23 20:17:15 +01:00
list_test.c Many files: 2006-12-23 20:17:15 +01:00
lock_test.pl Import changeset 2000-07-31 21:29:14 +02:00
lock_test.res Import changeset 2000-07-31 21:29:14 +02:00
mail_to_db.pl New versions of mail_to_db.pl and pmail.pl. 2005-04-09 18:37:32 +03:00
Makefile.am Remove test/udf_test and test/udf_test.res, since udf's are nowadays 2007-03-15 15:52:04 +01:00
myisam-big-rows.tst Fix for MyISAM records > 16M 2001-12-11 20:45:48 +02:00
mysql_client_test.c Bug#27590: Wrong DATE/DATETIME comparison. 2007-04-27 00:12:09 +04:00
pmail.pl New versions of mail_to_db.pl and pmail.pl. 2005-04-09 18:37:32 +03:00
rename_test.pl Don't do signal() on windows (Causes instability problems) 2001-10-17 19:39:39 +03:00
restore-lock.smack sql/slave.cc 2000-09-19 17:23:58 -06:00
select_test.c Many files: 2006-12-23 20:17:15 +01:00
showdb_test.c Many files: 2006-12-23 20:17:15 +01:00
ssl_test.c Many files: 2006-12-23 20:17:15 +01:00
table_types.pl Safety fix to enable RAID in max binaries 2003-05-13 10:54:07 +03:00
test_delayed_insert.pl Don't do signal() on windows (Causes instability problems) 2001-10-17 19:39:39 +03:00
thread_test.c Many files: 2006-12-23 20:17:15 +01:00
truncate.pl Fixed mutex problem in TRUNCATE TABLE 2002-06-04 22:59:12 +03:00