diff options
Diffstat (limited to 'contrib/jsonb_plperl/sql/jsonb_plperl.sql')
-rw-r--r-- | contrib/jsonb_plperl/sql/jsonb_plperl.sql | 86 |
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; |