[ 
https://issues.apache.org/jira/browse/NIFI-12885?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17825451#comment-17825451
 ] 

David Handermann commented on NIFI-12885:
-----------------------------------------

Thanks for highlighting this change [~crissaegrim].

Part of the challenge is that {{getAsDate()}} is somewhat ambigous based on 
previous usage. Test classes including TestQueryRecord and 
ResultSetRecordSetTest expect the results of getAsDate() to return what is 
effectively a LocalDate, containing only year, month, and day.

The changes referenced in NIFI-9458 make that behavior explicit by return a 
java.sql.Date object containing only the year, month, and day information. This 
different than java.sql.Timestamp, which contains resolution down to the 
millisecond.

These existing unit tests pass based on this expected behavior, and the 
references are otherwise limited. Outside of this test class, did you observe 
runtime behavior changes in any Processors?

There are several possible ways forward, one of which may be to change the 
method signature to return a java.time.LocalDate, making the behavior clear. 
Another option could include adding a method such as getAsOffsetDateTime(), 
which could return an instance of java.time.OffsetDateTime containing 
additional precision.

> MapRecord.getAsDate timestamp breaking bug
> ------------------------------------------
>
>                 Key: NIFI-12885
>                 URL: https://issues.apache.org/jira/browse/NIFI-12885
>             Project: Apache NiFi
>          Issue Type: New Feature
>    Affects Versions: 2.0.0-M2
>            Reporter: crissaegrim
>            Priority: Critical
>
> I think I found a breaking bug from this commit 
> [https://github.com/apache/nifi/commit/250fe90b348fac515ea597c1985ca432ac7c3ac3#diff-ce496d3f0fc5a7e8a3c0431972f7069b4cf1af2e94f3a199f595ef195eb5ebfa]
> The below passes in 1.20.0 but fails in 2.0
> {code:java}
>     @Test
>     void testBasic() throws Exception {
>         // setup
>         final String schemaText = "{" +
>                 "\"type\" : \"record\"," +
>                 "\"name\" : \"TestRecord\"," +
>                 "\"namespace\" : \"org.apache.nifi\"," +
>                 "\"fields\" : [ {" +
>                 "\"name\" : \"my_datestamp_field\"," +
>                 "\"type\" : {" +
>                 "\"type\" : \"long\"," +
>                 "\"logicalType\" : \"timestamp-millis\"" +
>                 "}" +
>                 "} ]" +
>               "}";
>         final RecordSchema schemaParsed = AvroTypeUtil.createSchema(new 
> Schema.Parser().parse(schemaText));
>         final HashMap<String, Object> item = new HashMap<>();
>         item.put("my_datestamp_field", "2022-01-01 10:00:00.000");
>         // act
>         final MapRecord record = new MapRecord(schemaParsed, item);
>         final Date myDateStampField = record.getAsDate("my_datestamp_field", 
> "yyyy-MM-dd HH:mm:ss.SSS");
>         // assert
>       // fails in 2.0; actual in 2.0.0-M2 is `1640995200000`
>         assertEquals(1641031200000L, myDateStampField.getTime());
>     }
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to