summaryrefslogtreecommitdiff
path: root/src/pl/plpgsql/src/pl_handler.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pl/plpgsql/src/pl_handler.c')
-rw-r--r--src/pl/plpgsql/src/pl_handler.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/pl/plpgsql/src/pl_handler.c b/src/pl/plpgsql/src/pl_handler.c
index c49428d923..f38ef04077 100644
--- a/src/pl/plpgsql/src/pl_handler.c
+++ b/src/pl/plpgsql/src/pl_handler.c
@@ -443,14 +443,15 @@ plpgsql_validator(PG_FUNCTION_ARGS)
}
/* Disallow pseudotypes in arguments (either IN or OUT) */
- /* except for polymorphic */
+ /* except for RECORD and polymorphic */
numargs = get_func_arg_info(tuple,
&argtypes, &argnames, &argmodes);
for (i = 0; i < numargs; i++)
{
if (get_typtype(argtypes[i]) == TYPTYPE_PSEUDO)
{
- if (!IsPolymorphicType(argtypes[i]))
+ if (argtypes[i] != RECORDOID &&
+ !IsPolymorphicType(argtypes[i]))
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("PL/pgSQL functions cannot accept type %s",