From 127f3716a28cceca5077786e2cb3717e36dbb426 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Tue, 27 Feb 2018 09:55:32 -0500 Subject: [PATCH v1 1/2] fixup! Add prokind column, replacing proisagg and proiswindow --- src/backend/commands/dropcmds.c | 2 +- src/backend/parser/parse_func.c | 6 +++--- src/backend/utils/cache/lsyscache.c | 12 ++++++------ src/include/utils/lsyscache.h | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/backend/commands/dropcmds.c b/src/backend/commands/dropcmds.c index fc4ce8d22a..45493abf57 100644 --- a/src/backend/commands/dropcmds.c +++ b/src/backend/commands/dropcmds.c @@ -92,7 +92,7 @@ RemoveObjects(DropStmt *stmt) */ if (stmt->removeType == OBJECT_FUNCTION) { - if (get_func_isagg(address.objectId)) + if (get_func_kind(address.objectId) == PROKIND_AGGREGATE) ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), errmsg("\"%s\" is an aggregate function", diff --git a/src/backend/parser/parse_func.c b/src/backend/parser/parse_func.c index 9dbf2c2b63..0b5145f70d 100644 --- a/src/backend/parser/parse_func.c +++ b/src/backend/parser/parse_func.c @@ -2078,7 +2078,7 @@ LookupFuncWithArgs(ObjectType objtype, ObjectWithArgs *func, bool noError) if (objtype == OBJECT_FUNCTION) { /* Make sure it's a function, not a procedure */ - if (oid && get_func_rettype(oid) == InvalidOid) + if (oid && get_func_kind(oid) == PROKIND_PROCEDURE) { if (noError) return InvalidOid; @@ -2109,7 +2109,7 @@ LookupFuncWithArgs(ObjectType objtype, ObjectWithArgs *func, bool noError) } /* Make sure it's a procedure */ - if (get_func_rettype(oid) != InvalidOid) + if (get_func_kind(oid) != PROKIND_PROCEDURE) { if (noError) return InvalidOid; @@ -2145,7 +2145,7 @@ LookupFuncWithArgs(ObjectType objtype, ObjectWithArgs *func, bool noError) } /* Make sure it's an aggregate */ - if (!get_func_isagg(oid)) + if (get_func_kind(oid) != PROKIND_AGGREGATE) { if (noError) return InvalidOid; diff --git a/src/backend/utils/cache/lsyscache.c b/src/backend/utils/cache/lsyscache.c index 161470aa34..869a937d5a 100644 --- a/src/backend/utils/cache/lsyscache.c +++ b/src/backend/utils/cache/lsyscache.c @@ -1600,20 +1600,20 @@ func_parallel(Oid funcid) } /* - * get_func_isagg - * Given procedure id, return whether the function is an aggregate. + * get_func_kind + * Given procedure id, return the function kind (prokind). */ -bool -get_func_isagg(Oid funcid) +char +get_func_kind(Oid funcid) { HeapTuple tp; - bool result; + char result; tp = SearchSysCache1(PROCOID, ObjectIdGetDatum(funcid)); if (!HeapTupleIsValid(tp)) elog(ERROR, "cache lookup failed for function %u", funcid); - result = ((Form_pg_proc) GETSTRUCT(tp))->prokind == PROKIND_AGGREGATE; + result = ((Form_pg_proc) GETSTRUCT(tp))->prokind; ReleaseSysCache(tp); return result; } diff --git a/src/include/utils/lsyscache.h b/src/include/utils/lsyscache.h index 1f6c04a8f3..3014cabb35 100644 --- a/src/include/utils/lsyscache.h +++ b/src/include/utils/lsyscache.h @@ -117,7 +117,7 @@ extern bool get_func_retset(Oid funcid); extern bool func_strict(Oid funcid); extern char func_volatile(Oid funcid); extern char func_parallel(Oid funcid); -extern bool get_func_isagg(Oid funcid); +extern char get_func_kind(Oid funcid); extern bool get_func_leakproof(Oid funcid); extern float4 get_func_cost(Oid funcid); extern float4 get_func_rows(Oid funcid); base-commit: bc1adc651b8e60680aea144d51ae8bc78ea6b2fb prerequisite-patch-id: f46ead32b2ef64d66cc1994da7db6e57857c0270 prerequisite-patch-id: 62e1cab8d489dfd26a2222f5b0f48f17a48cb63f -- 2.16.2