logan-keede opened a new issue, #14448:
URL: https://github.com/apache/datafusion/issues/14448

   ### Describe the bug
   
   I was trying to make some changes to a function in `datafusion-functions` 
crate specifically in `to_timestamp_impl` function when I noticed that it is 
being called 7 times for  query `SELECT to_timestamp('2020-09-08 
12/00/00+00:00');`
   
   This does not seem expected and it is probably causing efficiency drops and 
problems while troubleshooting bugs in functions.
   
   This only seems to happen for function calls that are going to generate 
error anyways.
   
   so far this has been replicated in `to_timestamp` and `to_char` but it can 
be probably be replicated in other functions too.
    
   
   ### To Reproduce
   
    edit `invoke_batch` function in implementation of `ScalarUDFImpl` trait  
for struct `ToTimestampFunc`  to include a logging statement like
   ```
   fn invoke_batch(
           &self,
           args: &[ColumnarValue],
           _number_rows: usize,
       ) -> Result<ColumnarValue> {
           println!("to_timestamp_impl is being called");
   ```
   then in datafusion-cli
   ```
   > select to_timestamp('1');
   to_timestamp_impl is being called
   to_timestamp_impl is being called
   to_timestamp_impl is being called
   to_timestamp_impl is being called
   to_timestamp_impl is being called
   to_timestamp_impl is being called
   to_timestamp_impl is being called
   Arrow error: Parser error: Error parsing timestamp from '1': timestamp must 
contain at least 10 characters
   
   
   > select to_timestamp('2023-01-31T09:26:56-05:00', '%+');
   to_timestamp_impl is being called
   +------------------------------------------------------------+
   | to_timestamp(Utf8("2023-01-31T09:26:56-05:00"),Utf8("%+")) |
   +------------------------------------------------------------+
   | 2023-01-31T14:26:56                                        |
   +------------------------------------------------------------+
   1 row(s) fetched. 
   Elapsed 0.005 seconds.
   
   > select to_char('1'::time, '%Y-%m-%d');
   to_char is being called
   to_char is being called
   to_char is being called
   to_char is being called
   to_char is being called
   to_char is being called
   to_char is being called
   to_char is being called
   to_char is being called
   to_char is being called
   to_char is being called
   to_char is being called
   to_char is being called
   Execution error: Cast error: Format error
   ```
   
   
   ### Expected behavior
   
   ```
   > select to_timestamp('1', '%d');
   to_timestamp_impl is being called
   Arrow error: Parser error: Error parsing timestamp from '1': timestamp must 
contain at least 10 characters
   
   > select to_char('1'::time, '%Y-%m-%d');
   to_char is being called
   Execution error: Cast error: Format error
   ```
   
   ### Additional context
   
   _No response_


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org
For additional commands, e-mail: github-h...@datafusion.apache.org

Reply via email to