Skip to content

Flight JDBC Driver not setting parameter correctly when parameter type is DATE<MILLISECOND> #477

Closed

Description

@jeremy-drmio

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

Activity

  1. transferred this issue fromapache/arrowon Jan 4, 2025
  2. added this to the 20.0.0 milestone on Jul 8, 2026
  3. added a commit that references this issue on Aug 25, 2026
  4. added a commit that references this issue on Aug 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type: bugSomething isn't workinghelp wantedExtra attention is needed

    Type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      ⌂ Proxy