in ext/pg_query/pg_query_deparse.c [1851:1973]
static void deparsePrivilegeTarget(StringInfo str, GrantTargetType targtype, ObjectType objtype, List *objs)
{
switch (targtype)
{
case ACL_TARGET_OBJECT:
switch (objtype)
{
case OBJECT_TABLE:
deparseQualifiedNameList(str, objs);
break;
case OBJECT_SEQUENCE:
appendStringInfoString(str, "SEQUENCE ");
deparseQualifiedNameList(str, objs);
break;
case OBJECT_FDW:
appendStringInfoString(str, "FOREIGN DATA WRAPPER ");
deparseNameList(str, objs);
break;
case OBJECT_FOREIGN_SERVER:
appendStringInfoString(str, "FOREIGN SERVER ");
deparseNameList(str, objs);
break;
case OBJECT_FUNCTION:
appendStringInfoString(str, "FUNCTION ");
deparseFunctionWithArgtypesList(str, objs);
break;
case OBJECT_PROCEDURE:
appendStringInfoString(str, "PROCEDURE ");
deparseFunctionWithArgtypesList(str, objs);
break;
case OBJECT_ROUTINE:
appendStringInfoString(str, "ROUTINE ");
deparseFunctionWithArgtypesList(str, objs);
break;
case OBJECT_DATABASE:
appendStringInfoString(str, "DATABASE ");
deparseNameList(str, objs);
break;
case OBJECT_DOMAIN:
appendStringInfoString(str, "DOMAIN ");
deparseAnyNameList(str, objs);
break;
case OBJECT_LANGUAGE:
appendStringInfoString(str, "LANGUAGE ");
deparseNameList(str, objs);
break;
case OBJECT_LARGEOBJECT:
appendStringInfoString(str, "LARGE OBJECT ");
deparseNumericOnlyList(str, objs);
break;
case OBJECT_SCHEMA:
appendStringInfoString(str, "SCHEMA ");
deparseNameList(str, objs);
break;
case OBJECT_TABLESPACE:
appendStringInfoString(str, "TABLESPACE ");
deparseNameList(str, objs);
break;
case OBJECT_TYPE:
appendStringInfoString(str, "TYPE ");
deparseAnyNameList(str, objs);
break;
default:
// Other types are not supported here
Assert(false);
break;
}
break;
case ACL_TARGET_ALL_IN_SCHEMA:
switch (objtype)
{
case OBJECT_TABLE:
appendStringInfoString(str, "ALL TABLES IN SCHEMA ");
deparseNameList(str, objs);
break;
case OBJECT_SEQUENCE:
appendStringInfoString(str, "ALL SEQUENCES IN SCHEMA ");
deparseNameList(str, objs);
break;
case OBJECT_FUNCTION:
appendStringInfoString(str, "ALL FUNCTIONS IN SCHEMA ");
deparseNameList(str, objs);
break;
case OBJECT_PROCEDURE:
appendStringInfoString(str, "ALL PROCEDURES IN SCHEMA ");
deparseNameList(str, objs);
break;
case OBJECT_ROUTINE:
appendStringInfoString(str, "ALL ROUTINES IN SCHEMA ");
deparseNameList(str, objs);
break;
default:
// Other types are not supported here
Assert(false);
break;
}
break;
case ACL_TARGET_DEFAULTS: // defacl_privilege_target
switch (objtype)
{
case OBJECT_TABLE:
appendStringInfoString(str, "TABLES");
break;
case OBJECT_FUNCTION:
appendStringInfoString(str, "FUNCTIONS");
break;
case OBJECT_SEQUENCE:
appendStringInfoString(str, "SEQUENCES");
break;
case OBJECT_TYPE:
appendStringInfoString(str, "TYPES");
break;
case OBJECT_SCHEMA:
appendStringInfoString(str, "SCHEMAS");
break;
default:
// Other types are not supported here
Assert(false);
break;
}
break;
}
}