1
0
mirror of https://github.com/MariaDB/server.git synced 2025-12-24 11:21:21 +03:00

Bug#6147: Traditional: Assigning a string to a numeric column has unexpected results

The problem was that when converting a string to an exact number,
rounding didn't work, because conversion didn't understand
approximate numbers notation.
Fix: a new function for string-to-number conversion was implemented,
which is aware of approxinate number notation (with decimal point
and exponent, e.g. -19.55e-1)


include/m_ctype.h:
  Adding new function into MY_CHARSET_HANDLER
  Adding prototypes for 8bit and ucs2 functions.
mysql-test/r/loaddata.result:
  Fixing results
mysql-test/r/ps_2myisam.result:
  Fixing results
mysql-test/r/ps_3innodb.result:
  Fixing results
mysql-test/r/ps_4heap.result:
  Fixing results
mysql-test/r/ps_5merge.result:
  Fixing results
mysql-test/r/ps_6bdb.result:
  Fixing results
mysql-test/r/rpl_rewrite_db.result:
  Fixing results
mysql-test/r/select.result:
  Fixing results
mysql-test/r/sp-vars.result:
  Fixing results
mysql-test/r/strict.result:
  Fixing results
mysql-test/r/view.result:
  Fixing results
mysql-test/r/warnings.result:
  Fixing results
mysql-test/t/strict.test:
  Fixing results
sql/field.cc:
  Using new function
strings/ctype-big5.c:
  Adding new function into the MY_CHARSET_HANDLER structure
strings/ctype-bin.c:
  Adding new function into the MY_CHARSET_HANDLER structure
strings/ctype-cp932.c:
  Adding new function into the MY_CHARSET_HANDLER structure
strings/ctype-euc_kr.c:
  Adding new function into the MY_CHARSET_HANDLER structure
strings/ctype-eucjpms.c:
  Adding new function into the MY_CHARSET_HANDLER structure
strings/ctype-gb2312.c:
  Adding new function into the MY_CHARSET_HANDLER structure
strings/ctype-gbk.c:
  Adding new function into the MY_CHARSET_HANDLER structure
strings/ctype-latin1.c:
  Adding new function into the MY_CHARSET_HANDLER structure
strings/ctype-simple.c:
  Implementing my_strntoull10_8bit
  Adding new function into MY_CHARSET_HANDLER
strings/ctype-sjis.c:
  Adding new function into the MY_CHARSET_HANDLER structure
strings/ctype-tis620.c:
  Adding new function into the MY_CHARSET_HANDLER structure
strings/ctype-ucs2.c:
  Implementing UCS2 wrapper for 8bit version
  Adding new function into the MY_CHARSET_HANDLER structure
strings/ctype-ujis.c:
  Adding new function into the MY_CHARSET_HANDLER structure
strings/ctype-utf8.c:
  Adding new function into the MY_CHARSET_HANDLER structure
mysql-test/r/round.result:
  New BitKeeper file ``mysql-test/r/round.result''
mysql-test/t/round.test:
  New BitKeeper file ``mysql-test/t/round.test''
This commit is contained in:
unknown
2006-07-20 13:41:12 +05:00
parent c1306fc0f9
commit 03d411b1d1
31 changed files with 1083 additions and 302 deletions

View File

@@ -31,19 +31,19 @@ Error 1064 You have an error in your SQL syntax; check the manual that correspon
insert into t1 values (1);
insert into t1 values ("hej");
Warnings:
Warning 1264 Out of range value adjusted for column 'a' at row 1
Warning 1366 Incorrect integer value: 'hej' for column 'a' at row 1
insert into t1 values ("hej"),("d<>");
Warnings:
Warning 1264 Out of range value adjusted for column 'a' at row 1
Warning 1264 Out of range value adjusted for column 'a' at row 2
Warning 1366 Incorrect integer value: 'hej' for column 'a' at row 1
Warning 1366 Incorrect integer value: 'd?' for column 'a' at row 2
set SQL_WARNINGS=1;
insert into t1 values ("hej");
Warnings:
Warning 1264 Out of range value adjusted for column 'a' at row 1
Warning 1366 Incorrect integer value: 'hej' for column 'a' at row 1
insert into t1 values ("hej"),("d<>");
Warnings:
Warning 1264 Out of range value adjusted for column 'a' at row 1
Warning 1264 Out of range value adjusted for column 'a' at row 2
Warning 1366 Incorrect integer value: 'hej' for column 'a' at row 1
Warning 1366 Incorrect integer value: 'd?' for column 'a' at row 2
drop table t1;
set SQL_WARNINGS=0;
drop temporary table if exists not_exists;
@@ -187,44 +187,44 @@ create table t1 (a int);
insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
update t1 set a='abc';
Warnings:
Warning 1264 Out of range value adjusted for column 'a' at row 1
Warning 1264 Out of range value adjusted for column 'a' at row 2
Warning 1264 Out of range value adjusted for column 'a' at row 3
Warning 1264 Out of range value adjusted for column 'a' at row 4
Warning 1264 Out of range value adjusted for column 'a' at row 5
Warning 1264 Out of range value adjusted for column 'a' at row 6
Warning 1264 Out of range value adjusted for column 'a' at row 7
Warning 1264 Out of range value adjusted for column 'a' at row 8
Warning 1264 Out of range value adjusted for column 'a' at row 9
Warning 1264 Out of range value adjusted for column 'a' at row 10
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 1
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 2
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 3
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 4
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 5
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 6
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 7
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 8
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 9
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 10
show warnings limit 2, 1;
Level Code Message
Warning 1264 Out of range value adjusted for column 'a' at row 3
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 3
show warnings limit 0, 10;
Level Code Message
Warning 1264 Out of range value adjusted for column 'a' at row 1
Warning 1264 Out of range value adjusted for column 'a' at row 2
Warning 1264 Out of range value adjusted for column 'a' at row 3
Warning 1264 Out of range value adjusted for column 'a' at row 4
Warning 1264 Out of range value adjusted for column 'a' at row 5
Warning 1264 Out of range value adjusted for column 'a' at row 6
Warning 1264 Out of range value adjusted for column 'a' at row 7
Warning 1264 Out of range value adjusted for column 'a' at row 8
Warning 1264 Out of range value adjusted for column 'a' at row 9
Warning 1264 Out of range value adjusted for column 'a' at row 10
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 1
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 2
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 3
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 4
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 5
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 6
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 7
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 8
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 9
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 10
show warnings limit 9, 1;
Level Code Message
Warning 1264 Out of range value adjusted for column 'a' at row 10
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 10
show warnings limit 10, 1;
Level Code Message
show warnings limit 9, 2;
Level Code Message
Warning 1264 Out of range value adjusted for column 'a' at row 10
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 10
show warnings limit 0, 0;
Level Code Message
show warnings limit 1;
Level Code Message
Warning 1264 Out of range value adjusted for column 'a' at row 1
Warning 1366 Incorrect integer value: 'abc' for column 'a' at row 1
show warnings limit 0;
Level Code Message
show warnings limit 1, 0;