-- -- FLOAT8 -- --Testcase 113: CREATE EXTENSION sqlite_fdw; --Testcase 114: CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlitefdw_test_core.db'); --Testcase 115: CREATE FOREIGN TABLE FLOAT8_TBL(f1 float8 OPTIONS (key 'true')) SERVER sqlite_svr; --Testcase 116: CREATE FOREIGN TABLE FLOAT8_TMP(f1 float8, f2 float8, id int OPTIONS (key 'true')) SERVER sqlite_svr; --Testcase 1: INSERT INTO FLOAT8_TBL(f1) VALUES (' 0.0 '); --Testcase 2: INSERT INTO FLOAT8_TBL(f1) VALUES ('1004.30 '); --Testcase 3: INSERT INTO FLOAT8_TBL(f1) VALUES (' -34.84'); --Testcase 4: INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200'); --Testcase 5: INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200'); -- test for underflow and overflow handling --Testcase 6: INSERT INTO FLOAT8_TMP(f1) VALUES ('10e400'::float8); ERROR: "10e400" is out of range for type double precision LINE 1: INSERT INTO FLOAT8_TMP(f1) VALUES ('10e400'::float8); ^ --Testcase 7: INSERT INTO FLOAT8_TMP(f1) VALUES ('-10e400'::float8); ERROR: "-10e400" is out of range for type double precision LINE 1: INSERT INTO FLOAT8_TMP(f1) VALUES ('-10e400'::float8); ^ --Testcase 8: INSERT INTO FLOAT8_TMP(f1) VALUES ('10e-400'::float8); ERROR: "10e-400" is out of range for type double precision LINE 1: INSERT INTO FLOAT8_TMP(f1) VALUES ('10e-400'::float8); ^ --Testcase 9: INSERT INTO FLOAT8_TMP(f1) VALUES ('-10e-400'::float8); ERROR: "-10e-400" is out of range for type double precision LINE 1: INSERT INTO FLOAT8_TMP(f1) VALUES ('-10e-400'::float8); ^ -- test smallest normalized input --Testcase 117: INSERT INTO FLOAT8_TMP(f1) VALUES ('2.2250738585072014E-308'::float8); --Testcase 118: SELECT float8send(f1) FROM FLOAT8_TMP; float8send -------------------- \x0010000000000000 (1 row) -- bad input --Testcase 10: INSERT INTO FLOAT8_TBL(f1) VALUES (''); ERROR: invalid input syntax for type double precision: "" LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES (''); ^ --Testcase 11: INSERT INTO FLOAT8_TBL(f1) VALUES (' '); ERROR: invalid input syntax for type double precision: " " LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES (' '); ^ --Testcase 12: INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz'); ERROR: invalid input syntax for type double precision: "xyz" LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz'); ^ --Testcase 13: INSERT INTO FLOAT8_TBL(f1) VALUES ('5.0.0'); ERROR: invalid input syntax for type double precision: "5.0.0" LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('5.0.0'); ^ --Testcase 14: INSERT INTO FLOAT8_TBL(f1) VALUES ('5 . 0'); ERROR: invalid input syntax for type double precision: "5 . 0" LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('5 . 0'); ^ --Testcase 15: INSERT INTO FLOAT8_TBL(f1) VALUES ('5. 0'); ERROR: invalid input syntax for type double precision: "5. 0" LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('5. 0'); ^ --Testcase 16: INSERT INTO FLOAT8_TBL(f1) VALUES (' - 3'); ERROR: invalid input syntax for type double precision: " - 3" LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES (' - 3'); ^ --Testcase 17: INSERT INTO FLOAT8_TBL(f1) VALUES ('123 5'); ERROR: invalid input syntax for type double precision: "123 5" LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('123 5'); ^ -- special inputs --Testcase 19: DELETE FROM FLOAT8_TMP; --Testcase 119: INSERT INTO FLOAT8_TMP VALUES ('NaN'::float8); --Testcase 120: SELECT f1 FROM FLOAT8_TMP; f1 ---- (1 row) --Testcase 20: DELETE FROM FLOAT8_TMP; --Testcase 121: INSERT INTO FLOAT8_TMP VALUES ('nan'::float8); --Testcase 122: SELECT f1 FROM FLOAT8_TMP; f1 ---- (1 row) --Testcase 21: DELETE FROM FLOAT8_TMP; --Testcase 123: INSERT INTO FLOAT8_TMP VALUES (' NAN '::float8); --Testcase 124: SELECT f1 FROM FLOAT8_TMP; f1 ---- (1 row) --Testcase 22: DELETE FROM FLOAT8_TMP; --Testcase 125: INSERT INTO FLOAT8_TMP VALUES ('infinity'::float8); --Testcase 126: SELECT f1 FROM FLOAT8_TMP; f1 ---------- Infinity (1 row) --Testcase 23: DELETE FROM FLOAT8_TMP; --Testcase 127: INSERT INTO FLOAT8_TMP VALUES (' -INFINiTY '::float8); --Testcase 128: SELECT f1 FROM FLOAT8_TMP; f1 ----------- -Infinity (1 row) -- bad special inputs --Testcase 25: DELETE FROM FLOAT8_TMP; --Testcase 129: INSERT INTO FLOAT8_TMP VALUES ('N A N'::float8); ERROR: invalid input syntax for type double precision: "N A N" LINE 1: INSERT INTO FLOAT8_TMP VALUES ('N A N'::float8); ^ --Testcase 130: SELECT f1 FROM FLOAT8_TMP; f1 ---- (0 rows) --Testcase 26: DELETE FROM FLOAT8_TMP; --Testcase 131: INSERT INTO FLOAT8_TMP VALUES ('NaN x'::float8); ERROR: invalid input syntax for type double precision: "NaN x" LINE 1: INSERT INTO FLOAT8_TMP VALUES ('NaN x'::float8); ^ --Testcase 132: SELECT f1 FROM FLOAT8_TMP; f1 ---- (0 rows) --Testcase 27: DELETE FROM FLOAT8_TMP; --Testcase 133: INSERT INTO FLOAT8_TMP VALUES (' INFINITY x'::float8); ERROR: invalid input syntax for type double precision: " INFINITY x" LINE 1: INSERT INTO FLOAT8_TMP VALUES (' INFINITY x'::float8); ^ --Testcase 134: SELECT f1 FROM FLOAT8_TMP; f1 ---- (0 rows) --Testcase 28: DELETE FROM FLOAT8_TMP; --Testcase 135: INSERT INTO FLOAT8_TMP VALUES ('Infinity'::float8 + 100.0); --Testcase 136: SELECT f1 FROM FLOAT8_TMP; f1 ---------- Infinity (1 row) --Testcase 30: DELETE FROM FLOAT8_TMP; --Testcase 137: INSERT INTO FLOAT8_TMP VALUES ('Infinity'::float8 / 'Infinity'::float8); --Testcase 138: SELECT f1 FROM FLOAT8_TMP; f1 ---- (1 row) --Testcase 31: DELETE FROM FLOAT8_TMP; --Testcase 139: INSERT INTO FLOAT8_TMP VALUES ('nan'::float8 / 'nan'::float8); --Testcase 140: SELECT f1 FROM FLOAT8_TMP; f1 ---- (1 row) --Testcase 32: DELETE FROM FLOAT8_TMP; --Testcase 141: INSERT INTO FLOAT8_TMP VALUES ('nan'::numeric::float8); --Testcase 142: SELECT f1 FROM FLOAT8_TMP; f1 ---- (1 row) --Testcase 34: SELECT '' AS five, * FROM FLOAT8_TBL; five | f1 ------+---------------------- | 0 | 1004.3 | -34.84 | 1.2345678901234e+200 | 1.2345678901234e-200 (5 rows) --Testcase 35: SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <> '1004.3'; four | f1 ------+---------------------- | 0 | -34.84 | 1.2345678901234e+200 | 1.2345678901234e-200 (4 rows) --Testcase 36: SELECT '' AS one, f.* FROM FLOAT8_TBL f WHERE f.f1 = '1004.3'; one | f1 -----+-------- | 1004.3 (1 row) --Testcase 37: SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE '1004.3' > f.f1; three | f1 -------+---------------------- | 0 | -34.84 | 1.2345678901234e-200 (3 rows) --Testcase 38: SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE f.f1 < '1004.3'; three | f1 -------+---------------------- | 0 | -34.84 | 1.2345678901234e-200 (3 rows) --Testcase 39: SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE '1004.3' >= f.f1; four | f1 ------+---------------------- | 0 | 1004.3 | -34.84 | 1.2345678901234e-200 (4 rows) --Testcase 40: SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <= '1004.3'; four | f1 ------+---------------------- | 0 | 1004.3 | -34.84 | 1.2345678901234e-200 (4 rows) --Testcase 41: SELECT '' AS three, f.f1, f.f1 * '-10' AS x FROM FLOAT8_TBL f WHERE f.f1 > '0.0'; three | f1 | x -------+----------------------+----------------------- | 1004.3 | -10043 | 1.2345678901234e+200 | -1.2345678901234e+201 | 1.2345678901234e-200 | -1.2345678901234e-199 (3 rows) --Testcase 42: SELECT '' AS three, f.f1, f.f1 + '-10' AS x FROM FLOAT8_TBL f WHERE f.f1 > '0.0'; three | f1 | x -------+----------------------+---------------------- | 1004.3 | 994.3 | 1.2345678901234e+200 | 1.2345678901234e+200 | 1.2345678901234e-200 | -10 (3 rows) --Testcase 43: SELECT '' AS three, f.f1, f.f1 / '-10' AS x FROM FLOAT8_TBL f WHERE f.f1 > '0.0'; three | f1 | x -------+----------------------+----------------------- | 1004.3 | -100.42999999999999 | 1.2345678901234e+200 | -1.2345678901234e+199 | 1.2345678901234e-200 | -1.2345678901234e-201 (3 rows) --Testcase 44: SELECT '' AS three, f.f1, f.f1 - '-10' AS x FROM FLOAT8_TBL f WHERE f.f1 > '0.0'; three | f1 | x -------+----------------------+---------------------- | 1004.3 | 1014.3 | 1.2345678901234e+200 | 1.2345678901234e+200 | 1.2345678901234e-200 | 10 (3 rows) --Testcase 45: SELECT '' AS one, f.f1 ^ '2.0' AS square_f1 FROM FLOAT8_TBL f where f.f1 = '1004.3'; one | square_f1 -----+-------------------- | 1008618.4899999999 (1 row) -- absolute value --Testcase 46: SELECT '' AS five, f.f1, @f.f1 AS abs_f1 FROM FLOAT8_TBL f; five | f1 | abs_f1 ------+----------------------+---------------------- | 0 | 0 | 1004.3 | 1004.3 | -34.84 | 34.84 | 1.2345678901234e+200 | 1.2345678901234e+200 | 1.2345678901234e-200 | 1.2345678901234e-200 (5 rows) -- truncate --Testcase 47: SELECT '' AS five, f.f1, trunc(f.f1) AS trunc_f1 FROM FLOAT8_TBL f; five | f1 | trunc_f1 ------+----------------------+---------------------- | 0 | 0 | 1004.3 | 1004 | -34.84 | -34 | 1.2345678901234e+200 | 1.2345678901234e+200 | 1.2345678901234e-200 | 0 (5 rows) -- round --Testcase 48: SELECT '' AS five, f.f1, round(f.f1) AS round_f1 FROM FLOAT8_TBL f; five | f1 | round_f1 ------+----------------------+---------------------- | 0 | 0 | 1004.3 | 1004 | -34.84 | -35 | 1.2345678901234e+200 | 1.2345678901234e+200 | 1.2345678901234e-200 | 0 (5 rows) -- ceil / ceiling --Testcase 49: select ceil(f1) as ceil_f1 from float8_tbl f; ceil_f1 ---------------------- 0 1005 -34 1.2345678901234e+200 1 (5 rows) --Testcase 50: select ceiling(f1) as ceiling_f1 from float8_tbl f; ceiling_f1 ---------------------- 0 1005 -34 1.2345678901234e+200 1 (5 rows) -- floor --Testcase 51: select floor(f1) as floor_f1 from float8_tbl f; floor_f1 ---------------------- 0 1004 -35 1.2345678901234e+200 0 (5 rows) -- sign --Testcase 52: select sign(f1) as sign_f1 from float8_tbl f; sign_f1 --------- 0 1 -1 1 1 (5 rows) -- avoid bit-exact output here because operations may not be bit-exact. SET extra_float_digits = 0; -- square root BEGIN; --Testcase 53: DELETE FROM FLOAT8_TBL; --Testcase 54: INSERT INTO FLOAT8_TBL VALUES ('64'::float8); --Testcase 55: SELECT sqrt(f1) as eight FROM FLOAT8_TBL; eight ------- 8 (1 row) --Testcase 56: SELECT |/f1 as eight FROM FLOAT8_TBL; eight ------- 8 (1 row) ROLLBACK; --Testcase 57: SELECT '' AS three, f.f1, |/f.f1 AS sqrt_f1 FROM FLOAT8_TBL f WHERE f.f1 > '0.0'; three | f1 | sqrt_f1 -------+----------------------+----------------------- | 1004.3 | 31.6906926399535 | 1.2345678901234e+200 | 1.11111110611109e+100 | 1.2345678901234e-200 | 1.11111110611109e-100 (3 rows) -- power --Testcase 58: DELETE FROM FLOAT8_TMP; --Testcase 143: INSERT INTO FLOAT8_TMP VALUES ('144'::float8, '0.5'::float8); --Testcase 144: SELECT power(f1, f2) FROM FLOAT8_TMP; power ------- 12 (1 row) --Testcase 60: DELETE FROM FLOAT8_TMP; --Testcase 145: INSERT INTO FLOAT8_TMP VALUES ('NaN'::float8, '0.5'::float8); --Testcase 146: SELECT power(f1, f2) FROM FLOAT8_TMP; power ------- (1 row) --Testcase 61: DELETE FROM FLOAT8_TMP; --Testcase 147: INSERT INTO FLOAT8_TMP VALUES ('144'::float8, 'NaN'::float8); --Testcase 148: SELECT power(f1, f2) FROM FLOAT8_TMP; power ------- (1 row) --Testcase 62: DELETE FROM FLOAT8_TMP; --Testcase 149: INSERT INTO FLOAT8_TMP VALUES ('NaN'::float8, 'NaN'::float8); --Testcase 150: SELECT power(f1, f2) FROM FLOAT8_TMP; power ------- (1 row) --Testcase 63: DELETE FROM FLOAT8_TMP; --Testcase 151: INSERT INTO FLOAT8_TMP VALUES ('-1'::float8, 'NaN'::float8); --Testcase 152: SELECT power(f1, f2) FROM FLOAT8_TMP; power ------- (1 row) --Testcase 64: DELETE FROM FLOAT8_TMP; --Testcase 153: INSERT INTO FLOAT8_TMP VALUES ('1'::float8, 'NaN'::float8); --Testcase 154: SELECT power(f1, f2) FROM FLOAT8_TMP; power ------- (1 row) --Testcase 65: DELETE FROM FLOAT8_TMP; --Testcase 155: INSERT INTO FLOAT8_TMP VALUES ('NaN'::float8 , '0'::float8); --Testcase 156: SELECT power(f1, f2) FROM FLOAT8_TMP; power ------- (1 row) -- take exp of ln(f.f1) --Testcase 67: SELECT '' AS three, f.f1, exp(ln(f.f1)) AS exp_ln_f1 FROM FLOAT8_TBL f WHERE f.f1 > '0.0'; three | f1 | exp_ln_f1 -------+----------------------+----------------------- | 1004.3 | 1004.3 | 1.2345678901234e+200 | 1.23456789012338e+200 | 1.2345678901234e-200 | 1.23456789012339e-200 (3 rows) -- cube root BEGIN; --Testcase 68: DELETE FROM FLOAT8_TBL; --Testcase 69: INSERT INTO FLOAT8_TBL VALUES ('27'::float8); --Testcase 70: SELECT ||/f1 as three FROM FLOAT8_TBL; three ------- 3 (1 row) ROLLBACK; --Testcase 71: SELECT '' AS five, f.f1, ||/f.f1 AS cbrt_f1 FROM FLOAT8_TBL f; five | f1 | cbrt_f1 ------+----------------------+---------------------- | 0 | 0 | 1004.3 | 10.014312837827 | -34.84 | -3.26607421344208 | 1.2345678901234e+200 | 4.97933859234765e+66 | 1.2345678901234e-200 | 2.3112042409018e-67 (5 rows) --Testcase 72: SELECT '' AS five, * FROM FLOAT8_TBL; five | f1 ------+---------------------- | 0 | 1004.3 | -34.84 | 1.2345678901234e+200 | 1.2345678901234e-200 (5 rows) --Testcase 73: UPDATE FLOAT8_TBL SET f1 = FLOAT8_TBL.f1 * '-1' WHERE FLOAT8_TBL.f1 > '0.0'; --Testcase 74: SELECT '' AS bad, f.f1 * '1e200' from FLOAT8_TBL f; ERROR: value out of range: overflow --Testcase 75: SELECT '' AS bad, f.f1 ^ '1e200' from FLOAT8_TBL f; ERROR: value out of range: overflow BEGIN; --Testcase 76: DELETE FROM FLOAT8_TBL; --Testcase 77: INSERT INTO FLOAT8_TBL VALUES (0 ^ 0 + 0 ^ 1 + 0 ^ 0.0 + 0 ^ 0.5); --Testcase 78: SELECT * FROM FLOAT8_TBL; f1 ---- 2 (1 row) ROLLBACK; --Testcase 79: SELECT '' AS bad, ln(f.f1) from FLOAT8_TBL f where f.f1 = '0.0' ; ERROR: cannot take logarithm of zero --Testcase 80: SELECT '' AS bad, ln(f.f1) from FLOAT8_TBL f where f.f1 < '0.0' ; ERROR: cannot take logarithm of a negative number --Testcase 81: SELECT '' AS bad, exp(f.f1) from FLOAT8_TBL f; ERROR: value out of range: underflow --Testcase 82: SELECT '' AS bad, f.f1 / '0.0' from FLOAT8_TBL f; ERROR: division by zero --Testcase 83: SELECT '' AS five, * FROM FLOAT8_TBL; five | f1 ------+----------------------- | 0 | -1004.3 | -34.84 | -1.2345678901234e+200 | -1.2345678901234e-200 (5 rows) -- hyperbolic functions -- we run these with extra_float_digits = 0 too, since different platforms -- tend to produce results that vary in the last place. --Testcase 157: DELETE FROM FLOAT8_TMP; --Testcase 158: INSERT INTO FLOAT8_TMP(f1) VALUES (1); --Testcase 159: SELECT sinh(f1) FROM FLOAT8_TMP; sinh ----------------- 1.1752011936438 (1 row) --Testcase 160: SELECT cosh(f1) FROM FLOAT8_TMP; cosh ------------------ 1.54308063481524 (1 row) --Testcase 161: SELECT tanh(f1) FROM FLOAT8_TMP; tanh ------------------- 0.761594155955765 (1 row) --Testcase 162: SELECT asinh(f1) FROM FLOAT8_TMP; asinh ------------------- 0.881373587019543 (1 row) --Testcase 163: DELETE FROM FLOAT8_TMP; --Testcase 164: INSERT INTO FLOAT8_TMP(f1) VALUES (2); --Testcase 165: SELECT acosh(f1) FROM FLOAT8_TMP; acosh ------------------ 1.31695789692482 (1 row) --Testcase 166: DELETE FROM FLOAT8_TMP; --Testcase 167: INSERT INTO FLOAT8_TMP(f1) VALUES (0.5); --Testcase 168: SELECT atanh(f1) FROM FLOAT8_TMP; atanh ------------------- 0.549306144334055 (1 row) -- test Inf/NaN cases for hyperbolic functions --Testcase 169: DELETE FROM FLOAT8_TMP; --Testcase 170: INSERT INTO FLOAT8_TMP(f1) VALUES (float8 'infinity'); --Testcase 171: SELECT sinh(f1) FROM FLOAT8_TMP; sinh ---------- Infinity (1 row) --Testcase 172: DELETE FROM FLOAT8_TMP; --Testcase 173: INSERT INTO FLOAT8_TMP(f1) VALUES (float8 '-infinity'); --Testcase 174: SELECT sinh(f1) FROM FLOAT8_TMP; sinh ----------- -Infinity (1 row) --Testcase 175: DELETE FROM FLOAT8_TMP; --Testcase 176: INSERT INTO FLOAT8_TMP(f1) VALUES (float8 'nan'); --Testcase 177: SELECT sinh(f1) FROM FLOAT8_TMP; sinh ------ (1 row) --Testcase 178: DELETE FROM FLOAT8_TMP; --Testcase 179: INSERT INTO FLOAT8_TMP(f1) VALUES (float8 'infinity'); --Testcase 180: SELECT cosh(f1) FROM FLOAT8_TMP; cosh ---------- Infinity (1 row) --Testcase 181: DELETE FROM FLOAT8_TMP; --Testcase 182: INSERT INTO FLOAT8_TMP(f1) VALUES (float8 '-infinity'); --Testcase 183: SELECT cosh(f1) FROM FLOAT8_TMP; cosh ---------- Infinity (1 row) --Testcase 184: DELETE FROM FLOAT8_TMP; --Testcase 185: INSERT INTO FLOAT8_TMP(f1) VALUES (float8 'nan'); --Testcase 186: SELECT cosh(f1) FROM FLOAT8_TMP; cosh ------ (1 row) --Testcase 187: DELETE FROM FLOAT8_TMP; --Testcase 188: INSERT INTO FLOAT8_TMP(f1) VALUES (float8 'infinity'); --Testcase 189: SELECT tanh(f1) FROM FLOAT8_TMP; tanh ------ 1 (1 row) --Testcase 190: DELETE FROM FLOAT8_TMP; --Testcase 191: INSERT INTO FLOAT8_TMP(f1) VALUES (float8 '-infinity'); --Testcase 192: SELECT tanh(f1) FROM FLOAT8_TMP; tanh ------ -1 (1 row) --Testcase 193: DELETE FROM FLOAT8_TMP; --Testcase 194: INSERT INTO FLOAT8_TMP(f1) VALUES (float8 'nan'); --Testcase 195: SELECT tanh(f1) FROM FLOAT8_TMP; tanh ------ (1 row) --Testcase 196: DELETE FROM FLOAT8_TMP; --Testcase 197: INSERT INTO FLOAT8_TMP(f1) VALUES (float8 'infinity'); --Testcase 198: SELECT asinh(f1) FROM FLOAT8_TMP; asinh ---------- Infinity (1 row) --Testcase 199: DELETE FROM FLOAT8_TMP; --Testcase 200: INSERT INTO FLOAT8_TMP(f1) VALUES (float8 '-infinity'); --Testcase 201: SELECT asinh(f1) FROM FLOAT8_TMP; asinh ----------- -Infinity (1 row) --Testcase 202: DELETE FROM FLOAT8_TMP; --Testcase 203: INSERT INTO FLOAT8_TMP(f1) VALUES (float8 'nan'); --Testcase 204: SELECT asinh(f1) FROM FLOAT8_TMP; asinh ------- (1 row) -- acosh(Inf) should be Inf, but some mingw versions produce NaN, so skip test -- SELECT acosh(float8 'infinity'); --Testcase 205: DELETE FROM FLOAT8_TMP; --Testcase 206: INSERT INTO FLOAT8_TMP VALUES (float8 '-infinity'); --Testcase 207: SELECT acosh(f1) FROM FLOAT8_TMP; ERROR: input is out of range --Testcase 208: DELETE FROM FLOAT8_TMP; --Testcase 209: INSERT INTO FLOAT8_TMP VALUES ((float8 'nan')); --Testcase 210: SELECT acosh(f1) FROM FLOAT8_TMP; acosh ------- (1 row) --Testcase 211: DELETE FROM FLOAT8_TMP; --Testcase 212: INSERT INTO FLOAT8_TMP VALUES ((float8 'infinity')); --Testcase 213: SELECT atanh(f1) FROM FLOAT8_TMP; ERROR: input is out of range --Testcase 214: DELETE FROM FLOAT8_TMP; --Testcase 215: INSERT INTO FLOAT8_TMP VALUES ((float8 '-infinity')); --Testcase 216: SELECT atanh(f1) FROM FLOAT8_TMP; ERROR: input is out of range --Testcase 217: DELETE FROM FLOAT8_TMP; --Testcase 218: INSERT INTO FLOAT8_TMP VALUES ((float8 'nan')); --Testcase 219: SELECT atanh(f1) FROM FLOAT8_TMP; atanh ------- (1 row) RESET extra_float_digits; -- test for over- and underflow --Testcase 84: INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400'); ERROR: "10e400" is out of range for type double precision LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400'); ^ --Testcase 85: INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400'); ERROR: "-10e400" is out of range for type double precision LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400'); ^ --Testcase 86: INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400'); ERROR: "10e-400" is out of range for type double precision LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400'); ^ --Testcase 87: INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400'); ERROR: "-10e-400" is out of range for type double precision LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400'); ^ -- maintain external table consistency across platforms -- delete all values and reinsert well-behaved ones --Testcase 88: DELETE FROM FLOAT8_TBL; --Testcase 89: INSERT INTO FLOAT8_TBL(f1) VALUES ('0.0'); --Testcase 90: INSERT INTO FLOAT8_TBL(f1) VALUES ('-34.84'); --Testcase 91: INSERT INTO FLOAT8_TBL(f1) VALUES ('-1004.30'); --Testcase 92: INSERT INTO FLOAT8_TBL(f1) VALUES ('-1.2345678901234e+200'); --Testcase 93: INSERT INTO FLOAT8_TBL(f1) VALUES ('-1.2345678901234e-200'); --Testcase 94: SELECT '' AS five, * FROM FLOAT8_TBL; five | f1 ------+----------------------- | 0 | -34.84 | -1004.3 | -1.2345678901234e+200 | -1.2345678901234e-200 (5 rows) -- test edge-case coercions to integer --Testcase 220: DELETE FROM FLOAT8_TMP; --Testcase 221: INSERT INTO FLOAT8_TMP VALUES ('32767.4'::float8); --Testcase 222: SELECT f1::int2 FROM FLOAT8_TMP; f1 ------- 32767 (1 row) --Testcase 223: DELETE FROM FLOAT8_TMP; --Testcase 224: INSERT INTO FLOAT8_TMP VALUES ('32767.6'::float8); --Testcase 225: SELECT f1::int2 FROM FLOAT8_TMP; ERROR: smallint out of range --Testcase 226: DELETE FROM FLOAT8_TMP; --Testcase 227: INSERT INTO FLOAT8_TMP VALUES ('-32768.4'::float8); --Testcase 228: SELECT f1::int2 FROM FLOAT8_TMP; f1 -------- -32768 (1 row) --Testcase 229: DELETE FROM FLOAT8_TMP; --Testcase 230: INSERT INTO FLOAT8_TMP VALUES ('-32768.6'::float8); --Testcase 231: SELECT f1::int2 FROM FLOAT8_TMP; ERROR: smallint out of range --Testcase 232: DELETE FROM FLOAT8_TMP; --Testcase 233: INSERT INTO FLOAT8_TMP VALUES ('2147483647.4'::float8); --Testcase 234: SELECT f1::int4 FROM FLOAT8_TMP; f1 ------------ 2147483647 (1 row) --Testcase 235: DELETE FROM FLOAT8_TMP; --Testcase 236: INSERT INTO FLOAT8_TMP VALUES ('2147483647.6'::float8); --Testcase 237: SELECT f1::int4 FROM FLOAT8_TMP; ERROR: integer out of range --Testcase 238: DELETE FROM FLOAT8_TMP; --Testcase 239: INSERT INTO FLOAT8_TMP VALUES ('-2147483648.4'::float8); --Testcase 240: SELECT f1::int4 FROM FLOAT8_TMP; f1 ------------- -2147483648 (1 row) --Testcase 241: DELETE FROM FLOAT8_TMP; --Testcase 242: INSERT INTO FLOAT8_TMP VALUES ('-2147483648.6'::float8); --Testcase 243: SELECT f1::int4 FROM FLOAT8_TMP; ERROR: integer out of range --Testcase 244: DELETE FROM FLOAT8_TMP; --Testcase 245: INSERT INTO FLOAT8_TMP VALUES ('9223372036854773760'::float8); --Testcase 246: SELECT f1::int8 FROM FLOAT8_TMP; f1 --------------------- 9223372036854773760 (1 row) --Testcase 247: DELETE FROM FLOAT8_TMP; --Testcase 248: INSERT INTO FLOAT8_TMP VALUES ('9223372036854775807'::float8); --Testcase 249: SELECT f1::int8 FROM FLOAT8_TMP; ERROR: bigint out of range --Testcase 250: DELETE FROM FLOAT8_TMP; --Testcase 251: INSERT INTO FLOAT8_TMP VALUES ('-9223372036854775808.5'::float8); --Testcase 252: SELECT f1::int8 FROM FLOAT8_TMP; f1 ---------------------- -9223372036854775808 (1 row) --Testcase 253: DELETE FROM FLOAT8_TMP; --Testcase 254: INSERT INTO FLOAT8_TMP VALUES ('-9223372036854780000'::float8); --Testcase 255: SELECT f1::int8 FROM FLOAT8_TMP; ERROR: bigint out of range -- test exact cases for trigonometric functions in degrees BEGIN; --Testcase 95: DELETE FROM FLOAT8_TBL; --Testcase 96: INSERT INTO FLOAT8_TBL VALUES (0), (30), (90), (150), (180), (210), (270), (330), (360); --Testcase 97: SELECT f1, sind(f1), sind(f1) IN (-1,-0.5,0,0.5,1) AS sind_exact FROM FLOAT8_TBL; f1 | sind | sind_exact -----+------+------------ 0 | 0 | t 30 | 0.5 | t 90 | 1 | t 150 | 0.5 | t 180 | 0 | t 210 | -0.5 | t 270 | -1 | t 330 | -0.5 | t 360 | 0 | t (9 rows) --Testcase 98: DELETE FROM FLOAT8_TBL; --Testcase 99: INSERT INTO FLOAT8_TBL VALUES (0), (60), (90), (120), (180), (240), (270), (300), (360); --Testcase 100: SELECT f1, cosd(f1), cosd(f1) IN (-1,-0.5,0,0.5,1) AS cosd_exact FROM FLOAT8_TBL; f1 | cosd | cosd_exact -----+------+------------ 0 | 1 | t 60 | 0.5 | t 90 | 0 | t 120 | -0.5 | t 180 | -1 | t 240 | -0.5 | t 270 | 0 | t 300 | 0.5 | t 360 | 1 | t (9 rows) --Testcase 101: DELETE FROM FLOAT8_TBL; --Testcase 102: INSERT INTO FLOAT8_TBL VALUES (0), (45), (90), (135), (180), (225), (270), (315), (360); --Testcase 103: SELECT f1, tand(f1), tand(f1) IN ('-Infinity'::float8,-1,0, 1,'Infinity'::float8) AS tand_exact, cotd(f1), cotd(f1) IN ('-Infinity'::float8,-1,0, 1,'Infinity'::float8) AS cotd_exact FROM FLOAT8_TBL; f1 | tand | tand_exact | cotd | cotd_exact -----+-----------+------------+-----------+------------ 0 | 0 | t | Infinity | t 45 | 1 | t | 1 | t 90 | Infinity | t | 0 | t 135 | -1 | t | -1 | t 180 | 0 | t | -Infinity | t 225 | 1 | t | 1 | t 270 | -Infinity | t | 0 | t 315 | -1 | t | -1 | t 360 | 0 | t | Infinity | t (9 rows) --Testcase 104: DELETE FROM FLOAT8_TBL; --Testcase 105: INSERT INTO FLOAT8_TBL VALUES (-1), (-0.5), (0), (0.5), (1); --Testcase 106: SELECT f1, asind(f1), asind(f1) IN (-90,-30,0,30,90) AS asind_exact, acosd(f1), acosd(f1) IN (0,60,90,120,180) AS acosd_exact FROM FLOAT8_TBL; f1 | asind | asind_exact | acosd | acosd_exact ------+-------+-------------+-------+------------- -1 | -90 | t | 180 | t -0.5 | -30 | t | 120 | t 0 | 0 | t | 90 | t 0.5 | 30 | t | 60 | t 1 | 90 | t | 0 | t (5 rows) --Testcase 107: DELETE FROM FLOAT8_TBL; --Testcase 108: INSERT INTO FLOAT8_TBL VALUES ('-Infinity'::float8), (-1), (0), (1), ('Infinity'::float8); --Testcase 109: SELECT f1, atand(f1), atand(f1) IN (-90,-45,0,45,90) AS atand_exact FROM FLOAT8_TBL; f1 | atand | atand_exact -----------+-------+------------- -Infinity | -90 | t -1 | -45 | t 0 | 0 | t 1 | 45 | t Infinity | 90 | t (5 rows) --Testcase 110: DELETE FROM FLOAT8_TBL; --Testcase 111: INSERT INTO FLOAT8_TBL SELECT * FROM generate_series(0, 360, 90); --Testcase 112: SELECT x, y, atan2d(y, x), atan2d(y, x) IN (-90,0,90,180) AS atan2d_exact FROM (SELECT 10*cosd(f1), 10*sind(f1) FROM FLOAT8_TBL) AS t(x,y); x | y | atan2d | atan2d_exact -----+-----+--------+-------------- 10 | 0 | 0 | t 0 | 10 | 90 | t -10 | 0 | 180 | t 0 | -10 | -90 | t 10 | 0 | 0 | t (5 rows) ROLLBACK; -- -- test output (and round-trip safety) of various values. -- To ensure we're testing what we think we're testing, start with -- float values specified by bit patterns (as a useful side effect, -- this means we'll fail on non-IEEE platforms). --Testcase 256: create type xfloat8; --Testcase 257: create function xfloat8in(cstring) returns xfloat8 immutable strict language internal as 'int8in'; NOTICE: return type xfloat8 is only a shell --Testcase 258: create function xfloat8out(xfloat8) returns cstring immutable strict language internal as 'int8out'; NOTICE: argument type xfloat8 is only a shell --Testcase 259: create type xfloat8 (input = xfloat8in, output = xfloat8out, like = float8); --Testcase 260: create cast (xfloat8 as float8) without function; --Testcase 261: create cast (float8 as xfloat8) without function; --Testcase 262: create cast (xfloat8 as bigint) without function; --Testcase 263: create cast (bigint as xfloat8) without function; -- float8: seeeeeee eeeeeeee eeeeeeee mmmmmmmm mmmmmmmm(x4) -- we don't care to assume the platform's strtod() handles subnormals -- correctly; those are "use at your own risk". However we do test -- subnormal outputs, since those are under our control. --Testcase 264: create foreign table testdata(bits text, id int OPTIONS (key 'true')) server sqlite_svr; begin; --Testcase 265: insert into testdata(bits) values -- small subnormals (x'0000000000000001'), (x'0000000000000002'), (x'0000000000000003'), (x'0000000000001000'), (x'0000000100000000'), (x'0000010000000000'), (x'0000010100000000'), (x'0000400000000000'), (x'0000400100000000'), (x'0000800000000000'), (x'0000800000000001'), -- these values taken from upstream testsuite (x'00000000000f4240'), (x'00000000016e3600'), (x'0000008cdcdea440'), -- borderline between subnormal and normal (x'000ffffffffffff0'), (x'000ffffffffffff1'), (x'000ffffffffffffe'), (x'000fffffffffffff'); --Testcase 266: select float8send(flt) as ibits, flt from (select bits::bit(64)::bigint::xfloat8::float8 as flt from testdata offset 0) s; ibits | flt --------------------+------------------------- \x0000000000000001 | 5e-324 \x0000000000000002 | 1e-323 \x0000000000000003 | 1.5e-323 \x0000000000001000 | 2.0237e-320 \x0000000100000000 | 2.121995791e-314 \x0000010000000000 | 5.43230922487e-312 \x0000010100000000 | 5.45352918278e-312 \x0000400000000000 | 3.4766779039175e-310 \x0000400100000000 | 3.4768901034966e-310 \x0000800000000000 | 6.953355807835e-310 \x0000800000000001 | 6.95335580783505e-310 \x00000000000f4240 | 4.940656e-318 \x00000000016e3600 | 1.18575755e-316 \x0000008cdcdea440 | 2.989102097996e-312 \x000ffffffffffff0 | 2.2250738585071935e-308 \x000ffffffffffff1 | 2.225073858507194e-308 \x000ffffffffffffe | 2.2250738585072004e-308 \x000fffffffffffff | 2.225073858507201e-308 (18 rows) rollback; -- round-trip tests begin; --Testcase 267: insert into testdata(bits) values (x'0000000000000000'), -- smallest normal values (x'0010000000000000'), (x'0010000000000001'), (x'0010000000000002'), (x'0018000000000000'), -- (x'3ddb7cdfd9d7bdba'), (x'3ddb7cdfd9d7bdbb'), (x'3ddb7cdfd9d7bdbc'), (x'3e112e0be826d694'), (x'3e112e0be826d695'), (x'3e112e0be826d696'), (x'3e45798ee2308c39'), (x'3e45798ee2308c3a'), (x'3e45798ee2308c3b'), (x'3e7ad7f29abcaf47'), (x'3e7ad7f29abcaf48'), (x'3e7ad7f29abcaf49'), (x'3eb0c6f7a0b5ed8c'), (x'3eb0c6f7a0b5ed8d'), (x'3eb0c6f7a0b5ed8e'), (x'3ee4f8b588e368ef'), (x'3ee4f8b588e368f0'), (x'3ee4f8b588e368f1'), (x'3f1a36e2eb1c432c'), (x'3f1a36e2eb1c432d'), (x'3f1a36e2eb1c432e'), (x'3f50624dd2f1a9fb'), (x'3f50624dd2f1a9fc'), (x'3f50624dd2f1a9fd'), (x'3f847ae147ae147a'), (x'3f847ae147ae147b'), (x'3f847ae147ae147c'), (x'3fb9999999999999'), (x'3fb999999999999a'), (x'3fb999999999999b'), -- values very close to 1 (x'3feffffffffffff0'), (x'3feffffffffffff1'), (x'3feffffffffffff2'), (x'3feffffffffffff3'), (x'3feffffffffffff4'), (x'3feffffffffffff5'), (x'3feffffffffffff6'), (x'3feffffffffffff7'), (x'3feffffffffffff8'), (x'3feffffffffffff9'), (x'3feffffffffffffa'), (x'3feffffffffffffb'), (x'3feffffffffffffc'), (x'3feffffffffffffd'), (x'3feffffffffffffe'), (x'3fefffffffffffff'), (x'3ff0000000000000'), (x'3ff0000000000001'), (x'3ff0000000000002'), (x'3ff0000000000003'), (x'3ff0000000000004'), (x'3ff0000000000005'), (x'3ff0000000000006'), (x'3ff0000000000007'), (x'3ff0000000000008'), (x'3ff0000000000009'), -- (x'3ff921fb54442d18'), (x'4005bf0a8b14576a'), (x'400921fb54442d18'), -- (x'4023ffffffffffff'), (x'4024000000000000'), (x'4024000000000001'), (x'4058ffffffffffff'), (x'4059000000000000'), (x'4059000000000001'), (x'408f3fffffffffff'), (x'408f400000000000'), (x'408f400000000001'), (x'40c387ffffffffff'), (x'40c3880000000000'), (x'40c3880000000001'), (x'40f869ffffffffff'), (x'40f86a0000000000'), (x'40f86a0000000001'), (x'412e847fffffffff'), (x'412e848000000000'), (x'412e848000000001'), (x'416312cfffffffff'), (x'416312d000000000'), (x'416312d000000001'), (x'4197d783ffffffff'), (x'4197d78400000000'), (x'4197d78400000001'), (x'41cdcd64ffffffff'), (x'41cdcd6500000000'), (x'41cdcd6500000001'), (x'4202a05f1fffffff'), (x'4202a05f20000000'), (x'4202a05f20000001'), (x'42374876e7ffffff'), (x'42374876e8000000'), (x'42374876e8000001'), (x'426d1a94a1ffffff'), (x'426d1a94a2000000'), (x'426d1a94a2000001'), (x'42a2309ce53fffff'), (x'42a2309ce5400000'), (x'42a2309ce5400001'), (x'42d6bcc41e8fffff'), (x'42d6bcc41e900000'), (x'42d6bcc41e900001'), (x'430c6bf52633ffff'), (x'430c6bf526340000'), (x'430c6bf526340001'), (x'4341c37937e07fff'), (x'4341c37937e08000'), (x'4341c37937e08001'), (x'4376345785d89fff'), (x'4376345785d8a000'), (x'4376345785d8a001'), (x'43abc16d674ec7ff'), (x'43abc16d674ec800'), (x'43abc16d674ec801'), (x'43e158e460913cff'), (x'43e158e460913d00'), (x'43e158e460913d01'), (x'4415af1d78b58c3f'), (x'4415af1d78b58c40'), (x'4415af1d78b58c41'), (x'444b1ae4d6e2ef4f'), (x'444b1ae4d6e2ef50'), (x'444b1ae4d6e2ef51'), (x'4480f0cf064dd591'), (x'4480f0cf064dd592'), (x'4480f0cf064dd593'), (x'44b52d02c7e14af5'), (x'44b52d02c7e14af6'), (x'44b52d02c7e14af7'), (x'44ea784379d99db3'), (x'44ea784379d99db4'), (x'44ea784379d99db5'), (x'45208b2a2c280290'), (x'45208b2a2c280291'), (x'45208b2a2c280292'), -- (x'7feffffffffffffe'), (x'7fefffffffffffff'), -- round to even tests (+ve) (x'4350000000000002'), (x'4350000000002e06'), (x'4352000000000003'), (x'4352000000000004'), (x'4358000000000003'), (x'4358000000000004'), (x'435f000000000020'), -- round to even tests (-ve) (x'c350000000000002'), (x'c350000000002e06'), (x'c352000000000003'), (x'c352000000000004'), (x'c358000000000003'), (x'c358000000000004'), (x'c35f000000000020'), -- exercise fixed-point memmoves (x'42dc12218377de66'), (x'42a674e79c5fe51f'), (x'4271f71fb04cb74c'), (x'423cbe991a145879'), (x'4206fee0e1a9e061'), (x'41d26580b487e6b4'), (x'419d6f34540ca453'), (x'41678c29dcd6e9dc'), (x'4132d687e3df217d'), (x'40fe240c9fcb68c8'), (x'40c81cd6e63c53d3'), (x'40934a4584fd0fdc'), (x'405edd3c07fb4c93'), (x'4028b0fcd32f7076'), (x'3ff3c0ca428c59f8'), -- these cases come from the upstream's testsuite -- LotsOfTrailingZeros) (x'3e60000000000000'), -- Regression (x'c352bd2668e077c4'), (x'434018601510c000'), (x'43d055dc36f24000'), (x'43e052961c6f8000'), (x'3ff3c0ca2a5b1d5d'), -- LooksLikePow5 (x'4830f0cf064dd592'), (x'4840f0cf064dd592'), (x'4850f0cf064dd592'), -- OutputLength (x'3ff3333333333333'), (x'3ff3ae147ae147ae'), (x'3ff3be76c8b43958'), (x'3ff3c083126e978d'), (x'3ff3c0c1fc8f3238'), (x'3ff3c0c9539b8887'), (x'3ff3c0ca2a5b1d5d'), (x'3ff3c0ca4283de1b'), (x'3ff3c0ca43db770a'), (x'3ff3c0ca428abd53'), (x'3ff3c0ca428c1d2b'), (x'3ff3c0ca428c51f2'), (x'3ff3c0ca428c58fc'), (x'3ff3c0ca428c59dd'), (x'3ff3c0ca428c59f8'), (x'3ff3c0ca428c59fb'), -- 32-bit chunking (x'40112e0be8047a7d'), (x'40112e0be815a889'), (x'40112e0be826d695'), (x'40112e0be83804a1'), (x'40112e0be84932ad'), -- MinMaxShift (x'0040000000000000'), (x'007fffffffffffff'), (x'0290000000000000'), (x'029fffffffffffff'), (x'4350000000000000'), (x'435fffffffffffff'), (x'1330000000000000'), (x'133fffffffffffff'), (x'3a6fa7161a4d6e0c'); --Testcase 268: select float8send(flt) as ibits, flt, flt::text::float8 as r_flt, float8send(flt::text::float8) as obits, float8send(flt::text::float8) = float8send(flt) as correct from (select bits::bit(64)::bigint::xfloat8::float8 as flt from testdata offset 0) s; ibits | flt | r_flt | obits | correct --------------------+-------------------------+-------------------------+--------------------+--------- \x0000000000000000 | 0 | 0 | \x0000000000000000 | t \x0010000000000000 | 2.2250738585072014e-308 | 2.2250738585072014e-308 | \x0010000000000000 | t \x0010000000000001 | 2.225073858507202e-308 | 2.225073858507202e-308 | \x0010000000000001 | t \x0010000000000002 | 2.2250738585072024e-308 | 2.2250738585072024e-308 | \x0010000000000002 | t \x0018000000000000 | 3.337610787760802e-308 | 3.337610787760802e-308 | \x0018000000000000 | t \x3ddb7cdfd9d7bdba | 9.999999999999999e-11 | 9.999999999999999e-11 | \x3ddb7cdfd9d7bdba | t \x3ddb7cdfd9d7bdbb | 1e-10 | 1e-10 | \x3ddb7cdfd9d7bdbb | t \x3ddb7cdfd9d7bdbc | 1.0000000000000002e-10 | 1.0000000000000002e-10 | \x3ddb7cdfd9d7bdbc | t \x3e112e0be826d694 | 9.999999999999999e-10 | 9.999999999999999e-10 | \x3e112e0be826d694 | t \x3e112e0be826d695 | 1e-09 | 1e-09 | \x3e112e0be826d695 | t \x3e112e0be826d696 | 1.0000000000000003e-09 | 1.0000000000000003e-09 | \x3e112e0be826d696 | t \x3e45798ee2308c39 | 9.999999999999999e-09 | 9.999999999999999e-09 | \x3e45798ee2308c39 | t \x3e45798ee2308c3a | 1e-08 | 1e-08 | \x3e45798ee2308c3a | t \x3e45798ee2308c3b | 1.0000000000000002e-08 | 1.0000000000000002e-08 | \x3e45798ee2308c3b | t \x3e7ad7f29abcaf47 | 9.999999999999998e-08 | 9.999999999999998e-08 | \x3e7ad7f29abcaf47 | t \x3e7ad7f29abcaf48 | 1e-07 | 1e-07 | \x3e7ad7f29abcaf48 | t \x3e7ad7f29abcaf49 | 1.0000000000000001e-07 | 1.0000000000000001e-07 | \x3e7ad7f29abcaf49 | t \x3eb0c6f7a0b5ed8c | 9.999999999999997e-07 | 9.999999999999997e-07 | \x3eb0c6f7a0b5ed8c | t \x3eb0c6f7a0b5ed8d | 1e-06 | 1e-06 | \x3eb0c6f7a0b5ed8d | t \x3eb0c6f7a0b5ed8e | 1.0000000000000002e-06 | 1.0000000000000002e-06 | \x3eb0c6f7a0b5ed8e | t \x3ee4f8b588e368ef | 9.999999999999997e-06 | 9.999999999999997e-06 | \x3ee4f8b588e368ef | t \x3ee4f8b588e368f0 | 9.999999999999999e-06 | 9.999999999999999e-06 | \x3ee4f8b588e368f0 | t \x3ee4f8b588e368f1 | 1e-05 | 1e-05 | \x3ee4f8b588e368f1 | t \x3f1a36e2eb1c432c | 9.999999999999999e-05 | 9.999999999999999e-05 | \x3f1a36e2eb1c432c | t \x3f1a36e2eb1c432d | 0.0001 | 0.0001 | \x3f1a36e2eb1c432d | t \x3f1a36e2eb1c432e | 0.00010000000000000002 | 0.00010000000000000002 | \x3f1a36e2eb1c432e | t \x3f50624dd2f1a9fb | 0.0009999999999999998 | 0.0009999999999999998 | \x3f50624dd2f1a9fb | t \x3f50624dd2f1a9fc | 0.001 | 0.001 | \x3f50624dd2f1a9fc | t \x3f50624dd2f1a9fd | 0.0010000000000000002 | 0.0010000000000000002 | \x3f50624dd2f1a9fd | t \x3f847ae147ae147a | 0.009999999999999998 | 0.009999999999999998 | \x3f847ae147ae147a | t \x3f847ae147ae147b | 0.01 | 0.01 | \x3f847ae147ae147b | t \x3f847ae147ae147c | 0.010000000000000002 | 0.010000000000000002 | \x3f847ae147ae147c | t \x3fb9999999999999 | 0.09999999999999999 | 0.09999999999999999 | \x3fb9999999999999 | t \x3fb999999999999a | 0.1 | 0.1 | \x3fb999999999999a | t \x3fb999999999999b | 0.10000000000000002 | 0.10000000000000002 | \x3fb999999999999b | t \x3feffffffffffff0 | 0.9999999999999982 | 0.9999999999999982 | \x3feffffffffffff0 | t \x3feffffffffffff1 | 0.9999999999999983 | 0.9999999999999983 | \x3feffffffffffff1 | t \x3feffffffffffff2 | 0.9999999999999984 | 0.9999999999999984 | \x3feffffffffffff2 | t \x3feffffffffffff3 | 0.9999999999999986 | 0.9999999999999986 | \x3feffffffffffff3 | t \x3feffffffffffff4 | 0.9999999999999987 | 0.9999999999999987 | \x3feffffffffffff4 | t \x3feffffffffffff5 | 0.9999999999999988 | 0.9999999999999988 | \x3feffffffffffff5 | t \x3feffffffffffff6 | 0.9999999999999989 | 0.9999999999999989 | \x3feffffffffffff6 | t \x3feffffffffffff7 | 0.999999999999999 | 0.999999999999999 | \x3feffffffffffff7 | t \x3feffffffffffff8 | 0.9999999999999991 | 0.9999999999999991 | \x3feffffffffffff8 | t \x3feffffffffffff9 | 0.9999999999999992 | 0.9999999999999992 | \x3feffffffffffff9 | t \x3feffffffffffffa | 0.9999999999999993 | 0.9999999999999993 | \x3feffffffffffffa | t \x3feffffffffffffb | 0.9999999999999994 | 0.9999999999999994 | \x3feffffffffffffb | t \x3feffffffffffffc | 0.9999999999999996 | 0.9999999999999996 | \x3feffffffffffffc | t \x3feffffffffffffd | 0.9999999999999997 | 0.9999999999999997 | \x3feffffffffffffd | t \x3feffffffffffffe | 0.9999999999999998 | 0.9999999999999998 | \x3feffffffffffffe | t \x3fefffffffffffff | 0.9999999999999999 | 0.9999999999999999 | \x3fefffffffffffff | t \x3ff0000000000000 | 1 | 1 | \x3ff0000000000000 | t \x3ff0000000000001 | 1.0000000000000002 | 1.0000000000000002 | \x3ff0000000000001 | t \x3ff0000000000002 | 1.0000000000000004 | 1.0000000000000004 | \x3ff0000000000002 | t \x3ff0000000000003 | 1.0000000000000007 | 1.0000000000000007 | \x3ff0000000000003 | t \x3ff0000000000004 | 1.0000000000000009 | 1.0000000000000009 | \x3ff0000000000004 | t \x3ff0000000000005 | 1.000000000000001 | 1.000000000000001 | \x3ff0000000000005 | t \x3ff0000000000006 | 1.0000000000000013 | 1.0000000000000013 | \x3ff0000000000006 | t \x3ff0000000000007 | 1.0000000000000016 | 1.0000000000000016 | \x3ff0000000000007 | t \x3ff0000000000008 | 1.0000000000000018 | 1.0000000000000018 | \x3ff0000000000008 | t \x3ff0000000000009 | 1.000000000000002 | 1.000000000000002 | \x3ff0000000000009 | t \x3ff921fb54442d18 | 1.5707963267948966 | 1.5707963267948966 | \x3ff921fb54442d18 | t \x4005bf0a8b14576a | 2.7182818284590455 | 2.7182818284590455 | \x4005bf0a8b14576a | t \x400921fb54442d18 | 3.141592653589793 | 3.141592653589793 | \x400921fb54442d18 | t \x4023ffffffffffff | 9.999999999999998 | 9.999999999999998 | \x4023ffffffffffff | t \x4024000000000000 | 10 | 10 | \x4024000000000000 | t \x4024000000000001 | 10.000000000000002 | 10.000000000000002 | \x4024000000000001 | t \x4058ffffffffffff | 99.99999999999999 | 99.99999999999999 | \x4058ffffffffffff | t \x4059000000000000 | 100 | 100 | \x4059000000000000 | t \x4059000000000001 | 100.00000000000001 | 100.00000000000001 | \x4059000000000001 | t \x408f3fffffffffff | 999.9999999999999 | 999.9999999999999 | \x408f3fffffffffff | t \x408f400000000000 | 1000 | 1000 | \x408f400000000000 | t \x408f400000000001 | 1000.0000000000001 | 1000.0000000000001 | \x408f400000000001 | t \x40c387ffffffffff | 9999.999999999998 | 9999.999999999998 | \x40c387ffffffffff | t \x40c3880000000000 | 10000 | 10000 | \x40c3880000000000 | t \x40c3880000000001 | 10000.000000000002 | 10000.000000000002 | \x40c3880000000001 | t \x40f869ffffffffff | 99999.99999999999 | 99999.99999999999 | \x40f869ffffffffff | t \x40f86a0000000000 | 100000 | 100000 | \x40f86a0000000000 | t \x40f86a0000000001 | 100000.00000000001 | 100000.00000000001 | \x40f86a0000000001 | t \x412e847fffffffff | 999999.9999999999 | 999999.9999999999 | \x412e847fffffffff | t \x412e848000000000 | 1000000 | 1000000 | \x412e848000000000 | t \x412e848000000001 | 1000000.0000000001 | 1000000.0000000001 | \x412e848000000001 | t \x416312cfffffffff | 9999999.999999998 | 9999999.999999998 | \x416312cfffffffff | t \x416312d000000000 | 10000000 | 10000000 | \x416312d000000000 | t \x416312d000000001 | 10000000.000000002 | 10000000.000000002 | \x416312d000000001 | t \x4197d783ffffffff | 99999999.99999999 | 99999999.99999999 | \x4197d783ffffffff | t \x4197d78400000000 | 100000000 | 100000000 | \x4197d78400000000 | t \x4197d78400000001 | 100000000.00000001 | 100000000.00000001 | \x4197d78400000001 | t \x41cdcd64ffffffff | 999999999.9999999 | 999999999.9999999 | \x41cdcd64ffffffff | t \x41cdcd6500000000 | 1000000000 | 1000000000 | \x41cdcd6500000000 | t \x41cdcd6500000001 | 1000000000.0000001 | 1000000000.0000001 | \x41cdcd6500000001 | t \x4202a05f1fffffff | 9999999999.999998 | 9999999999.999998 | \x4202a05f1fffffff | t \x4202a05f20000000 | 10000000000 | 10000000000 | \x4202a05f20000000 | t \x4202a05f20000001 | 10000000000.000002 | 10000000000.000002 | \x4202a05f20000001 | t \x42374876e7ffffff | 99999999999.99998 | 99999999999.99998 | \x42374876e7ffffff | t \x42374876e8000000 | 100000000000 | 100000000000 | \x42374876e8000000 | t \x42374876e8000001 | 100000000000.00002 | 100000000000.00002 | \x42374876e8000001 | t \x426d1a94a1ffffff | 999999999999.9999 | 999999999999.9999 | \x426d1a94a1ffffff | t \x426d1a94a2000000 | 1000000000000 | 1000000000000 | \x426d1a94a2000000 | t \x426d1a94a2000001 | 1000000000000.0001 | 1000000000000.0001 | \x426d1a94a2000001 | t \x42a2309ce53fffff | 9999999999999.998 | 9999999999999.998 | \x42a2309ce53fffff | t \x42a2309ce5400000 | 10000000000000 | 10000000000000 | \x42a2309ce5400000 | t \x42a2309ce5400001 | 10000000000000.002 | 10000000000000.002 | \x42a2309ce5400001 | t \x42d6bcc41e8fffff | 99999999999999.98 | 99999999999999.98 | \x42d6bcc41e8fffff | t \x42d6bcc41e900000 | 100000000000000 | 100000000000000 | \x42d6bcc41e900000 | t \x42d6bcc41e900001 | 100000000000000.02 | 100000000000000.02 | \x42d6bcc41e900001 | t \x430c6bf52633ffff | 999999999999999.9 | 999999999999999.9 | \x430c6bf52633ffff | t \x430c6bf526340000 | 1e+15 | 1e+15 | \x430c6bf526340000 | t \x430c6bf526340001 | 1.0000000000000001e+15 | 1.0000000000000001e+15 | \x430c6bf526340001 | t \x4341c37937e07fff | 9.999999999999998e+15 | 9.999999999999998e+15 | \x4341c37937e07fff | t \x4341c37937e08000 | 1e+16 | 1e+16 | \x4341c37937e08000 | t \x4341c37937e08001 | 1.0000000000000002e+16 | 1.0000000000000002e+16 | \x4341c37937e08001 | t \x4376345785d89fff | 9.999999999999998e+16 | 9.999999999999998e+16 | \x4376345785d89fff | t \x4376345785d8a000 | 1e+17 | 1e+17 | \x4376345785d8a000 | t \x4376345785d8a001 | 1.0000000000000002e+17 | 1.0000000000000002e+17 | \x4376345785d8a001 | t \x43abc16d674ec7ff | 9.999999999999999e+17 | 9.999999999999999e+17 | \x43abc16d674ec7ff | t \x43abc16d674ec800 | 1e+18 | 1e+18 | \x43abc16d674ec800 | t \x43abc16d674ec801 | 1.0000000000000001e+18 | 1.0000000000000001e+18 | \x43abc16d674ec801 | t \x43e158e460913cff | 9.999999999999998e+18 | 9.999999999999998e+18 | \x43e158e460913cff | t \x43e158e460913d00 | 1e+19 | 1e+19 | \x43e158e460913d00 | t \x43e158e460913d01 | 1.0000000000000002e+19 | 1.0000000000000002e+19 | \x43e158e460913d01 | t \x4415af1d78b58c3f | 9.999999999999998e+19 | 9.999999999999998e+19 | \x4415af1d78b58c3f | t \x4415af1d78b58c40 | 1e+20 | 1e+20 | \x4415af1d78b58c40 | t \x4415af1d78b58c41 | 1.0000000000000002e+20 | 1.0000000000000002e+20 | \x4415af1d78b58c41 | t \x444b1ae4d6e2ef4f | 9.999999999999999e+20 | 9.999999999999999e+20 | \x444b1ae4d6e2ef4f | t \x444b1ae4d6e2ef50 | 1e+21 | 1e+21 | \x444b1ae4d6e2ef50 | t \x444b1ae4d6e2ef51 | 1.0000000000000001e+21 | 1.0000000000000001e+21 | \x444b1ae4d6e2ef51 | t \x4480f0cf064dd591 | 9.999999999999998e+21 | 9.999999999999998e+21 | \x4480f0cf064dd591 | t \x4480f0cf064dd592 | 1e+22 | 1e+22 | \x4480f0cf064dd592 | t \x4480f0cf064dd593 | 1.0000000000000002e+22 | 1.0000000000000002e+22 | \x4480f0cf064dd593 | t \x44b52d02c7e14af5 | 9.999999999999997e+22 | 9.999999999999997e+22 | \x44b52d02c7e14af5 | t \x44b52d02c7e14af6 | 9.999999999999999e+22 | 9.999999999999999e+22 | \x44b52d02c7e14af6 | t \x44b52d02c7e14af7 | 1.0000000000000001e+23 | 1.0000000000000001e+23 | \x44b52d02c7e14af7 | t \x44ea784379d99db3 | 9.999999999999998e+23 | 9.999999999999998e+23 | \x44ea784379d99db3 | t \x44ea784379d99db4 | 1e+24 | 1e+24 | \x44ea784379d99db4 | t \x44ea784379d99db5 | 1.0000000000000001e+24 | 1.0000000000000001e+24 | \x44ea784379d99db5 | t \x45208b2a2c280290 | 9.999999999999999e+24 | 9.999999999999999e+24 | \x45208b2a2c280290 | t \x45208b2a2c280291 | 1e+25 | 1e+25 | \x45208b2a2c280291 | t \x45208b2a2c280292 | 1.0000000000000003e+25 | 1.0000000000000003e+25 | \x45208b2a2c280292 | t \x7feffffffffffffe | 1.7976931348623155e+308 | 1.7976931348623155e+308 | \x7feffffffffffffe | t \x7fefffffffffffff | 1.7976931348623157e+308 | 1.7976931348623157e+308 | \x7fefffffffffffff | t \x4350000000000002 | 1.8014398509481992e+16 | 1.8014398509481992e+16 | \x4350000000000002 | t \x4350000000002e06 | 1.8014398509529112e+16 | 1.8014398509529112e+16 | \x4350000000002e06 | t \x4352000000000003 | 2.0266198323167244e+16 | 2.0266198323167244e+16 | \x4352000000000003 | t \x4352000000000004 | 2.0266198323167248e+16 | 2.0266198323167248e+16 | \x4352000000000004 | t \x4358000000000003 | 2.7021597764222988e+16 | 2.7021597764222988e+16 | \x4358000000000003 | t \x4358000000000004 | 2.7021597764222992e+16 | 2.7021597764222992e+16 | \x4358000000000004 | t \x435f000000000020 | 3.4902897112121472e+16 | 3.4902897112121472e+16 | \x435f000000000020 | t \xc350000000000002 | -1.8014398509481992e+16 | -1.8014398509481992e+16 | \xc350000000000002 | t \xc350000000002e06 | -1.8014398509529112e+16 | -1.8014398509529112e+16 | \xc350000000002e06 | t \xc352000000000003 | -2.0266198323167244e+16 | -2.0266198323167244e+16 | \xc352000000000003 | t \xc352000000000004 | -2.0266198323167248e+16 | -2.0266198323167248e+16 | \xc352000000000004 | t \xc358000000000003 | -2.7021597764222988e+16 | -2.7021597764222988e+16 | \xc358000000000003 | t \xc358000000000004 | -2.7021597764222992e+16 | -2.7021597764222992e+16 | \xc358000000000004 | t \xc35f000000000020 | -3.4902897112121472e+16 | -3.4902897112121472e+16 | \xc35f000000000020 | t \x42dc12218377de66 | 123456789012345.6 | 123456789012345.6 | \x42dc12218377de66 | t \x42a674e79c5fe51f | 12345678901234.56 | 12345678901234.56 | \x42a674e79c5fe51f | t \x4271f71fb04cb74c | 1234567890123.456 | 1234567890123.456 | \x4271f71fb04cb74c | t \x423cbe991a145879 | 123456789012.3456 | 123456789012.3456 | \x423cbe991a145879 | t \x4206fee0e1a9e061 | 12345678901.23456 | 12345678901.23456 | \x4206fee0e1a9e061 | t \x41d26580b487e6b4 | 1234567890.123456 | 1234567890.123456 | \x41d26580b487e6b4 | t \x419d6f34540ca453 | 123456789.0123456 | 123456789.0123456 | \x419d6f34540ca453 | t \x41678c29dcd6e9dc | 12345678.90123456 | 12345678.90123456 | \x41678c29dcd6e9dc | t \x4132d687e3df217d | 1234567.890123456 | 1234567.890123456 | \x4132d687e3df217d | t \x40fe240c9fcb68c8 | 123456.7890123456 | 123456.7890123456 | \x40fe240c9fcb68c8 | t \x40c81cd6e63c53d3 | 12345.67890123456 | 12345.67890123456 | \x40c81cd6e63c53d3 | t \x40934a4584fd0fdc | 1234.567890123456 | 1234.567890123456 | \x40934a4584fd0fdc | t \x405edd3c07fb4c93 | 123.4567890123456 | 123.4567890123456 | \x405edd3c07fb4c93 | t \x4028b0fcd32f7076 | 12.34567890123456 | 12.34567890123456 | \x4028b0fcd32f7076 | t \x3ff3c0ca428c59f8 | 1.234567890123456 | 1.234567890123456 | \x3ff3c0ca428c59f8 | t \x3e60000000000000 | 2.9802322387695312e-08 | 2.9802322387695312e-08 | \x3e60000000000000 | t \xc352bd2668e077c4 | -2.1098088986959632e+16 | -2.1098088986959632e+16 | \xc352bd2668e077c4 | t \x434018601510c000 | 9.0608011534336e+15 | 9.0608011534336e+15 | \x434018601510c000 | t \x43d055dc36f24000 | 4.708356024711512e+18 | 4.708356024711512e+18 | \x43d055dc36f24000 | t \x43e052961c6f8000 | 9.409340012568248e+18 | 9.409340012568248e+18 | \x43e052961c6f8000 | t \x3ff3c0ca2a5b1d5d | 1.2345678 | 1.2345678 | \x3ff3c0ca2a5b1d5d | t \x4830f0cf064dd592 | 5.764607523034235e+39 | 5.764607523034235e+39 | \x4830f0cf064dd592 | t \x4840f0cf064dd592 | 1.152921504606847e+40 | 1.152921504606847e+40 | \x4840f0cf064dd592 | t \x4850f0cf064dd592 | 2.305843009213694e+40 | 2.305843009213694e+40 | \x4850f0cf064dd592 | t \x3ff3333333333333 | 1.2 | 1.2 | \x3ff3333333333333 | t \x3ff3ae147ae147ae | 1.23 | 1.23 | \x3ff3ae147ae147ae | t \x3ff3be76c8b43958 | 1.234 | 1.234 | \x3ff3be76c8b43958 | t \x3ff3c083126e978d | 1.2345 | 1.2345 | \x3ff3c083126e978d | t \x3ff3c0c1fc8f3238 | 1.23456 | 1.23456 | \x3ff3c0c1fc8f3238 | t \x3ff3c0c9539b8887 | 1.234567 | 1.234567 | \x3ff3c0c9539b8887 | t \x3ff3c0ca2a5b1d5d | 1.2345678 | 1.2345678 | \x3ff3c0ca2a5b1d5d | t \x3ff3c0ca4283de1b | 1.23456789 | 1.23456789 | \x3ff3c0ca4283de1b | t \x3ff3c0ca43db770a | 1.234567895 | 1.234567895 | \x3ff3c0ca43db770a | t \x3ff3c0ca428abd53 | 1.2345678901 | 1.2345678901 | \x3ff3c0ca428abd53 | t \x3ff3c0ca428c1d2b | 1.23456789012 | 1.23456789012 | \x3ff3c0ca428c1d2b | t \x3ff3c0ca428c51f2 | 1.234567890123 | 1.234567890123 | \x3ff3c0ca428c51f2 | t \x3ff3c0ca428c58fc | 1.2345678901234 | 1.2345678901234 | \x3ff3c0ca428c58fc | t \x3ff3c0ca428c59dd | 1.23456789012345 | 1.23456789012345 | \x3ff3c0ca428c59dd | t \x3ff3c0ca428c59f8 | 1.234567890123456 | 1.234567890123456 | \x3ff3c0ca428c59f8 | t \x3ff3c0ca428c59fb | 1.2345678901234567 | 1.2345678901234567 | \x3ff3c0ca428c59fb | t \x40112e0be8047a7d | 4.294967294 | 4.294967294 | \x40112e0be8047a7d | t \x40112e0be815a889 | 4.294967295 | 4.294967295 | \x40112e0be815a889 | t \x40112e0be826d695 | 4.294967296 | 4.294967296 | \x40112e0be826d695 | t \x40112e0be83804a1 | 4.294967297 | 4.294967297 | \x40112e0be83804a1 | t \x40112e0be84932ad | 4.294967298 | 4.294967298 | \x40112e0be84932ad | t \x0040000000000000 | 1.7800590868057611e-307 | 1.7800590868057611e-307 | \x0040000000000000 | t \x007fffffffffffff | 2.8480945388892175e-306 | 2.8480945388892175e-306 | \x007fffffffffffff | t \x0290000000000000 | 2.446494580089078e-296 | 2.446494580089078e-296 | \x0290000000000000 | t \x029fffffffffffff | 4.8929891601781557e-296 | 4.8929891601781557e-296 | \x029fffffffffffff | t \x4350000000000000 | 1.8014398509481984e+16 | 1.8014398509481984e+16 | \x4350000000000000 | t \x435fffffffffffff | 3.6028797018963964e+16 | 3.6028797018963964e+16 | \x435fffffffffffff | t \x1330000000000000 | 2.900835519859558e-216 | 2.900835519859558e-216 | \x1330000000000000 | t \x133fffffffffffff | 5.801671039719115e-216 | 5.801671039719115e-216 | \x133fffffffffffff | t \x3a6fa7161a4d6e0c | 3.196104012172126e-27 | 3.196104012172126e-27 | \x3a6fa7161a4d6e0c | t (209 rows) rollback; -- clean up, lest opr_sanity complain --Testcase 269: drop type xfloat8 cascade; NOTICE: drop cascades to 6 other objects DETAIL: drop cascades to function xfloat8in(cstring) drop cascades to function xfloat8out(xfloat8) drop cascades to cast from xfloat8 to double precision drop cascades to cast from double precision to xfloat8 drop cascades to cast from xfloat8 to bigint drop cascades to cast from bigint to xfloat8 -- Clean up DO $d$ declare l_rec record; begin for l_rec in (select foreign_table_schema, foreign_table_name from information_schema.foreign_tables) loop execute format('drop foreign table %I.%I cascade;', l_rec.foreign_table_schema, l_rec.foreign_table_name); end loop; end; $d$; --Testcase 270: DROP SERVER sqlite_svr; --Testcase 271: DROP EXTENSION sqlite_fdw CASCADE;