aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/pl/plperl/plperl.c23
1 files changed, 6 insertions, 17 deletions
diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c
index 9470757c433..8cc8eda2053 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.123.2.2 2007/12/01 15:31:30 adunstan Exp $
+ * $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.123.2.3 2007/12/01 17:58:48 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"
@@ -509,7 +510,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.
@@ -517,12 +517,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;
@@ -534,24 +530,17 @@ plperl_safe_init(void)
"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);
}
}