Fix is_digit labeling of to_timestamp's FFn format codes. These format codes produce or consume strings of digits, so they should be labeled with is_digit = true, but they were not. This has effect in only one place, where is_next_separator() is checked to see if the preceding format code should slurp up all the available digits. Thus, with a format such as '...SSFF3' with remaining input '12345', the 'SS' code would consume all five digits (and then complain about seconds being out of range) when it should eat only two digits.
Per report from Nick Davies. This bug goes back to d589f9446 where the FFn codes were introduced, so back-patch to v13. Discussion: https://postgr.es/m/am8pr08mb6356ac979252cfea78b56678b6...@am8pr08mb6356.eurprd08.prod.outlook.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/3220ceaf774a2a11f86b33425d836e7072aed677 Modified Files -------------- src/backend/utils/adt/formatting.c | 26 +++++++++++++------------- src/test/regress/expected/horology.out | 11 +++++++++++ src/test/regress/sql/horology.sql | 1 + 3 files changed, 25 insertions(+), 13 deletions(-)