static void deparseCommonFuncOptItem()

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