From b410475672eaf06ba91a03c50c571bd52fd81a32 Mon Sep 17 00:00:00 2001
From: Andrew Dunstan <andrew@dunslane.net>
Date: Fri, 18 Nov 2005 17:00:28 +0000
Subject: [PATCH] translate undef to NULL for result arrayref, now that we
 allow NULLs in arrays. Update plperl regression test accordingly.

---
 src/pl/plperl/expected/plperl.out | 8 ++++----
 src/pl/plperl/plperl.c            | 8 ++++++--
 src/pl/plperl/sql/plperl.sql      | 2 +-
 3 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/src/pl/plperl/expected/plperl.out b/src/pl/plperl/expected/plperl.out
index a2b34a78cbf..476e98b7b94 100644
--- a/src/pl/plperl/expected/plperl.out
+++ b/src/pl/plperl/expected/plperl.out
@@ -412,11 +412,11 @@ SELECT * FROM recurse(3);
 ---
 CREATE OR REPLACE FUNCTION  array_of_text() RETURNS TEXT[][] 
 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(); 
-        array_of_text        
------------------------------
- {{"a\"b","c,d"},{"e\\f",g}}
+             array_of_text             
+---------------------------------------
+ {{"a\"b",NULL,"c,d"},{"e\\f",NULL,g}}
 (1 row)
 
diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c
index 01d7b2453b1..274add609b3 100644
--- a/src/pl/plperl/plperl.c
+++ b/src/pl/plperl/plperl.c
@@ -33,7 +33,7 @@
  *	  ENHANCEMENTS, OR MODIFICATIONS.
  *
  * 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); " \
 	"    } " \
-	"    else " \
+	"    elsif (defined($elem)) " \
 	"    { " \
 	"      my $str = qq($elem); " \
 	"      $str =~ s/([\"\\\\])/\\\\$1/g; " \
 	"      $res .= qq(\"$str\"); " \
 	"    } " \
+	"    else " \
+	"    { "\
+	"      $res .= 'NULL' ; " \
+	"    } "\
 	"  } " \
 	"  return qq({$res}); " \
 	"} "
diff --git a/src/pl/plperl/sql/plperl.sql b/src/pl/plperl/sql/plperl.sql
index e6fc5c35dde..b1f13d3a413 100644
--- a/src/pl/plperl/sql/plperl.sql
+++ b/src/pl/plperl/sql/plperl.sql
@@ -297,7 +297,7 @@ SELECT * FROM recurse(3);
 ---
 CREATE OR REPLACE FUNCTION  array_of_text() RETURNS TEXT[][] 
 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(); 
-- 
GitLab