in ext/pg_query/pg_query_deparse.c [6297:6348]
static void deparseTransactionStmt(StringInfo str, TransactionStmt *transaction_stmt)
{
ListCell *lc;
switch (transaction_stmt->kind)
{
case TRANS_STMT_BEGIN:
appendStringInfoString(str, "BEGIN ");
deparseTransactionModeList(str, transaction_stmt->options);
break;
case TRANS_STMT_START:
appendStringInfoString(str, "START TRANSACTION ");
deparseTransactionModeList(str, transaction_stmt->options);
break;
case TRANS_STMT_COMMIT:
appendStringInfoString(str, "COMMIT ");
if (transaction_stmt->chain)
appendStringInfoString(str, "AND CHAIN ");
break;
case TRANS_STMT_ROLLBACK:
appendStringInfoString(str, "ROLLBACK ");
if (transaction_stmt->chain)
appendStringInfoString(str, "AND CHAIN ");
break;
case TRANS_STMT_SAVEPOINT:
appendStringInfoString(str, "SAVEPOINT ");
appendStringInfoString(str, quote_identifier(transaction_stmt->savepoint_name));
break;
case TRANS_STMT_RELEASE:
appendStringInfoString(str, "RELEASE ");
appendStringInfoString(str, quote_identifier(transaction_stmt->savepoint_name));
break;
case TRANS_STMT_ROLLBACK_TO:
appendStringInfoString(str, "ROLLBACK ");
appendStringInfoString(str, "TO SAVEPOINT ");
appendStringInfoString(str, quote_identifier(transaction_stmt->savepoint_name));
break;
case TRANS_STMT_PREPARE:
appendStringInfoString(str, "PREPARE TRANSACTION ");
deparseStringLiteral(str, transaction_stmt->gid);
break;
case TRANS_STMT_COMMIT_PREPARED:
appendStringInfoString(str, "COMMIT PREPARED ");
deparseStringLiteral(str, transaction_stmt->gid);
break;
case TRANS_STMT_ROLLBACK_PREPARED:
appendStringInfoString(str, "ROLLBACK PREPARED ");
deparseStringLiteral(str, transaction_stmt->gid);
break;
}
removeTrailingSpace(str);
}