Skip to content

Commit

Permalink
Fix the flaky test testExtractDatePartWithTimeType() (#3225)
Browse files Browse the repository at this point in the history
* Fix the failure test testExtractDatePartWithTimeType()

Signed-off-by: Lantao Jin <[email protected]>

* skip test week with time type in Jan and Dec

Signed-off-by: Lantao Jin <[email protected]>

* add doc

Signed-off-by: Lantao Jin <[email protected]>

* fix incorrect format

Signed-off-by: Lantao Jin <[email protected]>

---------

Signed-off-by: Lantao Jin <[email protected]>
(cherry picked from commit 0e4acd3)
Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
  • Loading branch information
github-actions[bot] committed Jan 8, 2025
1 parent c566ea7 commit 0a49bff
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -92,19 +92,23 @@ private void datePartWithTimeArgQuery(String part, String time, long expected) {

@Test
public void testExtractDatePartWithTimeType() {
datePartWithTimeArgQuery(
"DAY", timeInput, LocalDate.now(functionProperties.getQueryStartClock()).getDayOfMonth());
LocalDate now = LocalDate.now(functionProperties.getQueryStartClock());

datePartWithTimeArgQuery(
"WEEK",
timeInput,
LocalDate.now(functionProperties.getQueryStartClock()).get(ALIGNED_WEEK_OF_YEAR));
datePartWithTimeArgQuery("DAY", timeInput, now.getDayOfMonth());

datePartWithTimeArgQuery(
"MONTH", timeInput, LocalDate.now(functionProperties.getQueryStartClock()).getMonthValue());
// To avoid flaky test, skip the testing in December and January because the WEEK is ISO 8601
// week-of-week-based-year which is considered to start on a Monday and week 1 is the first week
// with >3 days. it is possible for early-January dates to be part of the 52nd or 53rd week of
// the previous year, and for late-December dates to be part of the first week of the next year.
// For example, 2005-01-02 is part of the 53rd week of year 2004, while 2012-12-31 is part of
// the first week of 2013
if (now.getMonthValue() != 1 && now.getMonthValue() != 12) {
datePartWithTimeArgQuery("WEEK", datetimeInput, now.get(ALIGNED_WEEK_OF_YEAR));
}

datePartWithTimeArgQuery(
"YEAR", timeInput, LocalDate.now(functionProperties.getQueryStartClock()).getYear());
datePartWithTimeArgQuery("MONTH", timeInput, now.getMonthValue());

datePartWithTimeArgQuery("YEAR", timeInput, now.getYear());
}

@ParameterizedTest(name = "{0}")
Expand Down
8 changes: 6 additions & 2 deletions docs/user/dql/functions.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1960,11 +1960,11 @@ The format specifiers found in this table are the same as those found in the `DA
* - DAY
- %d
* - WEEK
- %X
- %v
* - MONTH
- %m
* - YEAR
- %V
- %Y
* - SECOND_MICROSECOND
- %s%f
* - MINUTE_MICROSECOND
Expand Down Expand Up @@ -2000,6 +2000,10 @@ Example::
| 202302 |
+------------------------------------------------+

Notice:

Function `extract(WEEK FROM ...)` returns the number of the ISO 8601 week-of-week-based-year. ISO week-numbering is considered to start on a Monday and week 1 is the first week with >3 days. In the ISO week-numbering system, it is possible for early-January dates to be part of the 52nd or 53rd week of the previous year, and for late-December dates to be part of the first week of the next year. For example, 2005-01-02 is part of the 53rd week of year 2004, while 2012-12-31 is part of the first week of 2013. Ref https://en.wikipedia.org/wiki/ISO_week_date


FROM_DAYS
---------
Expand Down

0 comments on commit 0a49bff

Please sign in to comment.