mirror of
https://github.com/postgres/postgres.git
synced 2025-04-24 10:47:04 +03:00
This patch, when applied in src/pl will unbreak plperl in
7.0.2 release. Sorry, if that's fixed ages ago - I don't track development versions of PostgreSQL. Patch is just a little bit tested (some valid functions created and successfully run as well as some erroneous ones created and emitted proper error messages when used). My platform is FreeBSD 5.0-CURRENT (with perl 5.6.0 provided in the base system). Alex Kapranoff
This commit is contained in:
parent
879639b5be
commit
5c6fa5ee32
@ -4,7 +4,7 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 1994, Regents of the University of California
|
# Copyright (c) 1994, Regents of the University of California
|
||||||
#
|
#
|
||||||
# $Header: /cvsroot/pgsql/src/pl/Makefile,v 1.12 2000/08/31 16:12:09 petere Exp $
|
# $Header: /cvsroot/pgsql/src/pl/Makefile,v 1.13 2000/09/12 04:28:30 momjian Exp $
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -18,10 +18,9 @@ ifeq ($(USE_TCL), true)
|
|||||||
DIRS += tcl
|
DIRS += tcl
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Disabled because it doesn't work
|
ifeq ($(with_perl), yes)
|
||||||
#ifeq ($(with_perl), yes)
|
DIRS += plperl
|
||||||
#DIRS += plperl
|
endif
|
||||||
#endif
|
|
||||||
|
|
||||||
all install installdirs uninstall depend distprep:
|
all install installdirs uninstall depend distprep:
|
||||||
@for dir in $(DIRS); do $(MAKE) -C $$dir $@ || exit; done
|
@for dir in $(DIRS); do $(MAKE) -C $$dir $@ || exit; done
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
* ENHANCEMENTS, OR MODIFICATIONS.
|
* ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/pl/plperl/plperl.c,v 1.12 2000/07/05 23:11:55 tgl Exp $
|
* $Header: /cvsroot/pgsql/src/pl/plperl/plperl.c,v 1.13 2000/09/12 04:28:30 momjian Exp $
|
||||||
*
|
*
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
@ -324,13 +324,13 @@ plperl_create_sub(char * s)
|
|||||||
count = perl_call_pv("mksafefunc", G_SCALAR | G_EVAL | G_KEEPERR);
|
count = perl_call_pv("mksafefunc", G_SCALAR | G_EVAL | G_KEEPERR);
|
||||||
SPAGAIN;
|
SPAGAIN;
|
||||||
|
|
||||||
if (SvTRUE(GvSV(errgv)))
|
if (SvTRUE(ERRSV))
|
||||||
{
|
{
|
||||||
POPs;
|
POPs;
|
||||||
PUTBACK;
|
PUTBACK;
|
||||||
FREETMPS;
|
FREETMPS;
|
||||||
LEAVE;
|
LEAVE;
|
||||||
elog(ERROR, "creation of function failed : %s", SvPV(GvSV(errgv), na));
|
elog(ERROR, "creation of function failed : %s", SvPV_nolen(ERRSV));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count != 1) {
|
if (count != 1) {
|
||||||
@ -449,13 +449,13 @@ plperl_call_perl_func(plperl_proc_desc * desc, FunctionCallInfo fcinfo)
|
|||||||
elog(ERROR, "plperl : didn't get a return item from function");
|
elog(ERROR, "plperl : didn't get a return item from function");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SvTRUE(GvSV(errgv)))
|
if (SvTRUE(ERRSV))
|
||||||
{
|
{
|
||||||
POPs;
|
POPs;
|
||||||
PUTBACK;
|
PUTBACK;
|
||||||
FREETMPS;
|
FREETMPS;
|
||||||
LEAVE;
|
LEAVE;
|
||||||
elog(ERROR, "plperl : error from function : %s", SvPV(GvSV(errgv), na));
|
elog(ERROR, "plperl : error from function : %s", SvPV_nolen(ERRSV));
|
||||||
}
|
}
|
||||||
|
|
||||||
retval = newSVsv(POPs);
|
retval = newSVsv(POPs);
|
||||||
@ -661,7 +661,7 @@ plperl_func_handler(PG_FUNCTION_ARGS)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
retval = FunctionCall3(&prodesc->result_in_func,
|
retval = FunctionCall3(&prodesc->result_in_func,
|
||||||
PointerGetDatum(SvPV(perlret, na)),
|
PointerGetDatum(SvPV_nolen(perlret)),
|
||||||
ObjectIdGetDatum(prodesc->result_in_elem),
|
ObjectIdGetDatum(prodesc->result_in_elem),
|
||||||
Int32GetDatum(prodesc->result_in_len));
|
Int32GetDatum(prodesc->result_in_len));
|
||||||
}
|
}
|
||||||
@ -2184,6 +2184,6 @@ plperl_build_tuple_argument(HeapTuple tuple, TupleDesc tupdesc)
|
|||||||
sv_catpvf(output, "'%s' => undef,", attname);
|
sv_catpvf(output, "'%s' => undef,", attname);
|
||||||
}
|
}
|
||||||
sv_catpv(output, "}");
|
sv_catpv(output, "}");
|
||||||
output = perl_eval_pv(SvPV(output, na), TRUE);
|
output = perl_eval_pv(SvPV_nolen(output), TRUE);
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user