mirror of
https://git.postgresql.org/git/postgresql.git
synced 2026-02-21 05:46:59 +08:00
in UPDATE. We also now issue a NOTICE if a query has _any_ implicit range table entries -- in the past, we would only warn about implicit RTEs in SELECTs with at least one explicit RTE. As a result of the warning change, 25 of the regression tests had to be updated. I also took the opportunity to remove some bogus whitespace differences between some of the float4 and float8 variants. I believe I have correctly updated all the platform-specific variants, but let me know if that's not the case. Original patch for DELETE ... USING from Euler Taveira de Oliveira, reworked by Neil Conway.
85 lines
2.4 KiB
SQL
85 lines
2.4 KiB
SQL
--
|
|
-- FLOAT4
|
|
--
|
|
|
|
CREATE TABLE FLOAT4_TBL (f1 float4);
|
|
|
|
INSERT INTO FLOAT4_TBL(f1) VALUES (' 0.0');
|
|
INSERT INTO FLOAT4_TBL(f1) VALUES ('1004.30 ');
|
|
INSERT INTO FLOAT4_TBL(f1) VALUES (' -34.84 ');
|
|
INSERT INTO FLOAT4_TBL(f1) VALUES ('1.2345678901234e+20');
|
|
INSERT INTO FLOAT4_TBL(f1) VALUES ('1.2345678901234e-20');
|
|
|
|
-- test for over and under flow
|
|
INSERT INTO FLOAT4_TBL(f1) VALUES ('10e40');
|
|
INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e40');
|
|
INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-40');
|
|
INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-40');
|
|
|
|
-- bad input
|
|
INSERT INTO FLOAT4_TBL(f1) VALUES ('');
|
|
INSERT INTO FLOAT4_TBL(f1) VALUES (' ');
|
|
INSERT INTO FLOAT4_TBL(f1) VALUES ('xyz');
|
|
INSERT INTO FLOAT4_TBL(f1) VALUES ('5.0.0');
|
|
INSERT INTO FLOAT4_TBL(f1) VALUES ('5 . 0');
|
|
INSERT INTO FLOAT4_TBL(f1) VALUES ('5. 0');
|
|
INSERT INTO FLOAT4_TBL(f1) VALUES (' - 3.0');
|
|
INSERT INTO FLOAT4_TBL(f1) VALUES ('123 5');
|
|
|
|
-- special inputs
|
|
SELECT 'NaN'::float4;
|
|
SELECT 'nan'::float4;
|
|
SELECT ' NAN '::float4;
|
|
SELECT 'infinity'::float4;
|
|
SELECT ' -INFINiTY '::float4;
|
|
-- bad special inputs
|
|
SELECT 'N A N'::float4;
|
|
SELECT 'NaN x'::float4;
|
|
SELECT ' INFINITY x'::float4;
|
|
|
|
SELECT 'Infinity'::float4 + 100.0;
|
|
SELECT 'Infinity'::float4 / 'Infinity'::float4;
|
|
SELECT 'nan'::float4 / 'nan'::float4;
|
|
|
|
|
|
SELECT '' AS five, * FROM FLOAT4_TBL;
|
|
|
|
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE f.f1 <> '1004.3';
|
|
|
|
SELECT '' AS one, f.* FROM FLOAT4_TBL f WHERE f.f1 = '1004.3';
|
|
|
|
SELECT '' AS three, f.* FROM FLOAT4_TBL f WHERE '1004.3' > f.f1;
|
|
|
|
SELECT '' AS three, f.* FROM FLOAT4_TBL f WHERE f.f1 < '1004.3';
|
|
|
|
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE '1004.3' >= f.f1;
|
|
|
|
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE f.f1 <= '1004.3';
|
|
|
|
SELECT '' AS three, f.f1, f.f1 * '-10' AS x FROM FLOAT4_TBL f
|
|
WHERE f.f1 > '0.0';
|
|
|
|
SELECT '' AS three, f.f1, f.f1 + '-10' AS x FROM FLOAT4_TBL f
|
|
WHERE f.f1 > '0.0';
|
|
|
|
SELECT '' AS three, f.f1, f.f1 / '-10' AS x FROM FLOAT4_TBL f
|
|
WHERE f.f1 > '0.0';
|
|
|
|
SELECT '' AS three, f.f1, f.f1 - '-10' AS x FROM FLOAT4_TBL f
|
|
WHERE f.f1 > '0.0';
|
|
|
|
-- test divide by zero
|
|
SELECT '' AS bad, f.f1 / '0.0' from FLOAT4_TBL f;
|
|
|
|
SELECT '' AS five, * FROM FLOAT4_TBL;
|
|
|
|
-- test the unary float4abs operator
|
|
SELECT '' AS five, f.f1, @f.f1 AS abs_f1 FROM FLOAT4_TBL f;
|
|
|
|
UPDATE FLOAT4_TBL
|
|
SET f1 = FLOAT4_TBL.f1 * '-1'
|
|
WHERE FLOAT4_TBL.f1 > '0.0';
|
|
|
|
SELECT '' AS five, * FROM FLOAT4_TBL;
|
|
|