dongjoon-hyun commented on a change in pull request #24931: 
[SPARK-28129][SQL][TEST] Port float8.sql
URL: https://github.com/apache/spark/pull/24931#discussion_r302226777
 
 

 ##########
 File path: sql/core/src/test/resources/sql-tests/inputs/pgSQL/float8.sql
 ##########
 @@ -0,0 +1,499 @@
+--
+-- Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
+--
+--
+-- FLOAT8
+-- 
https://github.com/postgres/postgres/blob/REL_12_BETA2/src/test/regress/sql/float8.sql
+
+CREATE TABLE FLOAT8_TBL(f1 double) USING parquet;
+
+INSERT INTO FLOAT8_TBL VALUES ('    0.0   ');
+INSERT INTO FLOAT8_TBL VALUES ('1004.30  ');
+INSERT INTO FLOAT8_TBL VALUES ('   -34.84');
+INSERT INTO FLOAT8_TBL VALUES ('1.2345678901234e+200');
+INSERT INTO FLOAT8_TBL VALUES ('1.2345678901234e-200');
+
+-- [SPARK-28024] Incorrect numeric values when out of range
+-- test for underflow and overflow handling
+SELECT double('10e400');
+SELECT double('-10e400');
+SELECT double('10e-400');
+SELECT double('-10e-400');
+
+-- [SPARK-28061] Support for converting float to binary format
+-- test smallest normalized input
+-- SELECT float8send('2.2250738585072014E-308'::float8);
+
+-- [SPARK-27923] Spark SQL insert there bad inputs to NULL
+-- bad input
+-- INSERT INTO FLOAT8_TBL VALUES ('');
+-- INSERT INTO FLOAT8_TBL VALUES ('     ');
+-- INSERT INTO FLOAT8_TBL VALUES ('xyz');
+-- INSERT INTO FLOAT8_TBL VALUES ('5.0.0');
+-- INSERT INTO FLOAT8_TBL VALUES ('5 . 0');
+-- INSERT INTO FLOAT8_TBL VALUES ('5.   0');
+-- INSERT INTO FLOAT8_TBL VALUES ('    - 3');
+-- INSERT INTO FLOAT8_TBL VALUES ('123           5');
+
+-- special inputs
+SELECT double('NaN');
+-- [SPARK-28060] Double type can not accept some special inputs
+SELECT double('nan');
+SELECT double('   NAN  ');
+SELECT double('infinity');
+SELECT double('          -INFINiTY   ');
+-- [SPARK-27923] Spark SQL insert there bad special inputs to NULL
+-- bad special inputs
+SELECT double('N A N');
+SELECT double('NaN x');
+SELECT double(' INFINITY    x');
+
+-- [SPARK-28060] Double type can not accept some special inputs
+SELECT double('Infinity') + 100.0;
+SELECT double('Infinity') / double('Infinity');
+SELECT double('nan') / double('nan');
+SELECT double(decimal('nan'));
+
+SELECT '' AS five, * FROM FLOAT8_TBL;
+
+SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <> '1004.3';
+
+SELECT '' AS one, f.* FROM FLOAT8_TBL f WHERE f.f1 = '1004.3';
+
+SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE '1004.3' > f.f1;
+
+SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE  f.f1 < '1004.3';
+
+SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE '1004.3' >= f.f1;
+
+SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE  f.f1 <= '1004.3';
+
+SELECT '' AS three, f.f1, f.f1 * '-10' AS x
+   FROM FLOAT8_TBL f
+   WHERE f.f1 > '0.0';
+
+SELECT '' AS three, f.f1, f.f1 + '-10' AS x
+   FROM FLOAT8_TBL f
+   WHERE f.f1 > '0.0';
+
+SELECT '' AS three, f.f1, f.f1 / '-10' AS x
+   FROM FLOAT8_TBL f
+   WHERE f.f1 > '0.0';
+
+SELECT '' AS three, f.f1, f.f1 - '-10' AS x
+   FROM FLOAT8_TBL f
+   WHERE f.f1 > '0.0';
+-- [SPARK-28007] Caret operator (^) means bitwise XOR in Spark/Hive and 
exponentiation in Postgres
+-- SELECT '' AS one, f.f1 ^ '2.0' AS square_f1
+--    FROM FLOAT8_TBL f where f.f1 = '1004.3';
+
+-- [SPARK-28027] Spark SQL does not support prefix operator @
+-- absolute value
+-- SELECT '' AS five, f.f1, @f.f1 AS abs_f1
+--    FROM FLOAT8_TBL f;
+
+-- [SPARK-23906] Support Truncate number
+-- truncate
+-- SELECT '' AS five, f.f1, trunc(f.f1) AS trunc_f1
+--    FROM FLOAT8_TBL f;
+
+-- round
+SELECT '' AS five, f.f1, round(f.f1) AS round_f1
+   FROM FLOAT8_TBL f;
+
+-- [SPARK-28135] ceil/ceiling/floor returns incorrect values
+-- ceil / ceiling
+select ceil(f1) as ceil_f1 from float8_tbl f;
+select ceiling(f1) as ceiling_f1 from float8_tbl f;
+
+-- floor
+select floor(f1) as floor_f1 from float8_tbl f;
+
+-- sign
+select sign(f1) as sign_f1 from float8_tbl f;
+
+-- avoid bit-exact output here because operations may not be bit-exact.
+-- SET extra_float_digits = 0;
+
+-- square root
+SELECT sqrt(double('64')) AS eight;
+
+-- [SPARK-28027] Spark SQL does not support prefix operator |/
+-- SELECT |/ float8 '64' AS eight;
+
+-- SELECT '' AS three, f.f1, |/f.f1 AS sqrt_f1
+--    FROM FLOAT8_TBL f
+--    WHERE f.f1 > '0.0';
+
+-- power
+SELECT power(double('144'), double('0.5'));
+SELECT power(double('NaN'), double('0.5'));
+SELECT power(double('144'), double('NaN'));
+SELECT power(double('NaN'), double('NaN'));
+SELECT power(double('-1'), double('NaN'));
+-- [SPARK-28135] power returns incorrect values
+SELECT power(double('1'), double('NaN'));
+SELECT power(double('NaN'), double('0'));
+
+-- take exp of ln(f.f1)
+SELECT '' AS three, f.f1, exp(ln(f.f1)) AS exp_ln_f1
+   FROM FLOAT8_TBL f
+   WHERE f.f1 > '0.0';
+
+-- [SPARK-28027] Spark SQL does not support prefix operator ||/
+-- cube root
+-- SELECT ||/ float8 '27' AS three;
+
+-- SELECT '' AS five, f.f1, ||/f.f1 AS cbrt_f1 FROM FLOAT8_TBL f;
+
+
+SELECT '' AS five, * FROM FLOAT8_TBL;
+
+-- UPDATE FLOAT8_TBL
+--    SET f1 = FLOAT8_TBL.f1 * '-1'
+--    WHERE FLOAT8_TBL.f1 > '0.0';
+-- Update the FLOAT8_TBL to UPDATED_FLOAT8_TBL
+CREATE TEMPORARY VIEW UPDATED_FLOAT8_TBL as
+SELECT
+  CASE WHEN FLOAT8_TBL.f1 > '0.0' THEN FLOAT8_TBL.f1 * '-1' ELSE FLOAT8_TBL.f1 
END AS f1
+FROM FLOAT8_TBL;
+
+-- [SPARK-27923] Out of range, Spark SQL returns Infinity
+SELECT '' AS bad, f.f1 * '1e200' from UPDATED_FLOAT8_TBL f;
+
+-- [SPARK-28007] Caret operator (^) means bitwise XOR in Spark/Hive and 
exponentiation in Postgres
+-- SELECT '' AS bad, f.f1 ^ '1e200' from UPDATED_FLOAT8_TBL f;
+
+-- SELECT 0 ^ 0 + 0 ^ 1 + 0 ^ 0.0 + 0 ^ 0.5;
+
+-- [SPARK-27923] Cannot take logarithm of zero
+-- SELECT '' AS bad, ln(f.f1) from UPDATED_FLOAT8_TBL f where f.f1 = '0.0' ;
+
+-- [SPARK-27923] Cannot take logarithm of a negative number
+-- SELECT '' AS bad, ln(f.f1) from UPDATED_FLOAT8_TBL f where f.f1 < '0.0' ;
+
+-- [SPARK-28024] Incorrect numeric values when out of range
+-- SELECT '' AS bad, exp(f.f1) from UPDATED_FLOAT8_TBL f;
+
+-- [SPARK-27923] Divide by zero, Spark SQL returns NULL
+-- SELECT '' AS bad, f.f1 / '0.0' from UPDATED_FLOAT8_TBL f;
+
+SELECT '' AS five, * FROM UPDATED_FLOAT8_TBL;
+
+-- [SPARK-28133] Missing hyperbolic functions
 
 Review comment:
   Ah. I got this. This is blocked by #25041 because this is a new feature in 
Presto 12.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to