You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Richárd Antal (Jira)" <ji...@apache.org> on 2021/08/31 09:20:00 UTC
[jira] [Resolved] (PHOENIX-6486) Phoenix uses inconsistent
chronologies internally, breaking pre-Gregorian date handling
[ https://issues.apache.org/jira/browse/PHOENIX-6486?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Richárd Antal resolved PHOENIX-6486.
------------------------------------
Fix Version/s: 5.1.3
4.16.2
5.2.0
4.17.0
Assignee: Richárd Antal
Resolution: Fixed
Committed to the active branches.
Thanks [~dbwong] and [~stoty] for the reviews.
> Phoenix uses inconsistent chronologies internally, breaking pre-Gregorian date handling
> ---------------------------------------------------------------------------------------
>
> Key: PHOENIX-6486
> URL: https://issues.apache.org/jira/browse/PHOENIX-6486
> Project: Phoenix
> Issue Type: Bug
> Components: core
> Affects Versions: 5.1.1, 4.16.1
> Reporter: Istvan Toth
> Assignee: Richárd Antal
> Priority: Major
> Fix For: 4.17.0, 5.2.0, 4.16.2, 5.1.3
>
>
> For context:
> This is only a problem when storing dates before the Gregorian cutover, ie.
> October 15, 1582.
> Dates after that time are not affected.
> Phoenix does a lot of internal Time processing using JodaTime.
> However, the default Chronology for JodaTime is ISO,
> while the default chronology used by the JDK is GregorianJulian
> https://www.joda.org/joda-time/cal_gj.html
> This causes pre-cutover date handling to fail spectacularly:
> {noformat}
> > create table bubu (id integer primary key, ts timestamp);
> 1 row affected (0.059 seconds)
> > upsert into bubu values (1, '1-1-1 0:0:0');
> 1 row affected (0.007 seconds)
> > select * from bubu;
> +----+-----------------------+
> | ID | TS |
> +----+-----------------------+
> | 1 | 0001-01-03 01:00:00.0 |
> +----+-----------------------+
> 1 row selected (0.014 seconds)
> > select id, year(ts), month(ts), dayofmonth(ts), hour(ts), minute(ts), second(ts) from bubu;
> +----+----------+-----------+----------------+----------+------------+------------+
> | ID | YEAR(TS) | MONTH(TS) | DAYOFMONTH(TS) | HOUR(TS) | MINUTE(TS) | SECOND(TS) |
> +----+----------+-----------+----------------+----------+------------+------------+
> | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
> +----+----------+-----------+----------------+----------+------------+------------+
> 1 row selected (0.014 seconds)
> {noformat}
> The one hour difference is coming from my being in CET instead of GMT.
> This specific problem is the two day difference.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)