in ext/pg_query/pg_query_deparse.c [795:861]
static void deparseCommonFuncOptItem(StringInfo str, DefElem *def_elem)
{
if (strcmp(def_elem->defname, "strict") == 0 && intVal(def_elem->arg) == 1)
{
appendStringInfoString(str, "RETURNS NULL ON NULL INPUT");
}
else if (strcmp(def_elem->defname, "strict") == 0 && intVal(def_elem->arg) == 0)
{
appendStringInfoString(str, "CALLED ON NULL INPUT");
}
else if (strcmp(def_elem->defname, "volatility") == 0 && strcmp(strVal(def_elem->arg), "immutable") == 0)
{
appendStringInfoString(str, "IMMUTABLE");
}
else if (strcmp(def_elem->defname, "volatility") == 0 && strcmp(strVal(def_elem->arg), "stable") == 0)
{
appendStringInfoString(str, "STABLE");
}
else if (strcmp(def_elem->defname, "volatility") == 0 && strcmp(strVal(def_elem->arg), "volatile") == 0)
{
appendStringInfoString(str, "VOLATILE");
}
else if (strcmp(def_elem->defname, "security") == 0 && intVal(def_elem->arg) == 1)
{
appendStringInfoString(str, "SECURITY DEFINER");
}
else if (strcmp(def_elem->defname, "security") == 0 && intVal(def_elem->arg) == 0)
{
appendStringInfoString(str, "SECURITY INVOKER");
}
else if (strcmp(def_elem->defname, "leakproof") == 0 && intVal(def_elem->arg) == 1)
{
appendStringInfoString(str, "LEAKPROOF");
}
else if (strcmp(def_elem->defname, "leakproof") == 0 && intVal(def_elem->arg) == 0)
{
appendStringInfoString(str, "NOT LEAKPROOF");
}
else if (strcmp(def_elem->defname, "cost") == 0)
{
appendStringInfoString(str, "COST ");
deparseValue(str, (Value *) def_elem->arg, DEPARSE_NODE_CONTEXT_NONE);
}
else if (strcmp(def_elem->defname, "rows") == 0)
{
appendStringInfoString(str, "ROWS ");
deparseValue(str, (Value *) def_elem->arg, DEPARSE_NODE_CONTEXT_NONE);
}
else if (strcmp(def_elem->defname, "support") == 0)
{
appendStringInfoString(str, "SUPPORT ");
deparseAnyName(str, castNode(List, def_elem->arg));
}
else if (strcmp(def_elem->defname, "set") == 0 && IsA(def_elem->arg, VariableSetStmt)) // FunctionSetResetClause
{
deparseVariableSetStmt(str, castNode(VariableSetStmt, def_elem->arg));
}
else if (strcmp(def_elem->defname, "parallel") == 0)
{
appendStringInfoString(str, "PARALLEL ");
appendStringInfoString(str, quote_identifier(strVal(def_elem->arg)));
}
else
{
Assert(false);
}
}