diff options
author | Tor Didriksen <tor.didriksen@oracle.com> | 2012-01-25 10:36:25 +0100 |
---|---|---|
committer | Tor Didriksen <tor.didriksen@oracle.com> | 2012-01-25 10:36:25 +0100 |
commit | 042bd1511d855707f2beff65b9fb803d9dc4fb9e (patch) | |
tree | 9eea0f08c6944a0bc10df9900b7dd9b441bded01 /sql-common | |
parent | 97883d3c0498dfaa17f6f7cbefa373b7cd2c72a3 (diff) | |
download | mariadb-git-042bd1511d855707f2beff65b9fb803d9dc4fb9e.tar.gz |
Bug#13463415 63502: INCORRECT RESULTS OF BIGINT AND DECIMAL COMPARISON
Bug#11758543 50756: BIGINT '100' MATCHES 1.001E2
Expressions of the form
BIGINT_COL <compare> <non-integer constant>
should be done either as decimal, or float.
Currently however, such comparisons are done as int,
which means that the constant may be truncated,
and yield false positives/negatives for all queries
where compare is '>' '<' '>=' '<=' '=' '!='.
BIGINT_COL IN <list of contstants>
and
BIGINT_COL BETWEEN <constant> AND <constant>
are also affected.
mysql-test/r/bigint.result:
New tests.
mysql-test/r/func_in.result:
BIGINT <=> string comparison should be done as float,
so a warning for the value 'abc' is appropriate.
mysql-test/t/bigint.test:
New tests.
sql/item_cmpfunc.cc:
In convert_constant_item() we verify that the constant item
can be stored in the given field.
For BIGINT columns (MYSQL_TYPE_LONGLONG) we must verify that the
stored constant value is actually comparable as int,
i.e. that the value was not truncated.
For between: compare as int only if both arguments convert correctly to int.
Diffstat (limited to 'sql-common')
0 files changed, 0 insertions, 0 deletions