postgresql/src/backend/utils
Tom Lane 5b3c595355 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
2023-03-16 14:18:33 -04:00
..
activity Remove PgStat_BackendFunctionEntry 2023-03-16 14:22:34 +09:00
adt Tighten error checks in datetime input, and remove bogus "ISO" format. 2023-03-16 14:18:33 -04:00
cache Fix more outdated comments 2023-02-06 22:58:44 +01:00
error Update copyright for 2023 2023-01-02 15:00:37 -05:00
fmgr Update copyright for 2023 2023-01-02 15:00:37 -05:00
hash Update copyright for 2023 2023-01-02 15:00:37 -05:00
init Integrate superuser check into has_rolreplication() 2023-03-16 15:43:33 +01:00
mb New header varatt.h split off from postgres.h 2023-01-10 05:54:36 +01:00
misc Speedup and increase usability of set proc title functions 2023-02-20 16:18:27 +13:00
mmgr Fix erroneous Valgrind markings in AllocSetRealloc. 2023-02-21 18:48:15 -05:00
resowner Update copyright for 2023 2023-01-02 15:00:37 -05:00
sort Fix rare sharedtuplestore.c corruption. 2023-01-26 14:52:19 +13:00
time Remove useless casts to (void *) in hash_search() calls 2023-02-06 09:41:01 +01:00
.gitignore Rearrange makefile rules for running Gen_fmgrtab.pl. 2018-05-03 17:54:18 -04:00
errcodes.txt Update copyright for 2023 2023-01-02 15:00:37 -05:00
Gen_dummy_probes.pl Update copyright for 2023 2023-01-02 15:00:37 -05:00
Gen_dummy_probes.pl.prolog Update copyright for 2023 2023-01-02 15:00:37 -05:00
Gen_dummy_probes.sed Update copyright for 2023 2023-01-02 15:00:37 -05:00
Gen_fmgrtab.pl Update copyright for 2023 2023-01-02 15:00:37 -05:00
generate-errcodes.pl Update copyright for 2023 2023-01-02 15:00:37 -05:00
Makefile Update copyright for 2023 2023-01-02 15:00:37 -05:00
meson.build Update copyright for 2023 2023-01-02 15:00:37 -05:00
postprocess_dtrace.sed Update copyright for 2023 2023-01-02 15:00:37 -05:00
probes.d Update copyright for 2023 2023-01-02 15:00:37 -05:00
README.Gen_dummy_probes Tweak generation of Gen_dummy_probes.pl 2021-05-11 20:02:02 -04:00

# Generating dummy probes

If Postgres isn't configured with dtrace enabled, we need to generate
dummy probes for the entries in probes.d, that do nothing.

This is accomplished in Unix via the sed script `Gen_dummy_probes.sed`. We
used to use this in MSVC builds using the perl utility `psed`, which mimicked
sed. However, that utility disappeared from Windows perl distributions and so
we converted the sed script to a perl script to be used in MSVC builds.

We still keep the sed script as the authoritative source for generating
these dummy probes because except on Windows perl is not a hard requirement
when building from a tarball.

So, if you need to change the way dummy probes are generated, first change
the sed script, and when it's working generate the perl script. This can
be accomplished by using the perl utility s2p.

s2p is no longer part of the perl core, so it might not be on your system,
but it is available on CPAN and also in many package systems. e.g.
on Fedora it can be installed using `cpan App::s2p` or
`dnf install perl-App-s2p`.

The Makefile contains a recipe for regenerating Gen_dummy_probes.pl, so all
you need to do is once you have s2p installed is `make Gen_dummy_probes.pl`
Note that in a VPATH build this will generate the file in the vpath tree,
not the source tree.