walterddr commented on a change in pull request #8324: [FLINK-11921][table]
Upgrade to calcite 1.19
URL: https://github.com/apache/flink/pull/8324#discussion_r284343959
##########
File path:
flink-table/flink-table-planner/src/main/java/org/apache/calcite/avatica/util/DateTimeUtils.java
##########
@@ -719,30 +757,49 @@ public static long timestampStringToUnixDate(String s) {
}
public static long unixDateExtract(TimeUnitRange range, long date) {
- return julianExtract(range, (int) date + EPOCH_JULIAN);
+ switch (range) {
+ case EPOCH:
+ // no need to extract year/month/day, just
multiply
+ return date * SECONDS_PER_DAY;
+ default:
+ return julianExtract(range, (int) date +
EPOCH_JULIAN);
+ }
}
private static int julianExtract(TimeUnitRange range, int julian) {
- // Algorithm the book "Astronomical Algorithms" by Jean Meeus,
1998
- int b, c;
- if (julian > 2299160) {
- int a = julian + 32044;
- b = (4 * a + 3) / 146097;
- c = a - b *146097 / 4;
- } else {
- b = 0;
- c = julian + 32082;
- }
- int d = (4 * c + 3) / 1461;
- int e = c - (1461 * d) / 4;
- int m = (5 * e + 2) / 153;
- int day = e - (153 * m + 2) / 5 + 1;
- int month = m + 3 - 12 * (m / 10);
- int year = b * 100 + d - 4800 + (m / 10);
-
+ // this shifts the epoch back to astronomical year -4800
instead of the
+ // start of the Christian era in year AD 1 of the proleptic
Gregorian
+ // calendar.
+ int j = julian + 32044;
+ int g = j / 146097;
+ int dg = j % 146097;
+ int c = (dg / 36524 + 1) * 3 / 4;
+ int dc = dg - c * 36524;
+ int b = dc / 1461;
+ int db = dc % 1461;
+ int a = (db / 365 + 1) * 3 / 4;
+ int da = db - a * 365;
+
+ // integer number of full years elapsed since March 1, 4801 BC
+ int y = g * 400 + c * 100 + b * 4 + a;
+ // integer number of full months elapsed since the last March 1
+ int m = (da * 5 + 308) / 153 - 2;
+ // number of days elapsed since day 1 of the month
+ int d = da - (m + 4) * 153 / 5 + 122;
+ int year = y - 4800 + (m + 2) / 12;
Review comment:
this is copied from avatica 1.14.0 release
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services