From 76e9ad1f5581d03ab06675abf61fd3143d3088e9 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Tue, 12 Jun 2001 16:34:27 +0000 Subject: [PATCH] Back out has_table_privilege patch. --- doc/TODO | 2 +- src/backend/utils/adt/acl.c | 757 +---------------------------- src/include/catalog/pg_proc.h | 31 +- src/include/utils/acl.h | 18 +- src/include/utils/builtins.h | 20 +- src/test/regress/parallel_schedule | 1 - src/test/regress/serial_schedule | 3 +- 7 files changed, 6 insertions(+), 826 deletions(-) diff --git a/doc/TODO b/doc/TODO index dd3092ae67..9dfe217919 100644 --- a/doc/TODO +++ b/doc/TODO @@ -1,6 +1,6 @@ TODO list for PostgreSQL ======================== -Last updated: Tue Jun 12 12:18:04 EDT 2001 +Last updated: Tue Jun 12 12:18:18 EDT 2001 Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us) diff --git a/src/backend/utils/adt/acl.c b/src/backend/utils/adt/acl.c index 14bf6e3c80..9b150d387f 100644 --- a/src/backend/utils/adt/acl.c +++ b/src/backend/utils/adt/acl.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/acl.c,v 1.62 2001/06/12 15:58:34 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/acl.c,v 1.63 2001/06/12 16:34:26 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -31,12 +31,6 @@ static const char *getid(const char *s, char *n); static bool aclitemeq(const AclItem *a1, const AclItem *a2); static bool aclitemgt(const AclItem *a1, const AclItem *a2); -AclMode convert_priv_string(text *priv_type_text); -bool has_table_privilege_cname_cname(char *username, char *relname, text *priv_type_text); -bool has_table_privilege_id_cname(Oid usesysid, char *relname, text *priv_type_text); -bool has_table_privilege_cname_id(char *username, Oid reloid, text *priv_type_text); -static char *get_Name(text *relin); - #define ACL_IDTYPE_GID_KEYWORD "group" #define ACL_IDTYPE_UID_KEYWORD "user" @@ -716,752 +710,3 @@ makeAclString(const char *privileges, const char *grantee, char grant_or_revoke) pfree(str.data); return ret; } - - -/* - * has_table_privilege_tname_tname - * Check user privileges on a relation given - * text usename, text relname, and text priv name. - * - * RETURNS - * a boolean value - * 't' indicating user has the privilege - * 'f' indicating user does not have the privilege - */ -Datum -has_table_privilege_tname_tname(PG_FUNCTION_ARGS) -{ - text *username_text; - char *username; - text *relname_text; - char *relname; - text *priv_type_text; - bool result; - - username_text = PG_GETARG_TEXT_P(0); - relname_text = PG_GETARG_TEXT_P(1); - priv_type_text = PG_GETARG_TEXT_P(2); - - /* - * Convert username and relname 'text' pattern to null-terminated string - */ - username = get_Name(username_text); - relname = get_Name(relname_text); - - /* - * Make use of has_table_privilege_cname_cname. - * It accepts the arguments we now have. - */ - result = has_table_privilege_cname_cname(username, relname, priv_type_text); - - PG_RETURN_BOOL(result); - -} - - -/* - * has_table_privilege_tname_name - * Check user privileges on a relation given - * text usename, name relname, and text priv name. - * - * RETURNS - * a boolean value - * 't' indicating user has the privilege - * 'f' indicating user does not have the privilege - */ -Datum -has_table_privilege_tname_name(PG_FUNCTION_ARGS) -{ - text *username_text; - char *username; - Name relname_name; - char *relname; - text *priv_type_text; - bool result; - - username_text = PG_GETARG_TEXT_P(0); - relname_name = PG_GETARG_NAME(1); - priv_type_text = PG_GETARG_TEXT_P(2); - - /* - * Convert username 'text' pattern to null-terminated string - */ - username = get_Name(username_text); - - /* - * Convert relname 'name' pattern to null-terminated string - */ - relname = DatumGetCString(DirectFunctionCall1(nameout, PointerGetDatum(relname_name))); - - /* - * Make use of has_table_privilege_cname_cname. - * It accepts the arguments we now have. - */ - result = has_table_privilege_cname_cname(username, relname, priv_type_text); - - PG_RETURN_BOOL(result); - -} - - -/* - * has_table_privilege_name_tname - * Check user privileges on a relation given - * name usename, text relname, and text priv name. - * - * RETURNS - * a boolean value - * 't' indicating user has the privilege - * 'f' indicating user does not have the privilege - */ -Datum -has_table_privilege_name_tname(PG_FUNCTION_ARGS) -{ - Name username_name; - char *username; - text *relname_text; - char *relname; - text *priv_type_text; - bool result; - - username_name = PG_GETARG_NAME(0); - relname_text = PG_GETARG_TEXT_P(1); - priv_type_text = PG_GETARG_TEXT_P(2); - - /* - * Convert username 'name' pattern to null-terminated string - */ - username = DatumGetCString(DirectFunctionCall1(nameout, PointerGetDatum(username_name))); - - /* - * Convert relname 'text' pattern to null-terminated string - */ - relname = get_Name(relname_text); - - /* - * Make use of has_table_privilege_cname_cname. - * It accepts the arguments we now have. - */ - result = has_table_privilege_cname_cname(username, relname, priv_type_text); - - PG_RETURN_BOOL(result); - -} - - -/* - * has_table_privilege_name_name - * Check user privileges on a relation given - * name usename, name relname, and text priv name. - * - * RETURNS - * a boolean value - * 't' indicating user has the privilege - * 'f' indicating user does not have the privilege - */ -Datum -has_table_privilege_name_name(PG_FUNCTION_ARGS) -{ - Name username_name; - char *username; - Name relname_name; - char *relname; - text *priv_type_text; - bool result; - - username_name = PG_GETARG_NAME(0); - relname_name = PG_GETARG_NAME(1); - priv_type_text = PG_GETARG_TEXT_P(2); - - /* - * Convert username and relname 'name' pattern to null-terminated string - */ - username = DatumGetCString(DirectFunctionCall1(nameout, PointerGetDatum(username_name))); - relname = DatumGetCString(DirectFunctionCall1(nameout, PointerGetDatum(relname_name))); - - /* - * Make use of has_table_privilege_cname_cname. - * It accepts the arguments we now have. - */ - result = has_table_privilege_cname_cname(username, relname, priv_type_text); - - PG_RETURN_BOOL(result); - -} - - -/* - * has_table_privilege_tname - * Check user privileges on a relation given - * text relname and text priv name. - * current_user is assumed - * - * RETURNS - * a boolean value - * 't' indicating user has the privilege - * 'f' indicating user does not have the privilege - */ -Datum -has_table_privilege_tname(PG_FUNCTION_ARGS) -{ - Oid usesysid = (Oid) -1; - text *relname_text; - char *relname; - text *priv_type_text; - bool result; - - relname_text = PG_GETARG_TEXT_P(0); - priv_type_text = PG_GETARG_TEXT_P(1); - - usesysid = GetUserId(); - - /* - * Convert relname 'text' pattern to null-terminated string - */ - relname = get_Name(relname_text); - - /* - * Make use of has_table_privilege_id_cname. - * It accepts the arguments we now have. - */ - result = has_table_privilege_id_cname(usesysid, relname, priv_type_text); - - PG_RETURN_BOOL(result); - -} - -/* - * has_table_privilege_name - * Check user privileges on a relation given - * name relname and text priv name. - * current_user is assumed - * - * RETURNS - * a boolean value - * 't' indicating user has the privilege - * 'f' indicating user does not have the privilege - */ -Datum -has_table_privilege_name(PG_FUNCTION_ARGS) -{ - Oid usesysid = (Oid) -1; - Name relname_name; - char *relname; - text *priv_type_text; - bool result; - - relname_name = PG_GETARG_NAME(0); - priv_type_text = PG_GETARG_TEXT_P(1); - - usesysid = GetUserId(); - - /* - * Convert relname 'Name' pattern to null-terminated string - */ - relname = DatumGetCString(DirectFunctionCall1(nameout, PointerGetDatum(relname_name))); - - /* - * Make use of has_table_privilege_id_cname. - * It accepts the arguments we now have. - */ - result = has_table_privilege_id_cname(usesysid, relname, priv_type_text); - - PG_RETURN_BOOL(result); - -} - - -/* - * has_table_privilege_tname_id - * Check user privileges on a relation given - * text usename, rel oid, and text priv name. - * - * RETURNS - * a boolean value - * 't' indicating user has the privilege - * 'f' indicating user does not have the privilege - */ -Datum -has_table_privilege_tname_id(PG_FUNCTION_ARGS) -{ - text *username_text; - char *username; - Oid reloid = 0; - text *priv_type_text; - bool result; - - username_text = PG_GETARG_TEXT_P(0); - reloid = PG_GETARG_OID(1); - priv_type_text = PG_GETARG_TEXT_P(2); - - /* - * Convert username 'text' pattern to null-terminated string - */ - username = get_Name(username_text); - - /* - * Make use of has_table_privilege_cname_id. - * It accepts the arguments we now have. - */ - result = has_table_privilege_cname_id(username, reloid, priv_type_text); - - PG_RETURN_BOOL(result); - -} - - -/* - * has_table_privilege_name_id - * Check user privileges on a relation given - * name usename, rel oid, and text priv name. - * - * RETURNS - * a boolean value - * 't' indicating user has the privilege - * 'f' indicating user does not have the privilege - */ -Datum -has_table_privilege_name_id(PG_FUNCTION_ARGS) -{ - Name username_name; - char *username; - Oid reloid = 0; - text *priv_type_text = NULL; - bool result; - - username_name = PG_GETARG_NAME(0); - reloid = PG_GETARG_OID(1); - priv_type_text = PG_GETARG_TEXT_P(2); - - /* - * Convert username 'name' pattern to null-terminated string - */ - username = DatumGetCString(DirectFunctionCall1(nameout, PointerGetDatum(username_name))); - - /* - * Make use of has_table_privilege_cname_id. - * It accepts the arguments we now have. - */ - result = has_table_privilege_cname_id(username, reloid, priv_type_text); - - PG_RETURN_BOOL(result); - -} - - -/* - * has_table_privilege_id - * Check user privileges on a relation given - * rel oid, and text priv name. - * current_user is assumed - * - * RETURNS - * a boolean value - * 't' indicating user has the privilege - * 'f' indicating user does not have the privilege - */ -Datum -has_table_privilege_id(PG_FUNCTION_ARGS) -{ - char *username; - Oid reloid = 0; - text *priv_type_text; - bool result; - - reloid = PG_GETARG_OID(0); - priv_type_text = PG_GETARG_TEXT_P(1); - username = GetUserName(GetUserId()); - - /* - * Make use of has_table_privilege_cname_id. - * It accepts the arguments we now have. - */ - result = has_table_privilege_cname_id(username, reloid, priv_type_text); - - PG_RETURN_BOOL(result); - -} - - -/* - * has_table_privilege_id_tname - * Check user privileges on a relation given - * usesysid, text relname, and priv name. - * - * RETURNS - * a boolean value - * 't' indicating user has the privilege - * 'f' indicating user does not have the privilege - */ -Datum -has_table_privilege_id_tname(PG_FUNCTION_ARGS) -{ - Oid usesysid; - text *relname_text; - char *relname; - text *priv_type_text; - bool result; - - usesysid = PG_GETARG_OID(0); - relname_text = PG_GETARG_TEXT_P(1); - priv_type_text = PG_GETARG_TEXT_P(2); - - /* - * Convert relname 'text' pattern to null-terminated string - */ - relname = get_Name(relname_text); - - /* - * Make use of has_table_privilege_id_cname. - * It accepts the arguments we now have. - */ - result = has_table_privilege_id_cname(usesysid, relname, priv_type_text); - - PG_RETURN_BOOL(result); - -} - - -/* - * has_table_privilege_id_name - * Check user privileges on a relation given - * usesysid, name relname, and priv name. - * - * RETURNS - * a boolean value - * 't' indicating user has the privilege - * 'f' indicating user does not have the privilege - */ -Datum -has_table_privilege_id_name(PG_FUNCTION_ARGS) -{ - Oid usesysid; - Name relname_name; - char *relname; - text *priv_type_text; - bool result; - - usesysid = PG_GETARG_OID(0); - relname_name = PG_GETARG_NAME(1); - priv_type_text = PG_GETARG_TEXT_P(2); - - /* - * Convert relname 'name' pattern to null-terminated string - */ - relname = DatumGetCString(DirectFunctionCall1(nameout, PointerGetDatum(relname_name))); - - /* - * Make use of has_table_privilege_id_cname. - * It accepts the arguments we now have. - */ - result = has_table_privilege_id_cname(usesysid, relname, priv_type_text); - - PG_RETURN_BOOL(result); - -} - - -/* - * has_table_privilege_id_id - * Check user privileges on a relation given - * usesysid, rel oid, and priv name. - * - * RETURNS - * a boolean value - * 't' indicating user has the privilege - * 'f' indicating user does not have the privilege - */ -Datum -has_table_privilege_id_id(PG_FUNCTION_ARGS) -{ - Oid usesysid; - Oid reloid; - char *relname; - text *priv_type_text; - HeapTuple tuple; - AclMode mode; - int32 result; - - - usesysid = PG_GETARG_OID(0); - reloid = PG_GETARG_OID(1); - priv_type_text = PG_GETARG_TEXT_P(2); - - /* - * Lookup relname based on rel oid - */ - tuple = SearchSysCache(RELOID, ObjectIdGetDatum(reloid), 0, 0, 0); - if (!HeapTupleIsValid(tuple)) { - elog(ERROR, "has_table_privilege: invalid relation oid %d", (int) reloid); - } - - relname = NameStr(((Form_pg_class) GETSTRUCT(tuple))->relname); - - ReleaseSysCache(tuple); - - /* - * Convert priv_type_text to an AclMode - */ - mode = convert_priv_string(priv_type_text); - - /* - * Finally, check for the privilege - */ - result = pg_aclcheck(relname, usesysid, mode); - - if (result == ACLCHECK_OK) { - PG_RETURN_BOOL(TRUE); - } else { - PG_RETURN_BOOL(FALSE); - } - -} - -/* - * Internal functions. - */ - -/* - * convert_priv_string - * Internal function. - * Return mode from priv_type string - * - * RETURNS - * AclMode - */ - -AclMode -convert_priv_string(text *priv_type_text) -{ - char *priv_type = DatumGetCString(DirectFunctionCall1(textout, PointerGetDatum(priv_type_text))); - - /* - * Return mode from priv_type string - */ - if (strcasecmp(priv_type, "SELECT") == 0) - return ACL_SELECT; - - if (strcasecmp(priv_type, "INSERT") == 0) - return ACL_INSERT; - - if (strcasecmp(priv_type, "UPDATE") == 0) - return ACL_UPDATE; - - if (strcasecmp(priv_type, "DELETE") == 0) - return ACL_DELETE; - - if (strcasecmp(priv_type, "RULE") == 0) - return ACL_RULE; - - if (strcasecmp(priv_type, "REFERENCES") == 0) - return ACL_REFERENCES; - - if (strcasecmp(priv_type, "TRIGGER") == 0) - return ACL_TRIGGER; - - elog(ERROR, "has_table_privilege: invalid privilege type %s", priv_type); - /* - * We should never get here, but stop the compiler from complaining - */ - return ACL_NO; - -} - -/* - * has_table_privilege_cname_cname - * Check user privileges on a relation given - * char *usename, char *relname, and text priv name. - * - * RETURNS - * a boolean value - * 't' indicating user has the privilege - * 'f' indicating user does not have the privilege - */ -bool -has_table_privilege_cname_cname(char *username, char *relname, text *priv_type_text) -{ - - Oid usesysid = (Oid) -1; - HeapTuple tuple; - bool result; - - /* - * Lookup userid based on username - */ - - tuple = SearchSysCache(SHADOWNAME, NameGetDatum(username), 0, 0, 0); - if (!HeapTupleIsValid(tuple)) { - elog(ERROR, "has_table_privilege: invalid user name %s", (char *) username); - } - - usesysid = (Oid) ((Form_pg_shadow) GETSTRUCT(tuple))->usesysid; - ReleaseSysCache(tuple); - - /* - * Make use of has_table_privilege_id_cname. - * It accepts the arguments we now have. - */ - result = has_table_privilege_id_cname(usesysid, relname, priv_type_text); - - return result; - -} - - -/* - * has_table_privilege_cname_id - * Check user privileges on a relation given - * char *usename, rel oid, and text priv name. - * - * RETURNS - * a boolean value - * 't' indicating user has the privilege - * 'f' indicating user does not have the privilege - */ -bool -has_table_privilege_cname_id(char *username, Oid reloid, text *priv_type_text) -{ - Oid usesysid = (Oid) -1; - char *relname = NULL; - HeapTuple tuple; - bool result; - - /* - * Lookup userid based on username - */ - - tuple = SearchSysCache(SHADOWNAME, NameGetDatum(username), 0, 0, 0); - if (!HeapTupleIsValid(tuple)) { - elog(ERROR, "has_table_privilege: invalid user name %s", (char *) username); - } - - usesysid = (Oid) ((Form_pg_shadow) GETSTRUCT(tuple))->usesysid; - - ReleaseSysCache(tuple); - - /* - * Lookup relname based on rel oid - */ - tuple = SearchSysCache(RELOID, ObjectIdGetDatum(reloid), 0, 0, 0); - if (!HeapTupleIsValid(tuple)) { - elog(ERROR, "has_table_privilege: invalid relation oid %d", (int) reloid); - } - - relname = NameStr(((Form_pg_class) GETSTRUCT(tuple))->relname); - - ReleaseSysCache(tuple); - - /* - * Make use of has_table_privilege_id_cname. - * It accepts the arguments we now have. - */ - result = has_table_privilege_id_cname(usesysid, relname, priv_type_text); - - return result; - -} - - -/* - * has_table_privilege_id_cname - * Check user privileges on a relation given - * usesysid, char *relname, and text priv name. - * - * RETURNS - * a boolean value - * 't' indicating user has the privilege - * 'f' indicating user does not have the privilege - */ -bool -has_table_privilege_id_cname(Oid usesysid, char *relname, text *priv_type_text) -{ - - HeapTuple tuple; - AclMode mode; - int32 result; - - /* - * Check relname is valid. - * This is needed to deal with the case when usename is a superuser - * in which case pg_aclcheck simply returns ACLCHECK_OK - * without validating relname - */ - tuple = SearchSysCache(RELNAME, PointerGetDatum(relname), 0, 0, 0); - - if (!HeapTupleIsValid(tuple)) { - elog(ERROR, "has_table_privilege: invalid relname %s", relname); - } - ReleaseSysCache(tuple); - - /* - * Convert priv_type_text to an AclMode - */ - mode = convert_priv_string(priv_type_text); - - /* - * Finally, check for the privilege - */ - result = pg_aclcheck(relname, usesysid, mode); - - if (result == ACLCHECK_OK) { - return TRUE; - } else { - return FALSE; - } - -} - - -/* - * Given a 'text' relname parameter to a function, extract the actual - * relname. We downcase the name if it's not double-quoted, - * and truncate it if it's too long. - * - * This is a kluge, really --- should be able to write, e.g. nextval(seqrel). - */ -static char * -get_Name(text *relin) -{ - char *rawname = DatumGetCString(DirectFunctionCall1(textout, - PointerGetDatum(relin))); - int rawlen = strlen(rawname); - char *relname; - - if (rawlen >= 2 && - rawname[0] == '\"' && rawname[rawlen - 1] == '\"') - { - /* strip off quotes, keep case */ - rawname[rawlen - 1] = '\0'; - relname = pstrdup(rawname + 1); - pfree(rawname); - } - else - { - relname = rawname; - - /* - * It's important that this match the identifier downcasing code - * used by backend/parser/scan.l. - */ - for (; *rawname; rawname++) - { - if (isupper((unsigned char) *rawname)) - *rawname = tolower((unsigned char) *rawname); - } - } - - /* Truncate name if it's overlength; again, should match scan.l */ - if (strlen(relname) >= NAMEDATALEN) - { -#ifdef MULTIBYTE - int len; - - len = pg_mbcliplen(relname, i, NAMEDATALEN-1); - relname[len] = '\0'; -#else - relname[NAMEDATALEN-1] = '\0'; -#endif - } - - return relname; -} diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h index cee5017a69..b88af0b91f 100644 --- a/src/include/catalog/pg_proc.h +++ b/src/include/catalog/pg_proc.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: pg_proc.h,v 1.190 2001/06/12 15:58:34 momjian Exp $ + * $Id: pg_proc.h,v 1.191 2001/06/12 16:34:26 momjian Exp $ * * NOTES * The script catalog/genbki.sh reads this file and generates .bki @@ -2627,35 +2627,6 @@ DESCR("unary plus"); DATA(insert OID = 1915 ( numeric_uplus PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_uplus - )); DESCR("unary plus"); -DATA(insert OID = 1920 ( has_table_privilege PGUID 12 f t f t 3 f 16 "25 25 25" 100 0 0 100 has_table_privilege_tname_tname - )); -DESCR("user privilege on relation by text username, text relname"); -DATA(insert OID = 1921 ( has_table_privilege PGUID 12 f t f t 3 f 16 "25 19 25" 100 0 0 100 has_table_privilege_tname_name - )); -DESCR("user privilege on relation by text username, name relname"); -DATA(insert OID = 1922 ( has_table_privilege PGUID 12 f t f t 3 f 16 "19 25 25" 100 0 0 100 has_table_privilege_name_tname - )); -DESCR("user privilege on relation by name username, text relname"); -DATA(insert OID = 1923 ( has_table_privilege PGUID 12 f t f t 3 f 16 "19 19 25" 100 0 0 100 has_table_privilege_name_name - )); -DESCR("user privilege on relation by name username, name relname"); -DATA(insert OID = 1924 ( has_table_privilege PGUID 12 f t f t 2 f 16 "25 25" 100 0 0 100 has_table_privilege_tname - )); -DESCR("current user privilege on relation by text relname"); -DATA(insert OID = 1925 ( has_table_privilege PGUID 12 f t f t 2 f 16 "19 25" 100 0 0 100 has_table_privilege_name - )); -DESCR("current user privilege on relation by name relname"); - -DATA(insert OID = 1926 ( has_table_privilege PGUID 12 f t f t 3 f 16 "25 26 25" 100 0 0 100 has_table_privilege_tname_id - )); -DESCR("user privilege on relation by text username, rel oid"); -DATA(insert OID = 1927 ( has_table_privilege PGUID 12 f t f t 3 f 16 "19 26 25" 100 0 0 100 has_table_privilege_name_id - )); -DESCR("user privilege on relation by text username, rel oid"); -DATA(insert OID = 1928 ( has_table_privilege PGUID 12 f t f t 2 f 16 "26 25" 100 0 0 100 has_table_privilege_id - )); -DESCR("current user privilege on relation by rel oid"); - -DATA(insert OID = 1929 ( has_table_privilege PGUID 12 f t f t 3 f 16 "26 25 25" 100 0 0 100 has_table_privilege_id_tname - )); -DESCR("user privilege on relation by usesysid, relname"); -DATA(insert OID = 1930 ( has_table_privilege PGUID 12 f t f t 3 f 16 "26 19 25" 100 0 0 100 has_table_privilege_id_name - )); -DESCR("user privilege on relation by usesysid, relname"); - -DATA(insert OID = 1931 ( has_table_privilege PGUID 12 f t f t 3 f 16 "26 26 25" 100 0 0 100 has_table_privilege_id_id - )); -DESCR("user privilege on relation by usesysid, rel oid"); - - /* * prototypes for functions pg_proc.c */ diff --git a/src/include/utils/acl.h b/src/include/utils/acl.h index f03d6e2e1b..df58c2aac2 100644 --- a/src/include/utils/acl.h +++ b/src/include/utils/acl.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: acl.h,v 1.35 2001/06/12 15:58:34 momjian Exp $ + * $Id: acl.h,v 1.36 2001/06/12 16:34:27 momjian Exp $ * * NOTES * For backward-compatibility purposes we have to allow there @@ -191,22 +191,6 @@ extern Datum aclcontains(PG_FUNCTION_ARGS); extern const char *aclparse(const char *s, AclItem *aip, unsigned *modechg); extern char *makeAclString(const char *privileges, const char *grantee, char grant_or_revoke); -extern Datum has_table_privilege_tname_tname(PG_FUNCTION_ARGS); -extern Datum has_table_privilege_tname_name(PG_FUNCTION_ARGS); -extern Datum has_table_privilege_name_tname(PG_FUNCTION_ARGS); -extern Datum has_table_privilege_name_name(PG_FUNCTION_ARGS); -extern Datum has_table_privilege_tname(PG_FUNCTION_ARGS); -extern Datum has_table_privilege_name(PG_FUNCTION_ARGS); - -extern Datum has_table_privilege_tname_id(PG_FUNCTION_ARGS); -extern Datum has_table_privilege_name_id(PG_FUNCTION_ARGS); -extern Datum has_table_privilege_id(PG_FUNCTION_ARGS); - -extern Datum has_table_privilege_id_tname(PG_FUNCTION_ARGS); -extern Datum has_table_privilege_id_name(PG_FUNCTION_ARGS); - -extern Datum has_table_privilege_id_id(PG_FUNCTION_ARGS); - /* * prototypes for functions in aclchk.c */ diff --git a/src/include/utils/builtins.h b/src/include/utils/builtins.h index ea53e50303..2db51eb8a8 100644 --- a/src/include/utils/builtins.h +++ b/src/include/utils/builtins.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: builtins.h,v 1.151 2001/06/12 15:58:34 momjian Exp $ + * $Id: builtins.h,v 1.152 2001/06/12 16:34:27 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -22,24 +22,6 @@ /* * Defined in adt/ */ - -/* acl.c */ -extern Datum has_table_privilege_tname_tname(PG_FUNCTION_ARGS); -extern Datum has_table_privilege_tname_name(PG_FUNCTION_ARGS); -extern Datum has_table_privilege_name_tname(PG_FUNCTION_ARGS); -extern Datum has_table_privilege_name_name(PG_FUNCTION_ARGS); -extern Datum has_table_privilege_tname(PG_FUNCTION_ARGS); -extern Datum has_table_privilege_name(PG_FUNCTION_ARGS); - -extern Datum has_table_privilege_tname_id(PG_FUNCTION_ARGS); -extern Datum has_table_privilege_name_id(PG_FUNCTION_ARGS); -extern Datum has_table_privilege_id(PG_FUNCTION_ARGS); - -extern Datum has_table_privilege_id_tname(PG_FUNCTION_ARGS); -extern Datum has_table_privilege_id_name(PG_FUNCTION_ARGS); - -extern Datum has_table_privilege_id_id(PG_FUNCTION_ARGS); - /* bool.c */ extern Datum boolin(PG_FUNCTION_ARGS); extern Datum boolout(PG_FUNCTION_ARGS); diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule index 7e6f9f6e2e..08e97511ac 100644 --- a/src/test/regress/parallel_schedule +++ b/src/test/regress/parallel_schedule @@ -62,7 +62,6 @@ ignore: random test: select_into select_distinct select_distinct_on select_implicit select_having subselect union case join aggregates transactions random portals arrays btree_index hash_index test: privileges -test: has_table_priv test: misc # ---------- diff --git a/src/test/regress/serial_schedule b/src/test/regress/serial_schedule index d559fdaf35..b5c67ff91d 100644 --- a/src/test/regress/serial_schedule +++ b/src/test/regress/serial_schedule @@ -1,4 +1,4 @@ -# $Header: /cvsroot/pgsql/src/test/regress/serial_schedule,v 1.5 2001/06/12 15:58:34 momjian Exp $ +# $Header: /cvsroot/pgsql/src/test/regress/serial_schedule,v 1.6 2001/06/12 16:34:27 momjian Exp $ # This should probably be in an order similar to parallel_schedule. test: boolean test: char @@ -69,7 +69,6 @@ test: arrays test: btree_index test: hash_index test: privileges -test: has_table_priv test: misc test: select_views test: alter_table -- 2.40.0