Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
76e9ad1f
Commit
76e9ad1f
authored
Jun 12, 2001
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Back out has_table_privilege patch.
parent
3c3ff428
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
6 additions
and
826 deletions
+6
-826
doc/TODO
doc/TODO
+1
-1
src/backend/utils/adt/acl.c
src/backend/utils/adt/acl.c
+1
-756
src/include/catalog/pg_proc.h
src/include/catalog/pg_proc.h
+1
-30
src/include/utils/acl.h
src/include/utils/acl.h
+1
-17
src/include/utils/builtins.h
src/include/utils/builtins.h
+1
-19
src/test/regress/parallel_schedule
src/test/regress/parallel_schedule
+0
-1
src/test/regress/serial_schedule
src/test/regress/serial_schedule
+1
-2
No files found.
doc/TODO
View file @
76e9ad1f
TODO list for PostgreSQL
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)
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
...
...
src/backend/utils/adt/acl.c
View file @
76e9ad1f
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
*
*
*
*
* IDENTIFICATION
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/adt/acl.c,v 1.6
2 2001/06/12 15:58:34
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/adt/acl.c,v 1.6
3 2001/06/12 16:34:26
momjian Exp $
*
*
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*/
*/
...
@@ -31,12 +31,6 @@ static const char *getid(const char *s, char *n);
...
@@ -31,12 +31,6 @@ static const char *getid(const char *s, char *n);
static
bool
aclitemeq
(
const
AclItem
*
a1
,
const
AclItem
*
a2
);
static
bool
aclitemeq
(
const
AclItem
*
a1
,
const
AclItem
*
a2
);
static
bool
aclitemgt
(
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_GID_KEYWORD "group"
#define ACL_IDTYPE_UID_KEYWORD "user"
#define ACL_IDTYPE_UID_KEYWORD "user"
...
@@ -716,752 +710,3 @@ makeAclString(const char *privileges, const char *grantee, char grant_or_revoke)
...
@@ -716,752 +710,3 @@ makeAclString(const char *privileges, const char *grantee, char grant_or_revoke)
pfree
(
str
.
data
);
pfree
(
str
.
data
);
return
ret
;
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
;
}
src/include/catalog/pg_proc.h
View file @
76e9ad1f
...
@@ -7,7 +7,7 @@
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
* Portions Copyright (c) 1994, Regents of the University of California
*
*
* $Id: pg_proc.h,v 1.19
0 2001/06/12 15:58:34
momjian Exp $
* $Id: pg_proc.h,v 1.19
1 2001/06/12 16:34:26
momjian Exp $
*
*
* NOTES
* NOTES
* The script catalog/genbki.sh reads this file and generates .bki
* The script catalog/genbki.sh reads this file and generates .bki
...
@@ -2627,35 +2627,6 @@ DESCR("unary plus");
...
@@ -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
-
));
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"
);
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
* prototypes for functions pg_proc.c
*/
*/
...
...
src/include/utils/acl.h
View file @
76e9ad1f
...
@@ -7,7 +7,7 @@
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
* Portions Copyright (c) 1994, Regents of the University of California
*
*
* $Id: acl.h,v 1.3
5 2001/06/12 15:58:34
momjian Exp $
* $Id: acl.h,v 1.3
6 2001/06/12 16:34:27
momjian Exp $
*
*
* NOTES
* NOTES
* For backward-compatibility purposes we have to allow there
* For backward-compatibility purposes we have to allow there
...
@@ -191,22 +191,6 @@ extern Datum aclcontains(PG_FUNCTION_ARGS);
...
@@ -191,22 +191,6 @@ extern Datum aclcontains(PG_FUNCTION_ARGS);
extern
const
char
*
aclparse
(
const
char
*
s
,
AclItem
*
aip
,
unsigned
*
modechg
);
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
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
* prototypes for functions in aclchk.c
*/
*/
...
...
src/include/utils/builtins.h
View file @
76e9ad1f
...
@@ -7,7 +7,7 @@
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
* Portions Copyright (c) 1994, Regents of the University of California
*
*
* $Id: builtins.h,v 1.15
1 2001/06/12 15:58:34
momjian Exp $
* $Id: builtins.h,v 1.15
2 2001/06/12 16:34:27
momjian Exp $
*
*
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*/
*/
...
@@ -22,24 +22,6 @@
...
@@ -22,24 +22,6 @@
/*
/*
* Defined in adt/
* 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 */
/* bool.c */
extern
Datum
boolin
(
PG_FUNCTION_ARGS
);
extern
Datum
boolin
(
PG_FUNCTION_ARGS
);
extern
Datum
boolout
(
PG_FUNCTION_ARGS
);
extern
Datum
boolout
(
PG_FUNCTION_ARGS
);
...
...
src/test/regress/parallel_schedule
View file @
76e9ad1f
...
@@ -62,7 +62,6 @@ ignore: random
...
@@ -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: 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: privileges
test: has_table_priv
test: misc
test: misc
# ----------
# ----------
...
...
src/test/regress/serial_schedule
View file @
76e9ad1f
# $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.
# This should probably be in an order similar to parallel_schedule.
test: boolean
test: boolean
test: char
test: char
...
@@ -69,7 +69,6 @@ test: arrays
...
@@ -69,7 +69,6 @@ test: arrays
test: btree_index
test: btree_index
test: hash_index
test: hash_index
test: privileges
test: privileges
test: has_table_priv
test: misc
test: misc
test: select_views
test: select_views
test: alter_table
test: alter_table
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment