postgres.git / summary / log / commit / refs

commit    e64d3c5635cef9ee2e9d67904f1d3e88f4d8b2e7
Author:   Peter Eisentraut <peter_e@gmx.net>
Date:     Thu Oct 23 01:41:43 2014 +0000

    Minimize calls of pg_class_aclcheck to minimum necessary
    
    In a couple of code paths, pg_class_aclcheck is called in succession
    with multiple different modes set.  This patch combines those modes to
    have a single call of this function and reduce a bit process overhead
    for permission checking.
    
    Author: Michael Paquier <michael@otacoo.com>
    Reviewed-by: Fabrízio de Royes Mello <fabriziomello@gmail.com>


src/backend/commands/sequence.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c index 3b89dd009bc..6d5f65b8bd4 100644 --- a/src/backend/commands/sequence.c +++ b/src/backend/commands/sequence.c @@ -546,8 +546,8 @@ nextval_internal(Oid relid) /* open and AccessShareLock sequence */ init_sequence(relid, &elm, &seqrel); - if (pg_class_aclcheck(elm->relid, GetUserId(), ACL_USAGE) != ACLCHECK_OK && - pg_class_aclcheck(elm->relid, GetUserId(), ACL_UPDATE) != ACLCHECK_OK) + if (pg_class_aclcheck(elm->relid, GetUserId(), + ACL_USAGE | ACL_UPDATE) != ACLCHECK_OK) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), errmsg("permission denied for sequence %s", @@ -759,8 +759,8 @@ currval_oid(PG_FUNCTION_ARGS) /* open and AccessShareLock sequence */ init_sequence(relid, &elm, &seqrel); - if (pg_class_aclcheck(elm->relid, GetUserId(), ACL_SELECT) != ACLCHECK_OK && - pg_class_aclcheck(elm->relid, GetUserId(), ACL_USAGE) != ACLCHECK_OK) + if (pg_class_aclcheck(elm->relid, GetUserId(), + ACL_SELECT | ACL_USAGE) != ACLCHECK_OK) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), errmsg("permission denied for sequence %s", @@ -801,8 +801,8 @@ lastval(PG_FUNCTION_ARGS) /* nextval() must have already been called for this sequence */ Assert(last_used_seq->last_valid); - if (pg_class_aclcheck(last_used_seq->relid, GetUserId(), ACL_SELECT) != ACLCHECK_OK && - pg_class_aclcheck(last_used_seq->relid, GetUserId(), ACL_USAGE) != ACLCHECK_OK) + if (pg_class_aclcheck(last_used_seq->relid, GetUserId(), + ACL_SELECT | ACL_USAGE) != ACLCHECK_OK) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), errmsg("permission denied for sequence %s", [parent: a5f7d581943e]