plperl-record-args.patch
text/x-patch
Filename: plperl-record-args.patch
Type: text/x-patch
Part: 0
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: context
| File | + | − |
|---|---|---|
| src/pl/plperl/plperl.c | 6 | 0 |
*** a/src/pl/plperl/plperl.c
--- b/src/pl/plperl/plperl.c
***************
*** 1371,1377 **** plperl_validator(PG_FUNCTION_ARGS)
&argtypes, &argnames, &argmodes);
for (i = 0; i < numargs; i++)
{
! if (get_typtype(argtypes[i]) == TYPTYPE_PSEUDO)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("PL/Perl functions cannot accept type %s",
--- 1371,1378 ----
&argtypes, &argnames, &argmodes);
for (i = 0; i < numargs; i++)
{
! if (get_typtype(argtypes[i]) == TYPTYPE_PSEUDO &&
! argtypes[i] != RECORDOID)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("PL/Perl functions cannot accept type %s",
***************
*** 2105,2111 **** compile_plperl_function(Oid fn_oid, bool is_trigger)
typeStruct = (Form_pg_type) GETSTRUCT(typeTup);
/* Disallow pseudotype argument */
! if (typeStruct->typtype == TYPTYPE_PSEUDO)
{
free(prodesc->proname);
free(prodesc);
--- 2106,2113 ----
typeStruct = (Form_pg_type) GETSTRUCT(typeTup);
/* Disallow pseudotype argument */
! if (typeStruct->typtype == TYPTYPE_PSEUDO &&
! procStruct->proargtypes.values[i] != RECORDOID)
{
free(prodesc->proname);
free(prodesc);
***************
*** 2115,2121 **** compile_plperl_function(Oid fn_oid, bool is_trigger)
format_type_be(procStruct->proargtypes.values[i]))));
}
! if (typeStruct->typtype == TYPTYPE_COMPOSITE)
prodesc->arg_is_rowtype[i] = true;
else
{
--- 2117,2124 ----
format_type_be(procStruct->proargtypes.values[i]))));
}
! if (typeStruct->typtype == TYPTYPE_COMPOSITE ||
! procStruct->proargtypes.values[i] == RECORDOID)
prodesc->arg_is_rowtype[i] = true;
else
{