diff options
Diffstat (limited to 'contrib/jsonb_plpython/expected/jsonb_plpython.out')
-rw-r--r-- | contrib/jsonb_plpython/expected/jsonb_plpython.out | 306 |
1 files changed, 306 insertions, 0 deletions
diff --git a/contrib/jsonb_plpython/expected/jsonb_plpython.out b/contrib/jsonb_plpython/expected/jsonb_plpython.out new file mode 100644 index 0000000..b491fe9 --- /dev/null +++ b/contrib/jsonb_plpython/expected/jsonb_plpython.out @@ -0,0 +1,306 @@ +CREATE EXTENSION jsonb_plpython2u CASCADE; +NOTICE: installing required extension "plpython2u" +-- test jsonb -> python dict +CREATE FUNCTION test1(val jsonb) RETURNS int +LANGUAGE plpythonu +TRANSFORM FOR TYPE jsonb +AS $$ +assert isinstance(val, dict) +assert(val == {'a': 1, 'c': 'NULL'}) +return len(val) +$$; +SELECT test1('{"a": 1, "c": "NULL"}'::jsonb); + test1 +------- + 2 +(1 row) + +-- test jsonb -> python dict +-- complex dict with dicts as value +CREATE FUNCTION test1complex(val jsonb) RETURNS int +LANGUAGE plpython2u +TRANSFORM FOR TYPE jsonb +AS $$ +assert isinstance(val, dict) +assert(val == {"d": {"d": 1}}) +return len(val) +$$; +SELECT test1complex('{"d": {"d": 1}}'::jsonb); + test1complex +-------------- + 1 +(1 row) + +-- test jsonb[] -> python dict +-- dict with array as value +CREATE FUNCTION test1arr(val jsonb) RETURNS int +LANGUAGE plpythonu +TRANSFORM FOR TYPE jsonb +AS $$ +assert isinstance(val, dict) +assert(val == {"d": [12, 1]}) +return len(val) +$$; +SELECT test1arr('{"d":[12, 1]}'::jsonb); + test1arr +---------- + 1 +(1 row) + +-- test jsonb[] -> python list +-- simple list +CREATE FUNCTION test2arr(val jsonb) RETURNS int +LANGUAGE plpythonu +TRANSFORM FOR TYPE jsonb +AS $$ +assert isinstance(val, list) +assert(val == [12, 1]) +return len(val) +$$; +SELECT test2arr('[12, 1]'::jsonb); + test2arr +---------- + 2 +(1 row) + +-- test jsonb[] -> python list +-- array of dicts +CREATE FUNCTION test3arr(val jsonb) RETURNS int +LANGUAGE plpythonu +TRANSFORM FOR TYPE jsonb +AS $$ +assert isinstance(val, list) +assert(val == [{"a": 1,"b": 2}, {"c": 3,"d": 4}]) +return len(val) +$$; +SELECT test3arr('[{"a": 1, "b": 2}, {"c": 3,"d": 4}]'::jsonb); + test3arr +---------- + 2 +(1 row) + +-- test jsonb int -> python int +CREATE FUNCTION test1int(val jsonb) RETURNS int +LANGUAGE plpythonu +TRANSFORM FOR TYPE jsonb +AS $$ +assert(val == 1) +return val +$$; +SELECT test1int('1'::jsonb); + test1int +---------- + 1 +(1 row) + +-- test jsonb string -> python string +CREATE FUNCTION test1string(val jsonb) RETURNS text +LANGUAGE plpythonu +TRANSFORM FOR TYPE jsonb +AS $$ +assert(val == "a") +return val +$$; +SELECT test1string('"a"'::jsonb); + test1string +------------- + a +(1 row) + +-- test jsonb null -> python None +CREATE FUNCTION test1null(val jsonb) RETURNS int +LANGUAGE plpythonu +TRANSFORM FOR TYPE jsonb +AS $$ +assert(val == None) +return 1 +$$; +SELECT test1null('null'::jsonb); + test1null +----------- + 1 +(1 row) + +-- test python -> jsonb +CREATE FUNCTION roundtrip(val jsonb) RETURNS jsonb +LANGUAGE plpythonu +TRANSFORM FOR TYPE jsonb +as $$ +return val +$$; +SELECT roundtrip('null'::jsonb); + roundtrip +----------- + +(1 row) + +SELECT roundtrip('1'::jsonb); + roundtrip +----------- + 1 +(1 row) + +SELECT roundtrip('1234567890.0987654321'::jsonb); + roundtrip +----------------------- + 1234567890.0987654321 +(1 row) + +SELECT roundtrip('-1234567890.0987654321'::jsonb); + roundtrip +------------------------ + -1234567890.0987654321 +(1 row) + +SELECT roundtrip('true'::jsonb); + roundtrip +----------- + true +(1 row) + +SELECT roundtrip('"string"'::jsonb); + roundtrip +----------- + "string" +(1 row) + +SELECT roundtrip('{"1": null}'::jsonb); + roundtrip +------------- + {"1": null} +(1 row) + +SELECT roundtrip('{"1": 1}'::jsonb); + roundtrip +----------- + {"1": 1} +(1 row) + +SELECT roundtrip('{"1": true}'::jsonb); + roundtrip +------------- + {"1": true} +(1 row) + +SELECT roundtrip('{"1": "string"}'::jsonb); + roundtrip +----------------- + {"1": "string"} +(1 row) + +SELECT roundtrip('[null]'::jsonb); + roundtrip +----------- + [null] +(1 row) + +SELECT roundtrip('[1]'::jsonb); + roundtrip +----------- + [1] +(1 row) + +SELECT roundtrip('[true]'::jsonb); + roundtrip +----------- + [true] +(1 row) + +SELECT roundtrip('["string"]'::jsonb); + roundtrip +------------ + ["string"] +(1 row) + +SELECT roundtrip('[null, 1]'::jsonb); + roundtrip +----------- + [null, 1] +(1 row) + +SELECT roundtrip('[1, true]'::jsonb); + roundtrip +----------- + [1, true] +(1 row) + +SELECT roundtrip('[true, "string"]'::jsonb); + roundtrip +------------------ + [true, "string"] +(1 row) + +SELECT roundtrip('["string", "string2"]'::jsonb); + roundtrip +----------------------- + ["string", "string2"] +(1 row) + +-- complex numbers -> jsonb +CREATE FUNCTION testComplexNumbers() RETURNS jsonb +LANGUAGE plpythonu +TRANSFORM FOR TYPE jsonb +AS $$ +x = 1 + 2j +return x +$$; +SELECT testComplexNumbers(); +ERROR: could not convert value "(1+2j)" to jsonb +CONTEXT: while creating return value +PL/Python function "testcomplexnumbers" +-- range -> jsonb +CREATE FUNCTION testRange() RETURNS jsonb +LANGUAGE plpythonu +TRANSFORM FOR TYPE jsonb +AS $$ +x = range(3) +return x +$$; +SELECT testRange(); + testrange +----------- + [0, 1, 2] +(1 row) + +-- 0xff -> jsonb +CREATE FUNCTION testDecimal() RETURNS jsonb +LANGUAGE plpythonu +TRANSFORM FOR TYPE jsonb +AS $$ +x = 0xff +return x +$$; +SELECT testDecimal(); + testdecimal +------------- + 255 +(1 row) + +-- tuple -> jsonb +CREATE FUNCTION testTuple() RETURNS jsonb +LANGUAGE plpythonu +TRANSFORM FOR TYPE jsonb +AS $$ +x = (1, 'String', None) +return x +$$; +SELECT testTuple(); + testtuple +--------------------- + [1, "String", null] +(1 row) + +-- interesting dict -> jsonb +CREATE FUNCTION test_dict1() RETURNS jsonb +LANGUAGE plpythonu +TRANSFORM FOR TYPE jsonb +AS $$ +x = {"a": 1, None: 2, 33: 3} +return x +$$; +SELECT test_dict1(); + test_dict1 +-------------------------- + {"": 2, "a": 1, "33": 3} +(1 row) + |