]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Accept fractional seconds in jsonpath's datetime() method.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 12 Jun 2023 14:54:28 +0000 (10:54 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 12 Jun 2023 14:54:28 +0000 (10:54 -0400)
commit5eaa05f637179b6847f9efc98ca07a9aa1479e47
treedd7d483ef65c7a4eff9ea365bdd47aecc0ba607a
parente0e6829459b0e0566dc4493675522afb69d39f36
Accept fractional seconds in jsonpath's datetime() method.

Commit 927d9abb6 purported to make datetime() accept any string
that could be output for a datetime value by to_jsonb().  But it
overlooked the possibility of fractional seconds being present,
so that cases as simple as to_jsonb(now()) would defeat it.

Fix by adding formats that include ".US" to the list in
executeDateTimeMethod().  (Note that while this is nominally
microseconds, it'll do the right thing for fractions with
fewer than six digits.)

In passing, re-order the list to restore the datatype ordering
specified in its comment.  The violation accidentally did not
break anything; but the next edit might be less lucky, so add
more comments.

Per report from Tim Field.  Back-patch to v13 where datetime()
was added, like the previous patch.

Discussion: https://postgr.es/m/014A028B-5CE6-4FDF-AC24-426CA6FC9CEE@mohiohio.com
src/backend/utils/adt/jsonpath_exec.c
src/test/regress/expected/jsonb_jsonpath.out
src/test/regress/sql/jsonb_jsonpath.sql