Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit0a17fd7

Browse files
committed
Please find a attached a small patch that adds accessor functions
for "aclitem" so that it is not an opaque datatype.I needed these functions to browse aclitems from user land. I can loadthem when necessary, but it seems to me that these accessors for abackend type belong to the backend, so I submit them.Fabien Coelho
1 parent9cb7b76 commit0a17fd7

File tree

6 files changed

+82
-5
lines changed

6 files changed

+82
-5
lines changed

‎src/backend/utils/adt/acl.c

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/utils/adt/acl.c,v 1.101 2003/11/29 19:51:57 pgsql Exp $
11+
* $PostgreSQL: pgsql/src/backend/utils/adt/acl.c,v 1.102 2004/04/26 15:06:48 momjian Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -874,6 +874,43 @@ makeaclitem(PG_FUNCTION_ARGS)
874874
PG_RETURN_ACLITEM_P(aclitem);
875875
}
876876

877+
/* give access to internal data within aclitem
878+
*/
879+
Datum
880+
aclitem_grantee(PG_FUNCTION_ARGS)
881+
{
882+
AclItem*a=PG_GETARG_ACLITEM_P(0);
883+
PG_RETURN_INT32(a->ai_grantee);
884+
}
885+
886+
Datum
887+
aclitem_grantor(PG_FUNCTION_ARGS)
888+
{
889+
AclItem*a=PG_GETARG_ACLITEM_P(0);
890+
PG_RETURN_INT32(a->ai_grantor);
891+
}
892+
893+
Datum
894+
aclitem_idtype(PG_FUNCTION_ARGS)
895+
{
896+
AclItem*a=PG_GETARG_ACLITEM_P(0);
897+
PG_RETURN_INT32(ACLITEM_GET_IDTYPE(*a));
898+
}
899+
900+
Datum
901+
aclitem_privs(PG_FUNCTION_ARGS)
902+
{
903+
AclItem*a=PG_GETARG_ACLITEM_P(0);
904+
PG_RETURN_INT32(ACLITEM_GET_PRIVS(*a));
905+
}
906+
907+
Datum
908+
aclitem_goptions(PG_FUNCTION_ARGS)
909+
{
910+
AclItem*a=PG_GETARG_ACLITEM_P(0);
911+
PG_RETURN_INT32(ACLITEM_GET_GOPTIONS(*a));
912+
}
913+
877914
staticAclMode
878915
convert_priv_string(text*priv_type_text)
879916
{

‎src/include/catalog/catversion.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
3838
* Portions Copyright (c) 1994, Regents of the University of California
3939
*
40-
* $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.224 2004/04/23 20:32:19 neilc Exp $
40+
* $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.225 2004/04/26 15:06:49 momjian Exp $
4141
*
4242
*-------------------------------------------------------------------------
4343
*/
@@ -53,6 +53,6 @@
5353
*/
5454

5555
/*yyyymmddN */
56-
#defineCATALOG_VERSION_NO200404220
56+
#defineCATALOG_VERSION_NO200404260
5757

5858
#endif

‎src/include/catalog/pg_proc.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
88
* Portions Copyright (c) 1994, Regents of the University of California
99
*
10-
* $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.325 2004/04/23 20:32:19 neilc Exp $
10+
* $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.326 2004/04/26 15:06:49 momjian Exp $
1111
*
1212
* NOTES
1313
* The script catalog/genbki.sh reads this file and generates .bki
@@ -3534,6 +3534,18 @@ DESCR("non-persistent series generator");
35343534
DATA(insertOID=1069 (generate_seriesPGNSPPGUID12ffttv220"20 20"_null_generate_series_int8-_null_ ));
35353535
DESCR("non-persistent series generator");
35363536

3537+
/* aclitem utils */
3538+
DATA(insertOID=2510 (aclitem_grantorPGNSPPGUID12fftfi123"1033"_null_aclitem_grantor-_null_ ));
3539+
DESCR("extract user id grantor from aclitem");
3540+
DATA(insertOID=2511 (aclitem_granteePGNSPPGUID12fftfi123"1033"_null_aclitem_grantee-_null_ ));
3541+
DESCR("extract grantee (user or group id) from aclitem");
3542+
DATA(insertOID=2512 (aclitem_idtypePGNSPPGUID12fftfi123"1033"_null_aclitem_idtype-_null_ ));
3543+
DESCR("extract id type of grantee (0 public, 1 user, 2 group) from aclitem");
3544+
DATA(insertOID=2513 (aclitem_privsPGNSPPGUID12fftfi123"1033"_null_aclitem_privs-_null_ ));
3545+
DESCR("extract privileges from aclitem");
3546+
DATA(insertOID=2514 (aclitem_goptionsPGNSPPGUID12fftfi123"1033"_null_aclitem_goptions-_null_ ));
3547+
DESCR("extract grant options from aclitem");
3548+
35373549

35383550
/*
35393551
* Symbolic values for provolatile column: these indicate whether the result

‎src/include/utils/acl.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
88
* Portions Copyright (c) 1994, Regents of the University of California
99
*
10-
* $PostgreSQL: pgsql/src/include/utils/acl.h,v 1.66 2004/01/14 23:01:55 tgl Exp $
10+
* $PostgreSQL: pgsql/src/include/utils/acl.h,v 1.67 2004/04/26 15:06:49 momjian Exp $
1111
*
1212
* NOTES
1313
* An ACL array is simply an array of AclItems, representing the union
@@ -220,6 +220,11 @@ extern Datum aclcontains(PG_FUNCTION_ARGS);
220220
externDatummakeaclitem(PG_FUNCTION_ARGS);
221221
externDatumaclitem_eq(PG_FUNCTION_ARGS);
222222
externDatumhash_aclitem(PG_FUNCTION_ARGS);
223+
externDatumaclitem_grantee(PG_FUNCTION_ARGS);
224+
externDatumaclitem_grantor(PG_FUNCTION_ARGS);
225+
externDatumaclitem_idtype(PG_FUNCTION_ARGS);
226+
externDatumaclitem_privs(PG_FUNCTION_ARGS);
227+
externDatumaclitem_goptions(PG_FUNCTION_ARGS);
223228

224229
/*
225230
* prototypes for functions in aclchk.c

‎src/test/regress/expected/privileges.out

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -581,6 +581,20 @@ SELECT has_table_privilege('regressuser1', 'atest4', 'SELECT WITH GRANT OPTION')
581581
t
582582
(1 row)
583583

584+
-- aclitem utils small test
585+
SELECT u1.usename AS u1, u2.usename AS u2,
586+
aclitem_idtype(c.relacl[0]) AS idtype,
587+
aclitem_privs(c.relacl[0]) AS privs,
588+
aclitem_goptions(c.relacl[0]) AS goptions
589+
FROM pg_class AS c, pg_user AS u1, pg_user AS u2
590+
WHERE u1.usesysid = aclitem_grantor(c.relacl[0])
591+
AND u2.usesysid = aclitem_grantee(c.relacl[0])
592+
AND c.relname LIKE 'atest4';
593+
u1 | u2 | idtype | privs | goptions
594+
--------------+--------------+--------+-------+----------
595+
regressuser1 | regressuser1 | 1 | 127 | 127
596+
(1 row)
597+
584598
-- clean up
585599
\c regression
586600
DROP FUNCTION testfunc2(int);

‎src/test/regress/sql/privileges.sql

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,15 @@ SELECT has_table_privilege('regressuser3', 'atest4', 'SELECT'); -- false
316316

317317
SELECT has_table_privilege('regressuser1','atest4','SELECT WITH GRANT OPTION');-- true
318318

319+
-- aclitem utils small test
320+
SELECTu1.usenameAS u1,u2.usenameAS u2,
321+
aclitem_idtype(c.relacl[0])AS idtype,
322+
aclitem_privs(c.relacl[0])AS privs,
323+
aclitem_goptions(c.relacl[0])AS goptions
324+
FROM pg_classAS c, pg_userAS u1, pg_userAS u2
325+
WHEREu1.usesysid= aclitem_grantor(c.relacl[0])
326+
ANDu2.usesysid= aclitem_grantee(c.relacl[0])
327+
ANDc.relnameLIKE'atest4';
319328

320329
-- clean up
321330

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp