Re: arrays as pl/perl input arguments [PATCH]
Alexey Klyukin <alexk@commandprompt.com>
From: Alexey Klyukin <alexk@commandprompt.com>
To: Alex Hunsaker <badalex@gmail.com>
Cc: "David E. Wheeler" <david@kineticode.com>, pgsql-hackers@postgresql.org, Andrew Dunstan <andrew@dunslane.net>
Date: 2011-01-31T08:34:23Z
Lists: pgsql-hackers
Attachments
- pg_to_perl_arrays_v5.patch.gz (application/x-gzip) patch v5
- (unnamed) (text/plain)
On Jan 29, 2011, at 12:27 AM, Alex Hunsaker wrote: > On Thu, Jan 27, 2011 at 03:38, Alexey Klyukin <alexk@commandprompt.com> wrote: >> Hi, >> >> On Jan 27, 2011, at 9:31 AM, Alex Hunsaker wrote: >> >>> Find attached v3 of the patch. changes include: >>> - fix deep recursion due to accidental reversal of check in encode_array_literal >>> - add proper support for stringifying composite/row types. I did not >>> find a good way to quote these from the perl on the fly, so instead we >>> compute it the same way we used to and store the string inside the new >>> object along with the array :(. >>> - misc whitespace and code touchups >>> <pg_to_perl_arrays_v3.patch.gz> >> >> >> Nice improvement. It passes all the regression tests on my OS X system. I have only a minor suggestion, I think is_array is worth mentioning in the utility functions chapter of the pl/perl documentation, it would be also more clear to use it in regression tests as opposed to manually checking whether the ref is equal to 'PostgreSQL::InServer::ARRAY'. > > Wait a second... Just who is reviewing who's patch? :P > Oh, sorry, got confused along the way :) > Both done in the attached. I also renamed is_array() to > is_array_ref() for clarity (hopefully). > <pg_to_perl_arrays_v4.patch.gz> Thank you. I've looked at the patch and added a test for arrays exceeding or equal maximum dimensions to check, whether the recursive function won't bring surprises there. I've also added check_stack_depth calls to both split_array and plperl_hash_from_tuple. Note that the regression fails currently due to the incorrect error reporting in PostgreSQL, per http://archives.postgresql.org/pgsql-hackers/2011-01/msg02888.php. The v5 is attached.