aboutsummaryrefslogtreecommitdiff
path: root/contrib/jsonb_plperl/sql/jsonb_plperl.sql
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2019-08-04 14:05:34 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2019-08-04 14:05:34 -0400
commite0f5048851ff88a53630a0c121a1cd15f6a2f1cd (patch)
treec0737bb205b2b080b69a23068b9dffa70b98a76b /contrib/jsonb_plperl/sql/jsonb_plperl.sql
parent803466b6ffaa2e5b94d8ce4d7fffa8185f2a0184 (diff)
downloadpostgresql-e0f5048851ff88a53630a0c121a1cd15f6a2f1cd.tar.gz
postgresql-e0f5048851ff88a53630a0c121a1cd15f6a2f1cd.zip
Fix handling of "undef" in contrib/jsonb_plperl.
Perl has multiple internal representations of "undef", and just testing for SvTYPE(x) == SVt_NULL doesn't recognize all of them, leading to "cannot transform this Perl type to jsonb" errors. Use the approved test SvOK() instead. Report and patch by Ivan Panchenko. Back-patch to v11 where this module was added. Discussion: https://postgr.es/m/1564783533.324795401@f193.i.mail.ru
Diffstat (limited to 'contrib/jsonb_plperl/sql/jsonb_plperl.sql')
-rw-r--r--contrib/jsonb_plperl/sql/jsonb_plperl.sql13
1 files changed, 13 insertions, 0 deletions
diff --git a/contrib/jsonb_plperl/sql/jsonb_plperl.sql b/contrib/jsonb_plperl/sql/jsonb_plperl.sql
index 8b062dfc6bb..a5b2cffe6b7 100644
--- a/contrib/jsonb_plperl/sql/jsonb_plperl.sql
+++ b/contrib/jsonb_plperl/sql/jsonb_plperl.sql
@@ -57,6 +57,19 @@ $$;
SELECT testRegexpResultToJsonb();
+-- this revealed a different bug
+CREATE FUNCTION testTextToJsonbObject(text) RETURNS jsonb
+LANGUAGE plperl
+TRANSFORM FOR TYPE jsonb
+AS $$
+my $x = shift;
+return {a => $x};
+$$;
+
+SELECT testTextToJsonbObject('abc');
+SELECT testTextToJsonbObject(NULL);
+
+
CREATE FUNCTION roundtrip(val jsonb, ref text = '') RETURNS jsonb
LANGUAGE plperl
TRANSFORM FOR TYPE jsonb