diff options
author | Neil Conway <neilc@samurai.com> | 2005-01-27 23:36:15 +0000 |
---|---|---|
committer | Neil Conway <neilc@samurai.com> | 2005-01-27 23:36:15 +0000 |
commit | f76730e35a05afb45abc487c76a01407e199da8d (patch) | |
tree | 645aa7acce9b58384de95e70c30e591e7fd3b0b9 | |
parent | a885ecd6efc28b57b8079ae865a6a09035d1fc3d (diff) | |
download | postgresql-f76730e35a05afb45abc487c76a01407e199da8d.tar.gz postgresql-f76730e35a05afb45abc487c76a01407e199da8d.zip |
Small patch to move get_grosysid() from catalog/aclchk.c to
utils/cache/lsyscache.c where it can be used by other things. Also
cleans up both get_usesysid() and get_grosysid() a bit. From Stephen
Frost.
-rw-r--r-- | src/backend/catalog/aclchk.c | 24 | ||||
-rw-r--r-- | src/backend/utils/cache/lsyscache.c | 39 | ||||
-rw-r--r-- | src/include/utils/acl.h | 3 | ||||
-rw-r--r-- | src/include/utils/lsyscache.h | 5 |
4 files changed, 40 insertions, 31 deletions
diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c index 23a4dbc03ae..d1c33f57ad5 100644 --- a/src/backend/catalog/aclchk.c +++ b/src/backend/catalog/aclchk.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/aclchk.c,v 1.109 2005/01/27 23:23:51 neilc Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/aclchk.c,v 1.110 2005/01/27 23:36:06 neilc Exp $ * * NOTES * See acl.h. @@ -1208,28 +1208,6 @@ privilege_to_string(AclMode privilege) return NULL; /* appease compiler */ } - -AclId -get_grosysid(char *groname) -{ - HeapTuple tuple; - AclId id = 0; - - tuple = SearchSysCache(GRONAME, - PointerGetDatum(groname), - 0, 0, 0); - if (HeapTupleIsValid(tuple)) - { - id = ((Form_pg_group) GETSTRUCT(tuple))->grosysid; - ReleaseSysCache(tuple); - } - else - ereport(ERROR, - (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("group \"%s\" does not exist", groname))); - return id; -} - /* * Convert group ID to name, or return NULL if group can't be found */ diff --git a/src/backend/utils/cache/lsyscache.c b/src/backend/utils/cache/lsyscache.c index b15f0f61fb7..e417fcbec85 100644 --- a/src/backend/utils/cache/lsyscache.c +++ b/src/backend/utils/cache/lsyscache.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/cache/lsyscache.c,v 1.119 2004/12/31 22:01:25 pgsql Exp $ + * $PostgreSQL: pgsql/src/backend/utils/cache/lsyscache.c,v 1.120 2005/01/27 23:36:12 neilc Exp $ * * NOTES * Eventually, the index information should go through here, too. @@ -25,6 +25,7 @@ #include "catalog/pg_operator.h" #include "catalog/pg_proc.h" #include "catalog/pg_shadow.h" +#include "catalog/pg_group.h" #include "catalog/pg_statistic.h" #include "catalog/pg_type.h" #include "nodes/makefuncs.h" @@ -2032,7 +2033,7 @@ get_namespace_name(Oid nspid) AclId get_usesysid(const char *username) { - int32 result; + AclId userId; HeapTuple userTup; userTup = SearchSysCache(SHADOWNAME, @@ -2043,9 +2044,39 @@ get_usesysid(const char *username) (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("user \"%s\" does not exist", username))); - result = ((Form_pg_shadow) GETSTRUCT(userTup))->usesysid; + userId = ((Form_pg_shadow) GETSTRUCT(userTup))->usesysid; ReleaseSysCache(userTup); - return result; + return userId; +} + +/* + * get_grosysid + * + * Given a group name, look up the group's sysid. + * Raises an error if no such group (rather than returning zero, + * which might possibly be a valid grosysid). + * + */ +AclId +get_grosysid(char *groname) +{ + AclId groupId; + HeapTuple groupTup; + + groupTup = SearchSysCache(GRONAME, + PointerGetDatum(groname), + 0, 0, 0); + if (!HeapTupleIsValid(groupTup)) + ereport(ERROR, + (errcode(ERRCODE_UNDEFINED_OBJECT), + errmsg("group \"%s\" does not exist", groname))); + + groupId = ((Form_pg_group) GETSTRUCT(groupTup))->grosysid; + + ReleaseSysCache(groupTup); + + return groupId; } + diff --git a/src/include/utils/acl.h b/src/include/utils/acl.h index 57f773853d3..ac04945bcd0 100644 --- a/src/include/utils/acl.h +++ b/src/include/utils/acl.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/utils/acl.h,v 1.76 2004/12/31 22:03:45 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/utils/acl.h,v 1.77 2005/01/27 23:36:14 neilc Exp $ * * NOTES * An ACL array is simply an array of AclItems, representing the union @@ -245,7 +245,6 @@ extern Datum hash_aclitem(PG_FUNCTION_ARGS); * prototypes for functions in aclchk.c */ extern void ExecuteGrantStmt(GrantStmt *stmt); -extern AclId get_grosysid(char *groname); extern char *get_groname(AclId grosysid); extern AclMode pg_class_aclmask(Oid table_oid, AclId userid, diff --git a/src/include/utils/lsyscache.h b/src/include/utils/lsyscache.h index 29631238f0c..100d6d12775 100644 --- a/src/include/utils/lsyscache.h +++ b/src/include/utils/lsyscache.h @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/utils/lsyscache.h,v 1.93 2004/12/31 22:03:46 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/utils/lsyscache.h,v 1.94 2005/01/27 23:36:15 neilc Exp $ * *------------------------------------------------------------------------- */ @@ -115,7 +115,8 @@ extern void free_attstatsslot(Oid atttype, Datum *values, int nvalues, float4 *numbers, int nnumbers); extern char *get_namespace_name(Oid nspid); -extern int32 get_usesysid(const char *username); +extern AclId get_usesysid(const char *username); +extern AclId get_grosysid(char *groname); #define is_array_type(typid) (get_element_type(typid) != InvalidOid) |