summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2008-11-14 17:40:56 +0000
committerTom Lane2008-11-14 17:40:56 +0000
commitfe568aed783bdb4d4a7e32bfd0ce255c9d6b581a (patch)
tree614e0d541d96e845ddf0e438f856f27e1e05f19b
parentb483786c829be1f3f4df754739e3a0ed343338ad (diff)
Make CREATE CONVERSION verify that a putative encoding conversion function
returns VOID. This is the last of the easy fixes I recommended in [email protected] --- the others got done awhile ago but I forgot about this one.
-rw-r--r--src/backend/commands/conversioncmds.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/backend/commands/conversioncmds.c b/src/backend/commands/conversioncmds.c
index 2ab0759b4d..c26811ef45 100644
--- a/src/backend/commands/conversioncmds.c
+++ b/src/backend/commands/conversioncmds.c
@@ -82,6 +82,13 @@ CreateConversionCommand(CreateConversionStmt *stmt)
funcoid = LookupFuncName(func_name, sizeof(funcargs) / sizeof(Oid),
funcargs, false);
+ /* Check it returns VOID, else it's probably the wrong function */
+ if (get_func_rettype(funcoid) != VOIDOID)
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
+ errmsg("encoding conversion function %s must return type \"void\"",
+ NameListToString(func_name))));
+
/* Check we have EXECUTE rights for the function */
aclresult = pg_proc_aclcheck(funcoid, GetUserId(), ACL_EXECUTE);
if (aclresult != ACLCHECK_OK)