@ -274,9 +274,6 @@ restrict_and_check_grant(bool is_grant, AclMode avail_goptions, bool all_privs,
case ACL_KIND_FOREIGN_SERVER :
whole_mask = ACL_ALL_RIGHTS_FOREIGN_SERVER ;
break ;
case ACL_KIND_FOREIGN_TABLE :
whole_mask = ACL_ALL_RIGHTS_FOREIGN_TABLE ;
break ;
default :
elog ( ERROR , " unrecognized object kind: %d " , objkind ) ;
/* not reached, but keep compiler quiet */
@ -480,10 +477,6 @@ ExecuteGrantStmt(GrantStmt *stmt)
all_privileges = ACL_ALL_RIGHTS_FOREIGN_SERVER ;
errormsg = gettext_noop ( " invalid privilege type %s for foreign server " ) ;
break ;
case ACL_OBJECT_FOREIGN_TABLE :
all_privileges = ACL_ALL_RIGHTS_FOREIGN_TABLE ;
errormsg = gettext_noop ( " invalid privilege type %s for foreign table " ) ;
break ;
default :
elog ( ERROR , " unrecognized GrantStmt.objtype: %d " ,
( int ) stmt - > objtype ) ;
@ -554,7 +547,6 @@ ExecGrantStmt_oids(InternalGrant *istmt)
{
case ACL_OBJECT_RELATION :
case ACL_OBJECT_SEQUENCE :
case ACL_OBJECT_FOREIGN_TABLE :
ExecGrant_Relation ( istmt ) ;
break ;
case ACL_OBJECT_DATABASE :
@ -604,7 +596,6 @@ objectNamesToOids(GrantObjectType objtype, List *objnames)
{
case ACL_OBJECT_RELATION :
case ACL_OBJECT_SEQUENCE :
case ACL_OBJECT_FOREIGN_TABLE :
foreach ( cell , objnames )
{
RangeVar * relvar = ( RangeVar * ) lfirst ( cell ) ;
@ -1702,21 +1693,11 @@ ExecGrant_Relation(InternalGrant *istmt)
errmsg ( " \" %s \" is not a sequence " ,
NameStr ( pg_class_tuple - > relname ) ) ) ) ;
/* Used GRANT FOREIGN TABLE on a non-foreign-table? */
if ( istmt - > objtype = = ACL_OBJECT_FOREIGN_TABLE & &
pg_class_tuple - > relkind ! = RELKIND_FOREIGN_TABLE )
ereport ( ERROR ,
( errcode ( ERRCODE_WRONG_OBJECT_TYPE ) ,
errmsg ( " \" %s \" is not a foreign table " ,
NameStr ( pg_class_tuple - > relname ) ) ) ) ;
/* Adjust the default permissions based on object type */
if ( istmt - > all_privs & & istmt - > privileges = = ACL_NO_RIGHTS )
{
if ( pg_class_tuple - > relkind = = RELKIND_SEQUENCE )
this_privileges = ACL_ALL_RIGHTS_SEQUENCE ;
else if ( pg_class_tuple - > relkind = = RELKIND_FOREIGN_TABLE )
this_privileges = ACL_ALL_RIGHTS_FOREIGN_TABLE ;
else
this_privileges = ACL_ALL_RIGHTS_RELATION ;
}
@ -1752,16 +1733,6 @@ ExecGrant_Relation(InternalGrant *istmt)
this_privileges & = ( AclMode ) ACL_ALL_RIGHTS_SEQUENCE ;
}
}
else if ( pg_class_tuple - > relkind = = RELKIND_FOREIGN_TABLE )
{
if ( this_privileges & ~ ( ( AclMode ) ACL_ALL_RIGHTS_FOREIGN_TABLE ) )
{
ereport ( ERROR ,
( errcode ( ERRCODE_INVALID_GRANT_OPERATION ) ,
errmsg ( " foreign table \" %s \" only supports SELECT privileges " ,
NameStr ( pg_class_tuple - > relname ) ) ) ) ;
}
}
else
{
if ( this_privileges & ~ ( ( AclMode ) ACL_ALL_RIGHTS_RELATION ) )
@ -1819,9 +1790,6 @@ ExecGrant_Relation(InternalGrant *istmt)
case RELKIND_SEQUENCE :
old_acl = acldefault ( ACL_OBJECT_SEQUENCE , ownerId ) ;
break ;
case RELKIND_FOREIGN_TABLE :
old_acl = acldefault ( ACL_OBJECT_FOREIGN_TABLE , ownerId ) ;
break ;
default :
old_acl = acldefault ( ACL_OBJECT_RELATION , ownerId ) ;
break ;
@ -1866,9 +1834,6 @@ ExecGrant_Relation(InternalGrant *istmt)
case RELKIND_SEQUENCE :
aclkind = ACL_KIND_SEQUENCE ;
break ;
case RELKIND_FOREIGN_TABLE :
aclkind = ACL_KIND_FOREIGN_TABLE ;
break ;
default :
aclkind = ACL_KIND_CLASS ;
break ;
@ -1963,16 +1928,6 @@ ExecGrant_Relation(InternalGrant *istmt)
this_privileges & = ( AclMode ) ACL_SELECT ;
}
else if ( pg_class_tuple - > relkind = = RELKIND_FOREIGN_TABLE & &
this_privileges & ~ ( ( AclMode ) ACL_SELECT ) )
{
/* Foreign tables have the same restriction as sequences. */
ereport ( WARNING ,
( errcode ( ERRCODE_INVALID_GRANT_OPERATION ) ,
errmsg ( " foreign table \" %s \" only supports SELECT column privileges " ,
NameStr ( pg_class_tuple - > relname ) ) ) ) ;
this_privileges & = ( AclMode ) ACL_SELECT ;
}
expand_col_privileges ( col_privs - > cols , relOid ,
this_privileges ,
@ -3147,8 +3102,6 @@ static const char *const no_priv_msg[MAX_ACL_KIND] =
gettext_noop ( " permission denied for foreign-data wrapper %s " ) ,
/* ACL_KIND_FOREIGN_SERVER */
gettext_noop ( " permission denied for foreign server %s " ) ,
/* ACL_KIND_FOREIGN_TABLE */
gettext_noop ( " permission denied for foreign table %s " ) ,
/* ACL_KIND_EXTENSION */
gettext_noop ( " permission denied for extension %s " ) ,
} ;
@ -3193,8 +3146,6 @@ static const char *const not_owner_msg[MAX_ACL_KIND] =
gettext_noop ( " must be owner of foreign-data wrapper %s " ) ,
/* ACL_KIND_FOREIGN_SERVER */
gettext_noop ( " must be owner of foreign server %s " ) ,
/* ACL_KIND_FOREIGN_TABLE */
gettext_noop ( " must be owner of foreign table %s " ) ,
/* ACL_KIND_EXTENSION */
gettext_noop ( " must be owner of extension %s " ) ,
} ;
@ -3491,9 +3442,6 @@ pg_class_aclmask(Oid table_oid, Oid roleid,
case RELKIND_SEQUENCE :
acl = acldefault ( ACL_OBJECT_SEQUENCE , ownerId ) ;
break ;
case RELKIND_FOREIGN_TABLE :
acl = acldefault ( ACL_OBJECT_FOREIGN_TABLE , ownerId ) ;
break ;
default :
acl = acldefault ( ACL_OBJECT_RELATION , ownerId ) ;
break ;