[
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)