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

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

Thanks for the additional background.

The {{getAsDate()}} method is more of a convenience function that performs 
optional conversion from a string using the provided format. If the source of 
the values is a JDBC ResultSet, then {{getValue()}} can be used to return a 
java.sql.Timestamp as shown in one of the current test classes. If the source 
value is a string, then the conversion could be performed after retrieving the 
value from the MapRecord.

Can you provide any additional details on the source of the data for the 
MapRecord?

Going forward, it sounds like it could be useful to add a new method, and 
change {{getAsDate()}} to {{getAsLocalDate()}} to clarify the behavior. On the 
other hand, removing the convenience function would then require calling code 
to perform the conversion as needed. This might be better, as date and time 
conversion can vary significantly from one use case to another.

> MapRecord.getAsDate timestamp breaking bug
> ------------------------------------------
>
>                 Key: NIFI-12885
>                 URL: https://issues.apache.org/jira/browse/NIFI-12885
>             Project: Apache NiFi
>          Issue Type: Bug
>    Affects Versions: 2.0.0-M2
>            Reporter: crissaegrim
>            Priority: Major
>
> 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