From c341c7d391e256f80cfbae53b4f55278bffca699 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Wed, 11 Dec 2019 10:01:06 +0900 Subject: [PATCH] Fix some compiler warnings with timestamp parsing in formatting.c gcc-7 used with a sufficient optimization level complains about warnings around do_to_timestamp() regarding the initialization and handling of some of its variables. Recent commits 66c74f8 and d589f94 made things made the interface more confusing, so document which variables are always expected and initialize properly the optional ones when they are set. Author: Andrey Lepikhov, Michael Paquier Discussion: https://postgr.es/m/a7e28b83-27b1-4e1c-c76b-4268c4b785bc@postgrespro.ru --- src/backend/utils/adt/formatting.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c index f7175df8da..8fcbc2267f 100644 --- a/src/backend/utils/adt/formatting.c +++ b/src/backend/utils/adt/formatting.c @@ -4128,7 +4128,7 @@ parse_datetime(text *date_txt, text *fmt, bool strict, Oid *typid, { struct pg_tm tm; fsec_t fsec; - int fprec = 0; + int fprec; uint32 flags; do_to_timestamp(date_txt, fmt, strict, &tm, &fsec, &fprec, &flags, have_error); @@ -4318,11 +4318,18 @@ do_to_timestamp(text *date_txt, text *fmt, bool std, int fmask; bool incache = false; + Assert(tm != NULL); + Assert(fsec != NULL); + date_str = text_to_cstring(date_txt); ZERO_tmfc(&tmfc); ZERO_tm(tm); *fsec = 0; + if (fprec) + *fprec = 0; + if (flags) + *flags = 0; fmask = 0; /* bit mask for ValidateDate() */ fmt_len = VARSIZE_ANY_EXHDR(fmt);