diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2008-09-08 00:47:41 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2008-09-08 00:47:41 +0000 |
commit | a0b76dc662efde6e02921c2d16e06418483b7534 (patch) | |
tree | 2f3038d0791a79d2230fca027ac73b5fd64f03c8 /src/backend/utils/adt/acl.c | |
parent | a26c7e3d71d65381bc60b0d0b30f03cd738fb0e9 (diff) | |
download | postgresql-a0b76dc662efde6e02921c2d16e06418483b7534.tar.gz postgresql-a0b76dc662efde6e02921c2d16e06418483b7534.zip |
Create a separate grantable privilege for TRUNCATE, rather than having it be
always owner-only. The TRUNCATE privilege works identically to the DELETE
privilege so far as interactions with the rest of the system go.
Robert Haas
Diffstat (limited to 'src/backend/utils/adt/acl.c')
-rw-r--r-- | src/backend/utils/adt/acl.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/backend/utils/adt/acl.c b/src/backend/utils/adt/acl.c index 3cf54e58750..d0d07751188 100644 --- a/src/backend/utils/adt/acl.c +++ b/src/backend/utils/adt/acl.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/acl.c,v 1.140 2008/03/25 22:42:43 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/acl.c,v 1.141 2008/09/08 00:47:40 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -265,6 +265,9 @@ aclparse(const char *s, AclItem *aip) case ACL_DELETE_CHR: read = ACL_DELETE; break; + case ACL_TRUNCATE_CHR: + read = ACL_TRUNCATE; + break; case ACL_REFERENCES_CHR: read = ACL_REFERENCES; break; @@ -1323,6 +1326,8 @@ convert_priv_string(text *priv_type_text) return ACL_UPDATE; if (pg_strcasecmp(priv_type, "DELETE") == 0) return ACL_DELETE; + if (pg_strcasecmp(priv_type, "TRUNCATE") == 0) + return ACL_TRUNCATE; if (pg_strcasecmp(priv_type, "REFERENCES") == 0) return ACL_REFERENCES; if (pg_strcasecmp(priv_type, "TRIGGER") == 0) @@ -1548,6 +1553,11 @@ convert_table_priv_string(text *priv_type_text) if (pg_strcasecmp(priv_type, "DELETE WITH GRANT OPTION") == 0) return ACL_GRANT_OPTION_FOR(ACL_DELETE); + if (pg_strcasecmp(priv_type, "TRUNCATE") == 0) + return ACL_TRUNCATE; + if (pg_strcasecmp(priv_type, "TRUNCATE WITH GRANT OPTION") == 0) + return ACL_GRANT_OPTION_FOR(ACL_TRUNCATE); + if (pg_strcasecmp(priv_type, "REFERENCES") == 0) return ACL_REFERENCES; if (pg_strcasecmp(priv_type, "REFERENCES WITH GRANT OPTION") == 0) |