Skip to content

PreparedStatement.setQueryTimeout() not honored in ClickHouse JDBC driver (version 0.9.1-all) #2637

@atish11pune

Description

@atish11pune

Description

When setQueryTimeout() is applied to a PreparedStatement, the timeout is not honored during query execution.
Even if the query exceeds the configured timeout value, it continues to run until completion or manual termination.

This behavior is observed with the ClickHouse JDBC driver 0.9.1 (classifier: all).

Steps to Reproduce

  1. Configure a ClickHouse JDBC connection using version 0.9.1-all.
  2. Create a long-running query (e.g., SELECT sleep(3)).
  3. Use PreparedStatement.setQueryTimeout(1) to set a 1-second timeout.
  4. Execute the query.

Error Log or Exception StackTrace

No exception or timeout is thrown.
The query runs to completion, ignoring the configured timeout.

Expected Behaviour
The query should stop execution after the specified timeout period and throw an SQLTimeoutException.

Code Example


try (Connection connection = DriverManager.getConnection(url, user, password)) {
    String sql = "SELECT sleep(3)"; // intentionally long query
    try (PreparedStatement stmt = connection.prepareStatement(sql)) {
        stmt.setQueryTimeout(1); // set timeout to 1 seconds
        long start = System.currentTimeMillis();
        stmt.executeQuery();
        long end = System.currentTimeMillis();
        System.out.println("Query completed in " + (end - start) / 1000 + " seconds");
    }
}catch (SQLTimeoutException te) {
    System.err.println("Query timed out: " + te.getMessage());
} catch (Exception e) {
    System.err.println("Error: " + e.getMessage());
    e.printStackTrace();
}

Actual Result: The query runs for approximately 3 seconds.
Expected Result: The query should terminate after around 1 seconds and throw an SQLTimeoutException.

Configuration

Client Configuration

<dependency>
    <groupId>com.clickhouse</groupId>
    <artifactId>clickhouse-jdbc</artifactId>
    <version>0.9.1</version>
    <classifier>all</classifier>
</dependency>

Environment

  • Cloud
    Client version: java jdbc v2 0.9.2 and 0.9.1
    Language version: Java 17
    OS:

ClickHouse Server

  • ClickHouse Server version:
  • ClickHouse Server non-default settings, if any:
  • CREATE TABLE statements for tables involved:
  • Sample data for all these tables, use clickhouse-obfuscator if necessary

Metadata

Metadata

Assignees

No one assigned

    Labels

    buginvestigatingInvestigation of a root cause is on goingjdbc-v2jdbc-v2 issues

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions