aboutsummaryrefslogtreecommitdiff
path: root/contrib/jsonb_plperl/sql/jsonb_plperl.sql
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/jsonb_plperl/sql/jsonb_plperl.sql')
-rw-r--r--contrib/jsonb_plperl/sql/jsonb_plperl.sql86
1 files changed, 86 insertions, 0 deletions
diff --git a/contrib/jsonb_plperl/sql/jsonb_plperl.sql b/contrib/jsonb_plperl/sql/jsonb_plperl.sql
new file mode 100644
index 00000000000..2c779fcd087
--- /dev/null
+++ b/contrib/jsonb_plperl/sql/jsonb_plperl.sql
@@ -0,0 +1,86 @@
+CREATE EXTENSION jsonb_plperl CASCADE;
+
+
+CREATE FUNCTION testHVToJsonb() RETURNS jsonb
+LANGUAGE plperl
+TRANSFORM FOR TYPE jsonb
+AS $$
+$val = {a => 1, b => 'boo', c => undef};
+return $val;
+$$;
+
+SELECT testHVToJsonb();
+
+
+CREATE FUNCTION testAVToJsonb() RETURNS jsonb
+LANGUAGE plperl
+TRANSFORM FOR TYPE jsonb
+AS $$
+$val = [{a => 1, b => 'boo', c => undef}, {d => 2}];
+return $val;
+$$;
+
+SELECT testAVToJsonb();
+
+
+CREATE FUNCTION testSVToJsonb() RETURNS jsonb
+LANGUAGE plperl
+TRANSFORM FOR TYPE jsonb
+AS $$
+$val = 1;
+return $val;
+$$;
+
+SELECT testSVToJsonb();
+
+
+CREATE FUNCTION testRegexpToJsonb() RETURNS jsonb
+LANGUAGE plperl
+TRANSFORM FOR TYPE jsonb
+AS $$
+return ('1' =~ m(0\t2));
+$$;
+
+SELECT testRegexpToJsonb();
+
+
+CREATE FUNCTION roundtrip(val jsonb) RETURNS jsonb
+LANGUAGE plperl
+TRANSFORM FOR TYPE jsonb
+AS $$
+return $_[0];
+$$;
+
+
+SELECT roundtrip('null');
+SELECT roundtrip('1');
+SELECT roundtrip('1E+131071');
+SELECT roundtrip('-1');
+SELECT roundtrip('1.2');
+SELECT roundtrip('-1.2');
+SELECT roundtrip('"string"');
+SELECT roundtrip('"NaN"');
+
+SELECT roundtrip('true');
+SELECT roundtrip('false');
+
+SELECT roundtrip('[]');
+SELECT roundtrip('[null, null]');
+SELECT roundtrip('[1, 2, 3]');
+SELECT roundtrip('[-1, 2, -3]');
+SELECT roundtrip('[1.2, 2.3, 3.4]');
+SELECT roundtrip('[-1.2, 2.3, -3.4]');
+SELECT roundtrip('["string1", "string2"]');
+
+SELECT roundtrip('{}');
+SELECT roundtrip('{"1": null}');
+SELECT roundtrip('{"1": 1}');
+SELECT roundtrip('{"1": -1}');
+SELECT roundtrip('{"1": 1.1}');
+SELECT roundtrip('{"1": -1.1}');
+SELECT roundtrip('{"1": "string1"}');
+
+SELECT roundtrip('{"1": {"2": [3, 4, 5]}, "2": 3}');
+
+
+DROP EXTENSION plperl CASCADE;