diff --git a/sql/provsql.sql b/sql/provsql.sql index 8995eb2..8e73106 100644 --- a/sql/provsql.sql +++ b/sql/provsql.sql @@ -234,7 +234,7 @@ $$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE; CREATE OR REPLACE FUNCTION epsilon() RETURNS DOUBLE PRECISION AS $$ - SELECT 0.001 + SELECT CAST(0.001 AS DOUBLE PRECISION) $$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE; CREATE OR REPLACE FUNCTION provenance_times(VARIADIC tokens uuid[]) @@ -688,10 +688,10 @@ BEGIN ELSE RAISE EXCEPTION USING MESSAGE='Cannot compute expected value for aggregation function ' || aggregation_function; END IF; - IF prov <> gate_one() AND result <> 0. THEN + IF prov <> gate_one() AND result <> 0. AND result <> 'Infinity' AND result <> '-Infinity' THEN result := result/probability_evaluate(prov, method, arguments); END IF; - RETURN CAST(result AS DOUBLE PRECISION); + RETURN result; END $$ LANGUAGE plpgsql PARALLEL SAFE; diff --git a/test/sql/expected.sql b/test/sql/expected.sql index 102510c..f5e8c9a 100644 --- a/test/sql/expected.sql +++ b/test/sql/expected.sql @@ -10,7 +10,7 @@ GROUP BY CITY; SELECT remove_provenance('expected_result'); -SELECT city, ROUND(c1::numeric,2) AS c1, ROUND(c2::numeric,2) AS c2, ROUND(s::numeric,2) AS s, ROUND(min::numeric,2) AS min, ROUND(max::numeric,2) AS max +SELECT city, ROUND(c1::numeric,2) AS c1, ROUND(c2::numeric,2) AS c2, ROUND(s::numeric,2) AS s, min, max FROM expected_result ORDER BY city;