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, ", ");
}
}