Re: Transform for pl/perl

Anthony Bykov <a.bykov@postgrespro.ru>

From: Anthony Bykov <a.bykov@postgrespro.ru>
To: Andrew Dunstan <andrew.dunstan@2ndquadrant.com>
Cc: pgsql-hackers@lists.postgresql.org
Date: 2018-02-13T13:43:11Z
Lists: pgsql-hackers

Attachments

On Sat, 13 Jan 2018 09:29:46 -0500
Andrew Dunstan <andrew.dunstan@2ndquadrant.com> wrote:

> There's a bit of an impedance mismatch and inconsistency here. I think
> we need to deal with json scalars (particularly numerics) the same way
> we do for plain scalar arguments. We don't convert a numeric argument
> to and SvNV. We just do this in plperl_call_perl_func():
> 
>                     tmp = OutputFunctionCall(&(desc->arg_out_func[i]),
>                                              fcinfo->arg[i]);
>                     sv = cstr2sv(tmp);
>                     pfree(tmp)
>     [...]
> 
>                 PUSHs(sv_2mortal(sv));
> 
> Large numerics won't work as SvNV values, which have to fit in a
> standard double. So I think we should treat them the same way we do
> for plain scalar arguments.
> 
> (This also suggests that the tests are a bit deficient in not testing
> jsonb with large numeric values.)
> 
> I'm going to set this back to waiting on author pending discussion.
> 
> 
> cheers
> 
> andrew
> 

Hello,
thank you for your attention.

I'm sorry, but I couldn't understand what types of numerics you was
talking about. Large numerics are just transformed into "inf" (or
"Inf") and the patch contains such test. But there were no tests with
numerics close to "inf" but not "inf" yet. So, I've added such test.

Also I've fixed the thing Thomas Munro was talking about.


--
Anthony Bykov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

Commits

  1. Fix jsonb_plperl to convert Perl UV values correctly.

  2. Fix contrib/hstore_plperl to look through scalar refs.

  3. Allow plperl_sv_to_datum to look through scalar refs.

  4. Fix excessive enreferencing in jsonb-to-plperl transform.