static void deparsePrivilegeTarget()

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;
	}
}