mariadb/mysql-test/t/round.test
bar@mysql.com/bar.intranet.mysql.r18.ru 29bc5cc179 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)
2006-07-20 13:41:12 +05:00

145 lines
4.7 KiB
Text

--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
CREATE TABLE t1 (sint8 tinyint not null);
INSERT INTO t1 VALUES ('0.1');
INSERT INTO t1 VALUES ('0.5');
INSERT INTO t1 VALUES ('127.4');
INSERT INTO t1 VALUES ('127.5');
INSERT INTO t1 VALUES ('-0.1');
INSERT INTO t1 VALUES ('-0.5');
INSERT INTO t1 VALUES ('-127.4');
INSERT INTO t1 VALUES ('-127.5');
INSERT INTO t1 VALUES ('-128.4');
INSERT INTO t1 VALUES ('-128.5');
SELECT * FROM t1;
DROP TABLE t1;
CREATE TABLE t1 (uint8 tinyint unsigned not null);
INSERT INTO t1 VALUES ('0.1');
INSERT INTO t1 VALUES ('0.5');
INSERT INTO t1 VALUES ('127.4');
INSERT INTO t1 VALUES ('127.5');
INSERT INTO t1 VALUES ('-0.1');
INSERT INTO t1 VALUES ('-0.5');
INSERT INTO t1 VALUES ('255.4');
INSERT INTO t1 VALUES ('255.5');
SELECT * FROM t1;
DROP TABLE t1;
CREATE TABLE t1 (sint16 smallint not null);
INSERT INTO t1 VALUES ('0.1');
INSERT INTO t1 VALUES ('0.5');
INSERT INTO t1 VALUES ('32767.4');
INSERT INTO t1 VALUES ('32767.5');
INSERT INTO t1 VALUES ('-0.1');
INSERT INTO t1 VALUES ('-0.5');
INSERT INTO t1 VALUES ('-32767.4');
INSERT INTO t1 VALUES ('-32767.5');
INSERT INTO t1 VALUES ('-32768.4');
INSERT INTO t1 VALUES ('-32768.5');
SELECT * FROM t1;
DROP TABLE t1;
CREATE TABLE t1 (uint16 smallint unsigned not null);
INSERT INTO t1 VALUES ('0.1');
INSERT INTO t1 VALUES ('0.5');
INSERT INTO t1 VALUES ('32767.4');
INSERT INTO t1 VALUES ('32767.5');
INSERT INTO t1 VALUES ('-0.1');
INSERT INTO t1 VALUES ('-0.5');
INSERT INTO t1 VALUES ('65535.4');
INSERT INTO t1 VALUES ('65535.5');
SELECT * FROM t1;
DROP TABLE t1;
CREATE TABLE t1 (sint24 mediumint not null);
INSERT INTO t1 VALUES ('0.1');
INSERT INTO t1 VALUES ('0.5');
INSERT INTO t1 VALUES ('8388607.4');
INSERT INTO t1 VALUES ('8388607.5');
INSERT INTO t1 VALUES ('-0.1');
INSERT INTO t1 VALUES ('-0.5');
INSERT INTO t1 VALUES ('-8388607.4');
INSERT INTO t1 VALUES ('-8388607.5');
INSERT INTO t1 VALUES ('-8388608.4');
INSERT INTO t1 VALUES ('-8388608.5');
SELECT * FROM t1;
DROP TABLE t1;
CREATE TABLE t1 (uint24 mediumint unsigned not null);
INSERT INTO t1 VALUES ('0.1');
INSERT INTO t1 VALUES ('0.5');
INSERT INTO t1 VALUES ('8388607.4');
INSERT INTO t1 VALUES ('8388607.5');
INSERT INTO t1 VALUES ('-0.1');
INSERT INTO t1 VALUES ('-0.5');
INSERT INTO t1 VALUES ('16777215.4');
INSERT INTO t1 VALUES ('16777215.5');
SELECT * FROM t1;
DROP TABLE t1;
CREATE TABLE t1 (sint64 bigint not null);
INSERT INTO t1 VALUES ('0.1');
INSERT INTO t1 VALUES ('0.5');
INSERT INTO t1 VALUES ('9223372036854775807.4');
INSERT INTO t1 VALUES ('9223372036854775807.5');
INSERT INTO t1 VALUES ('-0.1');
INSERT INTO t1 VALUES ('-0.5');
INSERT INTO t1 VALUES ('-9223372036854775807.4');
INSERT INTO t1 VALUES ('-9223372036854775807.5');
INSERT INTO t1 VALUES ('-9223372036854775808.4');
INSERT INTO t1 VALUES ('-9223372036854775808.5');
SELECT * FROM t1;
DROP TABLE t1;
CREATE TABLE t1 (uint64 bigint unsigned not null);
INSERT INTO t1 VALUES ('0.1');
INSERT INTO t1 VALUES ('0.5');
INSERT INTO t1 VALUES ('9223372036854775807.4');
INSERT INTO t1 VALUES ('9223372036854775807.5');
INSERT INTO t1 VALUES ('-0.1');
INSERT INTO t1 VALUES ('-0.5');
INSERT INTO t1 VALUES ('18446744073709551615.4');
INSERT INTO t1 VALUES ('18446744073709551615.5');
INSERT INTO t1 VALUES ('1844674407370955161.0');
INSERT INTO t1 VALUES ('1844674407370955161.1');
INSERT INTO t1 VALUES ('1844674407370955161.2');
INSERT INTO t1 VALUES ('1844674407370955161.3');
INSERT INTO t1 VALUES ('1844674407370955161.4');
INSERT INTO t1 VALUES ('1844674407370955161.5');
INSERT INTO t1 VALUES ('1844674407370955161.0e1');
INSERT INTO t1 VALUES ('1844674407370955161.1e1');
INSERT INTO t1 VALUES ('1844674407370955161.2e1');
INSERT INTO t1 VALUES ('1844674407370955161.3e1');
INSERT INTO t1 VALUES ('1844674407370955161.4e1');
INSERT INTO t1 VALUES ('1844674407370955161.5e1');
INSERT INTO t1 VALUES ('18446744073709551610e-1');
INSERT INTO t1 VALUES ('18446744073709551611e-1');
INSERT INTO t1 VALUES ('18446744073709551612e-1');
INSERT INTO t1 VALUES ('18446744073709551613e-1');
INSERT INTO t1 VALUES ('18446744073709551614e-1');
INSERT INTO t1 VALUES ('18446744073709551615e-1');
SELECT * FROM t1;
DROP TABLE t1;
CREATE TABLE t1 (str varchar(128), sint64 bigint not null default 0);
INSERT INTO t1 (str) VALUES ('1.5');
INSERT INTO t1 (str) VALUES ('1.00005e4');
INSERT INTO t1 (str) VALUES ('1.0005e3');
INSERT INTO t1 (str) VALUES ('1.005e2');
INSERT INTO t1 (str) VALUES ('1.05e1');
INSERT INTO t1 (str) VALUES ('1.5e0');
INSERT INTO t1 (str) VALUES ('100005e-1');
INSERT INTO t1 (str) VALUES ('100050e-2');
INSERT INTO t1 (str) VALUES ('100500e-3');
INSERT INTO t1 (str) VALUES ('105000e-4');
INSERT INTO t1 (str) VALUES ('150000e-5');
UPDATE t1 SET sint64=str;
SELECT * FROM t1;
DROP TABLE t1;