jeremy-drmio opened a new issue, #45162:
URL: https://github.com/apache/arrow/issues/45162

   ### Describe the bug, including details regarding any error messages, 
version, and platform.
   
   Arrow Version 17.0.0
   
   When executing a prepared statement using the Arrow Flight JDBC driver, the 
driver sets the value for date parameters as DAYS since unix epoch, even when 
the parameter type returned by the server is DATE(MILLISECONDS).
   
   
https://github.com/apache/calcite-avatica/blob/2baa36e493cd90b89a6dec5cb04db0eefe6aef93/core/src/main/java/org/apache/calcite/avatica/util/DateTimeUtils.java#L1344-L1361
   
   The parameter converter below sets the same value regardless of the type. 
This results in the server receiving an unexpected parameter value.
   
   
https://github.com/apache/arrow/blob/6a2e19a852b367c72d7b12da4d104456491ed8b7/java/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/converter/impl/DateAvaticaParameterConverter.java#L33-L43
   
   ```
       Properties props = new Properties();
       String connection = "jdbc:arrow-flight-sql://xx:xx/?useEncryption=false";
       String query = "select date from T where date = ?";
   
       try (Connection con = DriverManager.getConnection(connection, props);
            PreparedStatement ps = con.prepareStatement(query)) {
   
         ps.setDate(1, Date.valueOf(LocalDate.of(2000, 1, 1)), null);
   
         try (ResultSet rs = ps.executeQuery()) {
           rs.next();
         }
       }
   ```
   
   
   ### Component(s)
   
   Java


-- 
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: issues-unsubscr...@arrow.apache.org.apache.org

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

Reply via email to