From 26f55f32a496a028adb7a61236854988b9c7689a Mon Sep 17 00:00:00 2001 From: hyc520 Date: Thu, 18 Aug 2022 19:52:33 +0800 Subject: [PATCH] Supplement fastcheck cases for improve numeric computation. --- .../regress/expected/mot/single_numeric.out | 29 +++++++++++++++++++ src/test/regress/sql/mot/single_numeric.sql | 26 +++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/src/test/regress/expected/mot/single_numeric.out b/src/test/regress/expected/mot/single_numeric.out index 456b9bb7d..e895d7947 100644 --- a/src/test/regress/expected/mot/single_numeric.out +++ b/src/test/regress/expected/mot/single_numeric.out @@ -11,6 +11,7 @@ CREATE FOREIGN TABLE num_exp_sqrt (id int4 not null, expected numeric(210,10)) S CREATE FOREIGN TABLE num_exp_ln (id int4 not null, expected numeric(210,10)) SERVER mot_server ; CREATE FOREIGN TABLE num_exp_log10 (id int4 not null, expected numeric(210,10)) SERVER mot_server ; CREATE FOREIGN TABLE num_exp_power_10_ln (id int4 not null, expected numeric(210,10)) SERVER mot_server ; +CREATE FOREIGN TABLE num_exp_sign (id int4 not null, expected numeric(210,10)) SERVER mot_server ; CREATE FOREIGN TABLE num_result (id1 int4, id2 int4, result numeric(210,10)) SERVER mot_server ; -- ****************************** -- * The following EXPECTED results are computed by bc(1) @@ -467,6 +468,18 @@ INSERT INTO num_exp_power_10_ln VALUES (8,'167361463828.07491320069016125952'); INSERT INTO num_exp_power_10_ln VALUES (9,'107511333880052007.04141124673540337457'); COMMIT TRANSACTION; START TRANSACTION; +INSERT INTO num_exp_sign VALUES (0,'0'); +INSERT INTO num_exp_sign VALUES (1,'0'); +INSERT INTO num_exp_sign VALUES (2,'-1'); +INSERT INTO num_exp_sign VALUES (3,'1'); +INSERT INTO num_exp_sign VALUES (4,'1'); +INSERT INTO num_exp_sign VALUES (5,'1'); +INSERT INTO num_exp_sign VALUES (6,'1'); +INSERT INTO num_exp_sign VALUES (7,'-1'); +INSERT INTO num_exp_sign VALUES (8,'1'); +INSERT INTO num_exp_sign VALUES (9,'-1'); +COMMIT TRANSACTION; +START TRANSACTION; INSERT INTO num_data VALUES (0, '0'); INSERT INTO num_data VALUES (1, '0'); INSERT INTO num_data VALUES (2, '-34338492.215397047'); @@ -489,6 +502,7 @@ CREATE UNIQUE INDEX num_exp_sqrt_idx ON num_exp_sqrt (id); CREATE UNIQUE INDEX num_exp_ln_idx ON num_exp_ln (id); CREATE UNIQUE INDEX num_exp_log10_idx ON num_exp_log10 (id); CREATE UNIQUE INDEX num_exp_power_10_ln_idx ON num_exp_power_10_ln (id); +CREATE UNIQUE INDEX num_exp_sign_idx ON num_exp_sign (id); VACUUM ANALYZE num_exp_add; VACUUM ANALYZE num_exp_sub; VACUUM ANALYZE num_exp_div; @@ -497,6 +511,7 @@ VACUUM ANALYZE num_exp_sqrt; VACUUM ANALYZE num_exp_ln; VACUUM ANALYZE num_exp_log10; VACUUM ANALYZE num_exp_power_10_ln; +VACUUM ANALYZE num_exp_sign; -- ****************************** -- * Now check the behaviour of the NUMERIC type -- ****************************** @@ -661,6 +676,20 @@ SELECT t1.id1, t1.result, t2.expected -----+--------+---------- (0 rows) +-- ****************************** +-- * SIGN(value) check +-- ****************************** +DELETE FROM num_result; +INSERT INTO num_result SELECT id, 0, SIGN(val) + FROM num_data; +SELECT t1.id1, t1.result, t2.expected + FROM num_result t1, num_exp_sign t2 + WHERE t1.id1 = t2.id + AND t1.result != t2.expected; + id1 | result | expected +-----+--------+---------- +(0 rows) + -- ****************************** -- * miscellaneous checks for things that have been broken in the past... -- ****************************** diff --git a/src/test/regress/sql/mot/single_numeric.sql b/src/test/regress/sql/mot/single_numeric.sql index a94d63d8f..585dcbc4c 100644 --- a/src/test/regress/sql/mot/single_numeric.sql +++ b/src/test/regress/sql/mot/single_numeric.sql @@ -13,6 +13,7 @@ CREATE FOREIGN TABLE num_exp_sqrt (id int4 not null, expected numeric(210,10)) S CREATE FOREIGN TABLE num_exp_ln (id int4 not null, expected numeric(210,10)) SERVER mot_server ; CREATE FOREIGN TABLE num_exp_log10 (id int4 not null, expected numeric(210,10)) SERVER mot_server ; CREATE FOREIGN TABLE num_exp_power_10_ln (id int4 not null, expected numeric(210,10)) SERVER mot_server ; +CREATE FOREIGN TABLE num_exp_sign (id int4 not null, expected numeric(210,10)) SERVER mot_server ; CREATE FOREIGN TABLE num_result (id1 int4, id2 int4, result numeric(210,10)) SERVER mot_server ; @@ -473,6 +474,18 @@ INSERT INTO num_exp_power_10_ln VALUES (8,'167361463828.07491320069016125952'); INSERT INTO num_exp_power_10_ln VALUES (9,'107511333880052007.04141124673540337457'); COMMIT TRANSACTION; START TRANSACTION; +INSERT INTO num_exp_sign VALUES (0,'0'); +INSERT INTO num_exp_sign VALUES (1,'0'); +INSERT INTO num_exp_sign VALUES (2,'-1'); +INSERT INTO num_exp_sign VALUES (3,'1'); +INSERT INTO num_exp_sign VALUES (4,'1'); +INSERT INTO num_exp_sign VALUES (5,'1'); +INSERT INTO num_exp_sign VALUES (6,'1'); +INSERT INTO num_exp_sign VALUES (7,'-1'); +INSERT INTO num_exp_sign VALUES (8,'1'); +INSERT INTO num_exp_sign VALUES (9,'-1'); +COMMIT TRANSACTION; +START TRANSACTION; INSERT INTO num_data VALUES (0, '0'); INSERT INTO num_data VALUES (1, '0'); INSERT INTO num_data VALUES (2, '-34338492.215397047'); @@ -497,6 +510,7 @@ CREATE UNIQUE INDEX num_exp_sqrt_idx ON num_exp_sqrt (id); CREATE UNIQUE INDEX num_exp_ln_idx ON num_exp_ln (id); CREATE UNIQUE INDEX num_exp_log10_idx ON num_exp_log10 (id); CREATE UNIQUE INDEX num_exp_power_10_ln_idx ON num_exp_power_10_ln (id); +CREATE UNIQUE INDEX num_exp_sign_idx ON num_exp_sign (id); VACUUM ANALYZE num_exp_add; VACUUM ANALYZE num_exp_sub; @@ -506,6 +520,7 @@ VACUUM ANALYZE num_exp_sqrt; VACUUM ANALYZE num_exp_ln; VACUUM ANALYZE num_exp_log10; VACUUM ANALYZE num_exp_power_10_ln; +VACUUM ANALYZE num_exp_sign; -- ****************************** -- * Now check the behaviour of the NUMERIC type @@ -636,6 +651,17 @@ SELECT t1.id1, t1.result, t2.expected WHERE t1.id1 = t2.id AND t1.result != t2.expected; +-- ****************************** +-- * SIGN(value) check +-- ****************************** +DELETE FROM num_result; +INSERT INTO num_result SELECT id, 0, SIGN(val) + FROM num_data; +SELECT t1.id1, t1.result, t2.expected + FROM num_result t1, num_exp_sign t2 + WHERE t1.id1 = t2.id + AND t1.result != t2.expected; + -- ****************************** -- * miscellaneous checks for things that have been broken in the past... -- ******************************