pgsql: Tighten error checks in datetime input, and remove bogus "ISO" f - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Tighten error checks in datetime input, and remove bogus "ISO" f
Date
Msg-id E1pcsBc-003qtQ-Ot@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Tighten error checks in datetime input, and remove bogus "ISO" format.

DecodeDateTime and DecodeTimeOnly had support for date input in the
style "Y2023M03D16", which the comments claimed to be an "ISO" format.
However, so far as I can find there is no such format in ISO 8601;
they write units before numbers in intervals, but not in datetimes.
Furthermore, the lesser-known ISO 8601-2 spec actually defines an
incompatible format "2023Y03M16D".  None of our documentation mentions
such a format either.  So let's just drop it.

That leaves us with only two cases for a prefix unit specifier in
datetimes: Julian dates written as Jnnnn, and the "T" separator
defined by ISO 8601.  Add checks to catch misuse of these specifiers,
that is consecutive specifiers or a dangling specifier at the end of
the string.  We do not however disallow a specifier that is separated
from the field that it disambiguates (by noise words or unrelated
fields).  That being the case, remove some overly-aggressive error
checks from the ISOTIME cases.

Joseph Koshakow, editorialized a bit by me; thanks also to
Peter Eisentraut for some standards-reading.

Discussion: https://postgr.es/m/CAAvxfHf2Q1gKLiHGnuPOiyf0ASvKUM4BnMfsXuwgtYEb_Gx0Zw@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/5b3c5953553bb9fb0b171abc6041e7c7e9ca5b4d

Modified Files
--------------
src/backend/utils/adt/datetime.c       | 221 +++++----------------------------
src/test/regress/expected/horology.out |  72 +++++++----
src/test/regress/sql/horology.sql      |  19 ++-
3 files changed, 92 insertions(+), 220 deletions(-)


pgsql-committers by date:

Previous
From: Andres Freund
Date:
Subject: pgsql: Silence pedantic compiler warning introduced in ce340e530d1
Next
From: Tom Lane
Date:
Subject: pgsql: Doc: mention CREATE+ATTACH PARTITION with CREATE TABLE...PARTITI