From ba9da684b5dba9dc5daf05abd442f9b4a5a23979 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sat, 1 Dec 2007 17:58:42 +0000
Subject: [PATCH] Suppress compiler warnings in recent plperl patch.  Avoid
 uselessly expensive lookup of the well-known OID of textout().

---
 src/pl/plperl/plperl.c | 30 +++++++++---------------------
 1 file changed, 9 insertions(+), 21 deletions(-)

diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c
index 5f4677c360e..70d90b63ff4 100644
--- a/src/pl/plperl/plperl.c
+++ b/src/pl/plperl/plperl.c
@@ -1,7 +1,7 @@
 /**********************************************************************
  * plperl.c - perl as a procedural language for PostgreSQL
  *
- *	  $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.133 2007/12/01 15:20:34 adunstan Exp $
+ *	  $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.134 2007/12/01 17:58:42 tgl Exp $
  *
  **********************************************************************/
 
@@ -23,6 +23,7 @@
 #include "miscadmin.h"
 #include "nodes/makefuncs.h"
 #include "parser/parse_type.h"
+#include "utils/fmgroids.h"
 #include "utils/guc.h"
 #include "utils/lsyscache.h"
 #include "utils/memutils.h"
@@ -508,7 +509,6 @@ plperl_safe_init(void)
 		eval_pv(SAFE_OK, FALSE);
 		if (GetDatabaseEncoding() == PG_UTF8)
 		{
-
 			/* 
 			 * Fill in just enough information to set up this perl
 			 * function in the safe container and call it.
@@ -516,12 +516,8 @@ plperl_safe_init(void)
 			 * can arise from the regex code later trying to load
 			 * utf8 modules.
 			 */
-
 			plperl_proc_desc desc;			
 			FunctionCallInfoData fcinfo;
-			FmgrInfo outfunc;
-			HeapTuple   typeTup;
-			Form_pg_type typeStruct;
 			SV *ret;
 			SV *func;
 
@@ -529,29 +525,21 @@ plperl_safe_init(void)
 			plperl_safe_init_done = true;
 
 			/* compile the function */
-			func = plperl_create_sub(
-				"utf8fix",
-				"return shift =~ /\\xa9/i ? 'true' : 'false' ;",
-				true);
-
+			func = plperl_create_sub("utf8fix",
+							 "return shift =~ /\\xa9/i ? 'true' : 'false' ;",
+									 true);
 
 			/* set up to call the function with a single text argument 'a' */
 			desc.reference = func;
 			desc.nargs = 1;
 			desc.arg_is_rowtype[0] = false;
+			fmgr_info(F_TEXTOUT, &(desc.arg_out_func[0]));
+
+			fcinfo.arg[0] = DirectFunctionCall1(textin, CStringGetDatum("a"));
 			fcinfo.argnull[0] = false;
-			fcinfo.arg[0] = 
-				DatumGetTextP(DirectFunctionCall1(textin, 
-												  CStringGetDatum("a")));
-			typeTup = SearchSysCache(TYPEOID,
-									 TEXTOID,
-									 0, 0, 0);
-			typeStruct = (Form_pg_type) GETSTRUCT(typeTup);
-			fmgr_info(typeStruct->typoutput,&(desc.arg_out_func[0]));
-			ReleaseSysCache(typeTup);
 			
 			/* and make the call */
-			ret = plperl_call_perl_func(&desc,&fcinfo);
+			ret = plperl_call_perl_func(&desc, &fcinfo);
 		}
 	}
 
-- 
GitLab