Hello, On Fri, Jan 12, 2018 at 11:47:39AM +0300, Anthony Bykov wrote: > Hello, thank you for your message. > The problem was that different perl compilers uses different infinity > representations. Some of them use "Inf" others - use "inf". So, in > attachments there is a new version of the patch.
I've noticed a possible bug: > + /* json key in v */ > + key = pstrdup(v.val.string.val); > + keyLength = v.val.string.len; > + JsonbIteratorNext(&it, &v, true); I think it is worth to use pnstrdup() here, because v.val.string.val is not necessarily null-terminated as the comment says: > struct JsonbValue > ... > struct > { > int len; > char *val; /* Not necessarily > null-terminated */ > } string; /* String primitive > type */ Consider an example: =# CREATE FUNCTION testSVToJsonb3(val jsonb) RETURNS jsonb LANGUAGE plperl TRANSFORM FOR TYPE jsonb AS $$ return $_->{"1"}; $$; =# SELECT testSVToJsonb3('{"1":{"2":[3,4,5]},"2":3}'); testsvtojsonb3 ---------------- (null) But my perl isn't good, so the example maybe isn't good too. -- Arthur Zakirov Postgres Professional: http://www.postgrespro.com Russian Postgres Company