diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c index 4ae25b90980..9c1e67583ab 100644 --- a/src/backend/utils/adt/formatting.c +++ b/src/backend/utils/adt/formatting.c @@ -2594,6 +2594,7 @@ DCH_to_char(const FormatNode *node, bool is_interval, Oid collid, #define DCH_EMITF(...) appendStringInfo(out, __VA_ARGS__) #define DCH_EMITS(str) appendStringInfoString(out, str) +#define DCH_EMITC(chr) appendStringInfoCharMacro(out, chr) /* cache localized days and months */ cache_locale_time(); @@ -2604,7 +2605,10 @@ DCH_to_char(const FormatNode *node, bool is_interval, Oid collid, if (n->type != NODE_TYPE_ACTION) { - DCH_EMITS(n->character); + if (n->character[1] == '\0') + DCH_EMITC(n->character[0]); + else + DCH_EMITS(n->character); continue; }