[ 
https://issues.apache.org/jira/browse/NIFI-5888?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Koji Kawamura updated NIFI-5888:
--------------------------------
    Comment: was deleted

(was: I believe this issue is caused by CALCITE-1703. I've submitted a PR to 
Calcite project. Let's see how it goes.)

> QueryRecord processor handling timestamp
> ----------------------------------------
>
>                 Key: NIFI-5888
>                 URL: https://issues.apache.org/jira/browse/NIFI-5888
>             Project: Apache NiFi
>          Issue Type: Improvement
>          Components: Extensions
>    Affects Versions: 1.8.0
>            Reporter: Gideon Korir
>            Assignee: Koji Kawamura
>            Priority: Major
>
> Add the test below to `org.apache.nifi.processors.standard.TestQueryRecord`
>  
> {code:java}
> @Test public void testTimestampColumns() throws InitializationException { 
> final MockRecordParser parser = new MockRecordParser(); 
> parser.addSchemaField("name", RecordFieldType.STRING); 
> parser.addSchemaField("date_added", RecordFieldType.TIMESTAMP); 
> parser.addRecord("Tom", Timestamp.valueOf("2018-12-03 09:12:00")); 
> parser.addRecord("Jerry", Timestamp.valueOf("2018-12-04 10:26:00")); 
> parser.addRecord("Tom", Timestamp.valueOf("2017-01-03 11:22:00")); 
> final List<String> colNames = new ArrayList<>(); 
> colNames.add("name"); 
> colNames.add("day_added"); 
> final ResultSetValidatingRecordWriter writer = new 
> ResultSetValidatingRecordWriter(colNames); 
> TestRunner runner = getRunner(); 
> runner.addControllerService("parser", parser); 
> runner.enableControllerService(parser); 
> runner.addControllerService("writer", writer); 
> runner.enableControllerService(writer); 
> runner.setProperty(REL_NAME, "select name, {fn YEAR(date_added)} as day_added 
> from FLOWFILE"); runner.setProperty(QueryRecord.RECORD_READER_FACTORY, 
> "parser"); 
> runner.setProperty(QueryRecord.RECORD_WRITER_FACTORY, "writer"); 
> runner.enqueue(""); 
> runner.run(); 
> runner.assertTransferCount(REL_NAME, 1); 
> }
> {code}
>  
> *Expected*: Test will pass
> *Actual*: fails with ClassCastException with message "java.sql.Timestamp 
> cannot be cast to java.lang.Long".
> //Also used sql: "select name, CAST(date_added, DATE) as day_added from 
> FLOWFILE" and failed
>  
> I (think) I've traced the issue to the NiFi usage of Apache Calcite; 
> according to Julian Hyde's comment on [this 
> issue|https://issues.apache.org/jira/browse/CALCITE-1427].
> Disclaimer: My knowledge on Calcite is zero to none so I could be completely 
> wrong.
> Currently, QueryRecord uses FlowFileTable which only implements 
> QueryableTable and TranslateableTable and therefore can not work with 
> java.sql.Timestamp (at least based on Hyde's comment on the issue). This will 
> mean almost all RecordReader services (Avro, Csv) would not work with 
> QueryRecord.
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to