aboutsummaryrefslogtreecommitdiff
path: root/contrib/jsonb_plperl/sql/jsonb_plperlu.sql
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2018-04-30 12:28:45 -0400
committerPeter Eisentraut <peter_e@gmx.net>2018-04-30 13:22:57 -0400
commite348e7ae5727a6da8678036d748e5c5af7deb6c9 (patch)
treead29dc9987af244f9a240f05f9c1c44611ecd96e /contrib/jsonb_plperl/sql/jsonb_plperlu.sql
parentf7df8043f08a9d00811fb4aa054ed3221f5f9b5e (diff)
downloadpostgresql-e348e7ae5727a6da8678036d748e5c5af7deb6c9.tar.gz
postgresql-e348e7ae5727a6da8678036d748e5c5af7deb6c9.zip
Prevent infinity and NaN in jsonb/plperl transform
jsonb uses numeric internally, and numeric can store NaN, but that is not allowed by jsonb on input, so we shouldn't store it. Also prevent infinity to get a consistent error message. (numeric input would reject infinity anyway.) Reported-by: Dagfinn Ilmari Mannsåker <ilmari@ilmari.org> Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Diffstat (limited to 'contrib/jsonb_plperl/sql/jsonb_plperlu.sql')
-rw-r--r--contrib/jsonb_plperl/sql/jsonb_plperlu.sql22
1 files changed, 22 insertions, 0 deletions
diff --git a/contrib/jsonb_plperl/sql/jsonb_plperlu.sql b/contrib/jsonb_plperl/sql/jsonb_plperlu.sql
index 9287f7672f7..9c0c083c99c 100644
--- a/contrib/jsonb_plperl/sql/jsonb_plperlu.sql
+++ b/contrib/jsonb_plperl/sql/jsonb_plperlu.sql
@@ -34,6 +34,28 @@ $$;
SELECT testSVToJsonb();
+CREATE FUNCTION testInf() RETURNS jsonb
+LANGUAGE plperlu
+TRANSFORM FOR TYPE jsonb
+AS $$
+$val = 0 + 'Inf';
+return $val;
+$$;
+
+SELECT testInf();
+
+
+CREATE FUNCTION testNaN() RETURNS jsonb
+LANGUAGE plperlu
+TRANSFORM FOR TYPE jsonb
+AS $$
+$val = 0 + 'NaN';
+return $val;
+$$;
+
+SELECT testNaN();
+
+
-- this revealed a bug in the original implementation
CREATE FUNCTION testRegexpResultToJsonb() RETURNS jsonb
LANGUAGE plperlu