static void deparseVariableSetStmt()

in ext/pg_query/pg_query_deparse.c [6350:6411]


static void deparseVariableSetStmt(StringInfo str, VariableSetStmt* variable_set_stmt)
{
	ListCell *lc;

	switch (variable_set_stmt->kind)
	{
		case VAR_SET_VALUE: /* SET var = value */
			appendStringInfoString(str, "SET ");
			if (variable_set_stmt->is_local)
				appendStringInfoString(str, "LOCAL ");
			deparseVarName(str, variable_set_stmt->name);
			appendStringInfoString(str, " TO ");
			deparseVarList(str, variable_set_stmt->args);
			break;
		case VAR_SET_DEFAULT: /* SET var TO DEFAULT */
			appendStringInfoString(str, "SET ");
			if (variable_set_stmt->is_local)
				appendStringInfoString(str, "LOCAL ");
			deparseVarName(str, variable_set_stmt->name);
			appendStringInfoString(str, " TO DEFAULT");
			break;
		case VAR_SET_CURRENT: /* SET var FROM CURRENT */
			appendStringInfoString(str, "SET ");
			if (variable_set_stmt->is_local)
				appendStringInfoString(str, "LOCAL ");
			deparseVarName(str, variable_set_stmt->name);
			appendStringInfoString(str, " FROM CURRENT");
			break;
		case VAR_SET_MULTI: /* special case for SET TRANSACTION ... */
			Assert(variable_set_stmt->name != NULL);
			appendStringInfoString(str, "SET ");
			if (variable_set_stmt->is_local)
				appendStringInfoString(str, "LOCAL ");
			if (strcmp(variable_set_stmt->name, "TRANSACTION") == 0)
			{
				appendStringInfoString(str, "TRANSACTION ");
				deparseTransactionModeList(str, variable_set_stmt->args);
			}
			else if (strcmp(variable_set_stmt->name, "SESSION CHARACTERISTICS") == 0)
			{
				appendStringInfoString(str, "SESSION CHARACTERISTICS AS TRANSACTION ");
				deparseTransactionModeList(str, variable_set_stmt->args);
			}
			else if (strcmp(variable_set_stmt->name, "TRANSACTION SNAPSHOT") == 0)
			{
				appendStringInfoString(str, "TRANSACTION SNAPSHOT ");
				deparseStringLiteral(str, strVal(&castNode(A_Const, linitial(variable_set_stmt->args))->val));
			}
			else
			{
				Assert(false);
			}
			break;
		case VAR_RESET: /* RESET var */
			appendStringInfoString(str, "RESET ");
			deparseVarName(str, variable_set_stmt->name);
			break;
		case VAR_RESET_ALL: /* RESET ALL */
			appendStringInfoString(str, "RESET ALL");
			break;
	}
}