mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Make jsonpath .string() be immutable for datetimes.
Discussion of commited055d249
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 (in66ea94e8e
). Also back-patched055d249
to provide test cases. Discussion: https://postgr.es/m/5e8879d0-a3c8-4be2-950f-d83aa2af953a@eisentraut.org
This commit is contained in:
@ -17965,15 +17965,16 @@ ERROR: jsonpath member accessor can only be applied to an object
|
||||
<returnvalue><replaceable>string</replaceable></returnvalue>
|
||||
</para>
|
||||
<para>
|
||||
String value converted from a JSON boolean, number, string, or datetime
|
||||
String value converted from a JSON boolean, number, string, or
|
||||
datetime
|
||||
</para>
|
||||
<para>
|
||||
<literal>jsonb_path_query_array('[1.23, "xyz", false]', '$[*].string()')</literal>
|
||||
<returnvalue>["1.23", "xyz", "false"]</returnvalue>
|
||||
</para>
|
||||
<para>
|
||||
<literal>jsonb_path_query('"2023-08-15"', '$.datetime().string()')</literal>
|
||||
<returnvalue>"2023-08-15"</returnvalue>
|
||||
<literal>jsonb_path_query('"2023-08-15 12:34:56"', '$.timestamp().string()')</literal>
|
||||
<returnvalue>"2023-08-15T12:34:56"</returnvalue>
|
||||
</para></entry>
|
||||
</row>
|
||||
|
||||
@ -18054,7 +18055,9 @@ ERROR: jsonpath member accessor can only be applied to an object
|
||||
<returnvalue><replaceable>decimal</replaceable></returnvalue>
|
||||
</para>
|
||||
<para>
|
||||
Rounded decimal value converted from a JSON number or string. <literal>precision</literal> and <literal>scale</literal> must be integer values.
|
||||
Rounded decimal value converted from a JSON number or string
|
||||
(<literal>precision</literal> and <literal>scale</literal> must be
|
||||
integer values)
|
||||
</para>
|
||||
<para>
|
||||
<literal>jsonb_path_query('1234.5678', '$.decimal(6, 2)')</literal>
|
||||
@ -18156,7 +18159,7 @@ ERROR: jsonpath member accessor can only be applied to an object
|
||||
</para>
|
||||
<para>
|
||||
Time without time zone value converted from a string, with fractional
|
||||
seconds adjusted to the given precision.
|
||||
seconds adjusted to the given precision
|
||||
</para>
|
||||
<para>
|
||||
<literal>jsonb_path_query('"12:34:56.789"', '$.time(2)')</literal>
|
||||
@ -18185,7 +18188,7 @@ ERROR: jsonpath member accessor can only be applied to an object
|
||||
</para>
|
||||
<para>
|
||||
Time with time zone value converted from a string, with fractional
|
||||
seconds adjusted to the given precision.
|
||||
seconds adjusted to the given precision
|
||||
</para>
|
||||
<para>
|
||||
<literal>jsonb_path_query('"12:34:56.789 +05:30"', '$.time_tz(2)')</literal>
|
||||
@ -18214,7 +18217,7 @@ ERROR: jsonpath member accessor can only be applied to an object
|
||||
</para>
|
||||
<para>
|
||||
Timestamp without time zone value converted from a string, with
|
||||
fractional seconds adjusted to the given precision.
|
||||
fractional seconds adjusted to the given precision
|
||||
</para>
|
||||
<para>
|
||||
<literal>jsonb_path_query('"2023-08-15 12:34:56.789"', '$.timestamp(2)')</literal>
|
||||
@ -18243,7 +18246,7 @@ ERROR: jsonpath member accessor can only be applied to an object
|
||||
</para>
|
||||
<para>
|
||||
Timestamp with time zone value converted from a string, with fractional
|
||||
seconds adjusted to the given precision.
|
||||
seconds adjusted to the given precision
|
||||
</para>
|
||||
<para>
|
||||
<literal>jsonb_path_query('"2023-08-15 12:34:56.789 +05:30"', '$.timestamp_tz(2)')</literal>
|
||||
|
Reference in New Issue
Block a user