Make jsonpath .string() be immutable for datetimes.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 12 Sep 2024 18:30:29 +0000 (14:30 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 12 Sep 2024 18:30:29 +0000 (14:30 -0400)
commitcb599b9ddfccd15e77f4c167c4e5bdf1ddc3af38
treea6e3aa5354169d7e488b5517559edfd60d16e1df
parent4eada203a5a871f893afe3eb3e07eea5de1aa642
Make jsonpath .string() be immutable for datetimes.

Discussion of commit ed055d249 revealed that we don't actually
want jsonpath's .string() method to depend on DateStyle, nor
TimeZone either, because the non-"_tz" jsonpath functions are
supposed to be immutable.  Potentially we could allow a TimeZone
dependency in the "_tz" variants, but it seems better to just
uniformly define this method as returning the same string that
jsonb text output would do.  That's easier to implement too,
saving a couple dozen lines.

Patch by me, per complaint from Peter Eisentraut.  Back-patch
to v17 where this feature came in (in 66ea94e8e).  Also
back-patch ed055d249 to provide test cases.

Discussion: https://postgr.es/m/5e8879d0-a3c8-4be2-950f-d83aa2af953a@eisentraut.org
doc/src/sgml/func.sgml
src/backend/utils/adt/jsonpath_exec.c
src/test/regress/expected/jsonb_jsonpath.out
src/test/regress/sql/jsonb_jsonpath.sql