]> granicus.if.org Git - postgresql/commitdiff
Tweak new jsonb_plperl test cases to work with old Perl versions.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 1 May 2018 03:58:48 +0000 (23:58 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 1 May 2018 03:58:48 +0000 (23:58 -0400)
The previous coding here didn't actually produce Inf or NaN double
values in Perl versions 5.8.x.  Adopt a suggestion from stackoverflow.

Discussion: https://postgr.es/m/28585.1525131438@sss.pgh.pa.us

contrib/jsonb_plperl/expected/jsonb_plperl.out
contrib/jsonb_plperl/expected/jsonb_plperlu.out
contrib/jsonb_plperl/sql/jsonb_plperl.sql
contrib/jsonb_plperl/sql/jsonb_plperlu.sql

index d6c3becf6313cd1e3cba77d0a8371e7b5749e584..c16d16dab4ea9be38fb0956870b0fc6404fa216e 100644 (file)
@@ -43,7 +43,7 @@ CREATE FUNCTION testInf() RETURNS jsonb
 LANGUAGE plperl
 TRANSFORM FOR TYPE jsonb
 AS $$
-$val = 0 + 'Inf';
+$val = 9**9**9;  # we assume this will overflow to +Inf
 return $val;
 $$;
 SELECT testInf();
@@ -53,7 +53,7 @@ CREATE FUNCTION testNaN() RETURNS jsonb
 LANGUAGE plperl
 TRANSFORM FOR TYPE jsonb
 AS $$
-$val = 0 + 'NaN';
+$val = sin(9**9**9);  # we assume sin(inf) will yield NaN
 return $val;
 $$;
 SELECT testNaN();
index 65ed21f3b2d9c8121fa3ed4043e800e75c4e99e4..e84ea7cf66c8339fda7eaffc20a84a0dbfc98e6c 100644 (file)
@@ -43,7 +43,7 @@ CREATE FUNCTION testInf() RETURNS jsonb
 LANGUAGE plperlu
 TRANSFORM FOR TYPE jsonb
 AS $$
-$val = 0 + 'Inf';
+$val = 9**9**9;  # we assume this will overflow to +Inf
 return $val;
 $$;
 SELECT testInf();
@@ -53,7 +53,7 @@ CREATE FUNCTION testNaN() RETURNS jsonb
 LANGUAGE plperlu
 TRANSFORM FOR TYPE jsonb
 AS $$
-$val = 0 + 'NaN';
+$val = sin(9**9**9);  # we assume sin(inf) will yield NaN
 return $val;
 $$;
 SELECT testNaN();
index 5f94a4c51aed02ca4d5ed70fa404755214b58af8..436e18730f8b6276a764845778e9f6854ceef8de 100644 (file)
@@ -38,7 +38,7 @@ CREATE FUNCTION testInf() RETURNS jsonb
 LANGUAGE plperl
 TRANSFORM FOR TYPE jsonb
 AS $$
-$val = 0 + 'Inf';
+$val = 9**9**9;  # we assume this will overflow to +Inf
 return $val;
 $$;
 
@@ -49,7 +49,7 @@ CREATE FUNCTION testNaN() RETURNS jsonb
 LANGUAGE plperl
 TRANSFORM FOR TYPE jsonb
 AS $$
-$val = 0 + 'NaN';
+$val = sin(9**9**9);  # we assume sin(inf) will yield NaN
 return $val;
 $$;
 
index 9c0c083c99c0c6df0929d44f5468750d3b652c69..339486ddb6f52cf09abf25c2e707802331e9073c 100644 (file)
@@ -38,7 +38,7 @@ CREATE FUNCTION testInf() RETURNS jsonb
 LANGUAGE plperlu
 TRANSFORM FOR TYPE jsonb
 AS $$
-$val = 0 + 'Inf';
+$val = 9**9**9;  # we assume this will overflow to +Inf
 return $val;
 $$;
 
@@ -49,7 +49,7 @@ CREATE FUNCTION testNaN() RETURNS jsonb
 LANGUAGE plperlu
 TRANSFORM FOR TYPE jsonb
 AS $$
-$val = 0 + 'NaN';
+$val = sin(9**9**9);  # we assume sin(inf) will yield NaN
 return $val;
 $$;