From: | Alexander Korotkov <a(dot)korotkov(at)postgrespro(dot)ru> |
---|---|
To: | Thomas Munro <thomas(dot)munro(at)gmail(dot)com> |
Cc: | Andrew Dunstan <andrew(dot)dunstan(at)2ndquadrant(dot)com>, Nikita Glukhov <n(dot)gluhov(at)postgrespro(dot)ru>, Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Liudmila Mantrova <l(dot)mantrova(at)postgrespro(dot)ru>, Anastasia Lubennikova <lubennikovaav(at)gmail(dot)com> |
Subject: | Re: Support for jsonpath .datetime() method |
Date: | 2019-09-14 19:18:29 |
Message-ID: | CAPpHfdsokXrde7FWasSaXTa3A3K8Gvc9pofDmje8mLRQuf_E6A@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Aug 27, 2019 at 5:19 AM Alexander Korotkov
<a(dot)korotkov(at)postgrespro(dot)ru> wrote:
> Revised patchset is attached. It still requires some polishing. But
> the most doubtful part is handling of RR, YYY, YY and Y.
>
> Standard requires us to complete YYY, YY and Y with high digits from
> current year. So, if YY matches 99, then year should be 2099, not
> 1999.
>
> For RR, standard requirements are relaxed. Implementation may choose
> matching year from range [current_year - 100; current_year + 100]. It
> looks reasonable to handle RR in the same way we currently handle YY:
> select appropriate year in [1970; 2069] range. It seems like we
> select this range to start in the same point as unix timestamp. But
> nowadays it still looks reasonable: it's about +- 50 from current
> year. So, years close to the current one are likely completed
> correctly. In Oracle RR returns year in [1950; 1949] range. So, it
> seems to be designed near 2000 :). I don't think we need to copy this
> behavior.
>
> Handling YYY and YY in standard way seems quite easy. We can complete
> them as 2YYY and 20YY. This should be standard conforming till 2100.
>
> But handling Y looks problematic. Immutable way of handling this
> would work only for decade. Current code completes Y as 200Y and it
> looks pretty "outdated" now in 2019. Using current real year would
> make conversion timestamp-dependent. This property doesn't look favor
> for to_date()/to_timestamp() and unacceptable for immutable jsonpath
> functions (but we can forbid using Y pattern there). Current patch
> complete Y as 202Y assuming v13 will be released in 2020. But I'm not
> sure what is better solution here. The bright side is that I haven't
> seen anybody use Y patten in real life :)
Revised patchset is attached. It adds and adjusts commit messages,
comments and does other cosmetic improvements.
I think 0001 and 0002 are well reviewed already. And these patches
are usable not only for jsonpath .datetime(), but contain improvements
for existing to_date()/to_timestamp() SQL functions. I'm going to
push these two if no objections.
------
Alexander Korotkov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company
Attachment | Content-Type | Size |
---|---|---|
0002-Support-for-SSSSS-datetime-format-pattern-6.patch | application/octet-stream | 6.2 KB |
0001-Support-for-FF1-FF6-datetime-format-patterns-6.patch | application/octet-stream | 21.5 KB |
0004-Implement-standard-datetime-parsing-mode-6.patch | application/octet-stream | 12.7 KB |
0003-Introduce-RRRR-and-RR-revise-YYY-YY-and-Y-datetime-6.patch | application/octet-stream | 13.6 KB |
0005-Implement-parse_datetime-function-6.patch | application/octet-stream | 12.4 KB |
0008-Implement-jsonpath-.datetime-method-6.patch | application/octet-stream | 76.6 KB |
0006-Error-suppression-support-for-upcoming-jsonpath-.d-6.patch | application/octet-stream | 45.7 KB |
0007-Allow-datetime-values-in-JsonbValue-6.patch | application/octet-stream | 9.1 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Thomas Rosenstein | 2019-09-14 19:26:26 | Re: Standby Replication and Replication Delay |
Previous Message | Tomas Vondra | 2019-09-14 19:16:51 | Re: Standby Replication and Replication Delay |