translate undef to NULL for result arrayref, now that we allow NULLs in arrays. Update plperl regression test accordingly.

This commit is contained in:
Andrew Dunstan 2005-11-18 17:00:28 +00:00
parent 33e9f2c3d4
commit b410475672
3 changed files with 11 additions and 7 deletions

View File

@ -412,11 +412,11 @@ SELECT * FROM recurse(3);
--- ---
CREATE OR REPLACE FUNCTION array_of_text() RETURNS TEXT[][] CREATE OR REPLACE FUNCTION array_of_text() RETURNS TEXT[][]
LANGUAGE plperl as $$ LANGUAGE plperl as $$
return [['a"b','c,d'],['e\\f','g']]; return [['a"b',undef,'c,d'],['e\\f',undef,'g']];
$$; $$;
SELECT array_of_text(); SELECT array_of_text();
array_of_text array_of_text
----------------------------- ---------------------------------------
{{"a\"b","c,d"},{"e\\f",g}} {{"a\"b",NULL,"c,d"},{"e\\f",NULL,g}}
(1 row) (1 row)

View File

@ -33,7 +33,7 @@
* ENHANCEMENTS, OR MODIFICATIONS. * ENHANCEMENTS, OR MODIFICATIONS.
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.94 2005/10/18 17:13:14 tgl Exp $ * $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.95 2005/11/18 17:00:28 adunstan Exp $
* *
**********************************************************************/ **********************************************************************/
@ -207,12 +207,16 @@ plperl_init_all(void)
" { " \ " { " \
" $res .= _plperl_to_pg_array($elem); " \ " $res .= _plperl_to_pg_array($elem); " \
" } " \ " } " \
" else " \ " elsif (defined($elem)) " \
" { " \ " { " \
" my $str = qq($elem); " \ " my $str = qq($elem); " \
" $str =~ s/([\"\\\\])/\\\\$1/g; " \ " $str =~ s/([\"\\\\])/\\\\$1/g; " \
" $res .= qq(\"$str\"); " \ " $res .= qq(\"$str\"); " \
" } " \ " } " \
" else " \
" { "\
" $res .= 'NULL' ; " \
" } "\
" } " \ " } " \
" return qq({$res}); " \ " return qq({$res}); " \
"} " "} "

View File

@ -297,7 +297,7 @@ SELECT * FROM recurse(3);
--- ---
CREATE OR REPLACE FUNCTION array_of_text() RETURNS TEXT[][] CREATE OR REPLACE FUNCTION array_of_text() RETURNS TEXT[][]
LANGUAGE plperl as $$ LANGUAGE plperl as $$
return [['a"b','c,d'],['e\\f','g']]; return [['a"b',undef,'c,d'],['e\\f',undef,'g']];
$$; $$;
SELECT array_of_text(); SELECT array_of_text();