aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeil Conway <neilc@samurai.com>2005-01-27 23:36:15 +0000
committerNeil Conway <neilc@samurai.com>2005-01-27 23:36:15 +0000
commitf76730e35a05afb45abc487c76a01407e199da8d (patch)
tree645aa7acce9b58384de95e70c30e591e7fd3b0b9
parenta885ecd6efc28b57b8079ae865a6a09035d1fc3d (diff)
downloadpostgresql-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.c24
-rw-r--r--src/backend/utils/cache/lsyscache.c39
-rw-r--r--src/include/utils/acl.h3
-rw-r--r--src/include/utils/lsyscache.h5
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)