static void deparseTransactionModeList()

in ext/pg_query/pg_query_deparse.c [1281:1328]


static void deparseTransactionModeList(StringInfo str, List *l)
{
	ListCell *lc = NULL;

	foreach (lc, l)
	{
		DefElem *def_elem = castNode(DefElem, lfirst(lc));

		if (strcmp(def_elem->defname, "transaction_isolation") == 0)
		{
			char *s = strVal(&castNode(A_Const, def_elem->arg)->val);
			appendStringInfoString(str, "ISOLATION LEVEL ");
			if (strcmp(s, "read uncommitted") == 0)
				appendStringInfoString(str, "READ UNCOMMITTED");
			else if (strcmp(s, "read committed") == 0)
				appendStringInfoString(str, "READ COMMITTED");
			else if (strcmp(s, "repeatable read") == 0)
				appendStringInfoString(str, "REPEATABLE READ");
			else if (strcmp(s, "serializable") == 0)
				appendStringInfoString(str, "SERIALIZABLE");
			else
				Assert(false);
		}
		else if (strcmp(def_elem->defname, "transaction_read_only") == 0 && intVal(&castNode(A_Const, def_elem->arg)->val) == 1)
		{
			appendStringInfoString(str, "READ ONLY");
		}
		else if (strcmp(def_elem->defname, "transaction_read_only") == 0 && intVal(&castNode(A_Const, def_elem->arg)->val) == 0)
		{
			appendStringInfoString(str, "READ WRITE");
		}
		else if (strcmp(def_elem->defname, "transaction_deferrable") == 0 && intVal(&castNode(A_Const, def_elem->arg)->val) == 1)
		{
			appendStringInfoString(str, "DEFERRABLE");
		}
		else if (strcmp(def_elem->defname, "transaction_deferrable") == 0 && intVal(&castNode(A_Const, def_elem->arg)->val) == 0)
		{
			appendStringInfoString(str, "NOT DEFERRABLE");
		}
		else
		{
			Assert(false);
		}

		if (lnext(l, lc))
			appendStringInfoString(str, ", ");
	}
}