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
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();
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();
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();
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();
LANGUAGE plperl
TRANSFORM FOR TYPE jsonb
AS $$
-$val = 0 + 'Inf';
+$val = 9**9**9; # we assume this will overflow to +Inf
return $val;
$$;
LANGUAGE plperl
TRANSFORM FOR TYPE jsonb
AS $$
-$val = 0 + 'NaN';
+$val = sin(9**9**9); # we assume sin(inf) will yield NaN
return $val;
$$;
LANGUAGE plperlu
TRANSFORM FOR TYPE jsonb
AS $$
-$val = 0 + 'Inf';
+$val = 9**9**9; # we assume this will overflow to +Inf
return $val;
$$;
LANGUAGE plperlu
TRANSFORM FOR TYPE jsonb
AS $$
-$val = 0 + 'NaN';
+$val = sin(9**9**9); # we assume sin(inf) will yield NaN
return $val;
$$;