Re: Transform for pl/perl - Mailing list pgsql-hackers

From Arthur Zakirov
Subject Re: Transform for pl/perl
Date
Msg-id 20180131103621.GA19345@zakirov.localdomain
Whole thread Raw
In response to Re: Transform for pl/perl  (Anthony Bykov <a.bykov@postgrespro.ru>)
Responses Re: Transform for pl/perl
List pgsql-hackers
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


pgsql-hackers by date:

Previous
From: Amit Kapila
Date:
Subject: Re: Wait for parallel workers to attach
Next
From: Gaddam Sai Ram
Date:
Subject: Re: Help needed in using 'on_dsm_detach' callback