Re: pgsql: Transforms for jsonb to PL/Perl
От | Anthony Bykov |
---|---|
Тема | Re: pgsql: Transforms for jsonb to PL/Perl |
Дата | |
Msg-id | 20180404161144.37d03301@anthony-24-g082ur обсуждение исходный текст |
Ответ на | Re: pgsql: Transforms for jsonb to PL/Perl (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: pgsql: Transforms for jsonb to PL/Perl
|
Список | pgsql-committers |
On Tue, 03 Apr 2018 17:37:04 -0400 Tom Lane <tgl@sss.pgh.pa.us> wrote: > I wrote: > > Hm, it fails on my own machine too (RHEL6, perl 5.10.1), with the > > same "cannot transform this Perl type to jsonb" symptoms. A bit > > of tracing shows that SvTYPE(in) is returning SVt_PVIV in some > > of the failing cases, and SVt_PVNV in others. > > I tried to fix this by reducing the amount of knowledge that function > embeds about the possible SvTYPEs. After the special cases for AV, > HV, and NULL, the attached just tests SvIOK, SvNOK, and SvPOK, and > does the right thing for each case. > > This results in one change in the module's test results: the example > that thinks it's returning a regexp match result no longer fails, > but just returns the scalar result (0). I'm inclined to think that > this is correct/desirable and the existing behavior is an accidental > artifact of not coping with Perl's various augmented representations > of scalar values. > > Thoughts? > > regards, tom lane > Hello. I think that there is a mistake in test: CREATE FUNCTION testRegexpToJsonb() RETURNS jsonb LANGUAGE plperl TRANSFORM FOR TYPE jsonb AS $$ return ('1' =~ m(0\t2)); $$; =~ is the operator testing a regular expression match. Hence, testRegexpToJsonb function returns true/false values (when used in scalar context, the return value generally indicates the success of the operation). I guess the right test will look a little bit different: CREATE FUNCTION testRegexpToJsonb() RETURNS jsonb LANGUAGE plperl TRANSFORM FOR TYPE jsonb AS $$ $a = qr//; return ($a); $$; So, this may be the reason why the original testRegexpToJsonb returns the scalar result. -- Anthony Bykov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company
В списке pgsql-committers по дате отправления: