aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2019-11-12 17:04:46 -0300
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2019-11-12 17:06:58 -0300
commitdcb7d3cafa3197c5425c129ba0dc5eddd23c0532 (patch)
tree9cba76bdf06895c94fc2f8e4528c8c7061af60ad /src/backend/commands
parent8c951687f58ad604be13e6addfd56446afb36e13 (diff)
downloadpostgresql-dcb7d3cafa3197c5425c129ba0dc5eddd23c0532.tar.gz
postgresql-dcb7d3cafa3197c5425c129ba0dc5eddd23c0532.zip
Have LookupFuncName accept NULL argtypes for 0 args
Prior to this change, it requires to be passed a valid pointer just to be able to pass it to a zero-byte memcmp, per 0a52d378b03b. Given the strange resulting code in callsites, it seems better to test for the case specifically and remove the requirement. Reported-by: Ranier Vilela Discussion: https://postgr.es/m/MN2PR18MB2927F24692485D754794F01BE3740@MN2PR18MB2927.namprd18.prod.outlook.com Discussion: https://postgr.es/m/MN2PR18MB2927F6873DF2774A505AC298E3740@MN2PR18MB2927.namprd18.prod.outlook.com
Diffstat (limited to 'src/backend/commands')
-rw-r--r--src/backend/commands/event_trigger.c3
-rw-r--r--src/backend/commands/foreigncmds.c3
-rw-r--r--src/backend/commands/proclang.c4
-rw-r--r--src/backend/commands/trigger.c3
4 files changed, 5 insertions, 8 deletions
diff --git a/src/backend/commands/event_trigger.c b/src/backend/commands/event_trigger.c
index 6b022af4ab9..f021d71a5cb 100644
--- a/src/backend/commands/event_trigger.c
+++ b/src/backend/commands/event_trigger.c
@@ -171,7 +171,6 @@ CreateEventTrigger(CreateEventTrigStmt *stmt)
HeapTuple tuple;
Oid funcoid;
Oid funcrettype;
- Oid fargtypes[1]; /* dummy */
Oid evtowner = GetUserId();
ListCell *lc;
List *tags = NULL;
@@ -237,7 +236,7 @@ CreateEventTrigger(CreateEventTrigStmt *stmt)
stmt->trigname)));
/* Find and validate the trigger function. */
- funcoid = LookupFuncName(stmt->funcname, 0, fargtypes, false);
+ funcoid = LookupFuncName(stmt->funcname, 0, NULL, false);
funcrettype = get_func_rettype(funcoid);
if (funcrettype != EVTTRIGGEROID)
ereport(ERROR,
diff --git a/src/backend/commands/foreigncmds.c b/src/backend/commands/foreigncmds.c
index f96c278a6a1..766c9f95c80 100644
--- a/src/backend/commands/foreigncmds.c
+++ b/src/backend/commands/foreigncmds.c
@@ -475,13 +475,12 @@ static Oid
lookup_fdw_handler_func(DefElem *handler)
{
Oid handlerOid;
- Oid funcargtypes[1]; /* dummy */
if (handler == NULL || handler->arg == NULL)
return InvalidOid;
/* handlers have no arguments */
- handlerOid = LookupFuncName((List *) handler->arg, 0, funcargtypes, false);
+ handlerOid = LookupFuncName((List *) handler->arg, 0, NULL, false);
/* check that handler has correct return type */
if (get_func_rettype(handlerOid) != FDW_HANDLEROID)
diff --git a/src/backend/commands/proclang.c b/src/backend/commands/proclang.c
index 343cd1dbb05..b51c373b93f 100644
--- a/src/backend/commands/proclang.c
+++ b/src/backend/commands/proclang.c
@@ -105,7 +105,7 @@ CreateProceduralLanguage(CreatePLangStmt *stmt)
* return type.
*/
funcname = SystemFuncName(pltemplate->tmplhandler);
- handlerOid = LookupFuncName(funcname, 0, funcargtypes, true);
+ handlerOid = LookupFuncName(funcname, 0, NULL, true);
if (OidIsValid(handlerOid))
{
funcrettype = get_func_rettype(handlerOid);
@@ -263,7 +263,7 @@ CreateProceduralLanguage(CreatePLangStmt *stmt)
* Lookup the PL handler function and check that it is of the expected
* return type
*/
- handlerOid = LookupFuncName(stmt->plhandler, 0, funcargtypes, false);
+ handlerOid = LookupFuncName(stmt->plhandler, 0, NULL, false);
funcrettype = get_func_rettype(handlerOid);
if (funcrettype != LANGUAGE_HANDLEROID)
{
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index cef6d02f517..84144b46b15 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -179,7 +179,6 @@ CreateTrigger(CreateTrigStmt *stmt, const char *queryString,
ScanKeyData key;
Relation pgrel;
HeapTuple tuple;
- Oid fargtypes[1]; /* dummy */
Oid funcrettype;
Oid trigoid;
char internaltrigname[NAMEDATALEN];
@@ -690,7 +689,7 @@ CreateTrigger(CreateTrigStmt *stmt, const char *queryString,
* Find and validate the trigger function.
*/
if (!OidIsValid(funcoid))
- funcoid = LookupFuncName(stmt->funcname, 0, fargtypes, false);
+ funcoid = LookupFuncName(stmt->funcname, 0, NULL, false);
if (!isInternal)
{
aclresult = pg_proc_aclcheck(funcoid, GetUserId(), ACL_EXECUTE);