Skip to content

getDatabaseMajorVersion throws SQLException: "Failed to retrieve server version." #2227

@jeloba

Description

@jeloba

The database metadata object is throwing exceptions when fetching the server version.

Steps to reproduce

  1. Spin up a fresh Clickhouse test container
  2. Obtain a database connection to it
  3. call connection.getMetadata().getDatabaseMajorVersion()

Expected behaviour

The version should be returned. Using the connection object to fetch version() using a prepared statement works fine.

Code example

    container =
        new ClickHouseContainer("clickhouse/clickhouse-server:22.2");
    container.start();

    try (var c = container.createConnection("?")) {
      // executing the version fetch like this works
      var r = c.prepareStatement("SELECT version() as server_version").executeQuery();
      r.next();
      var v = r.getString("server_version");
      System.out.println(v);

      // this fails
      var v2 = c.getMetaData().getDatabaseMajorVersion();
      System.out.println(v2);
    }

Error log

Caused by: java.sql.SQLException: Failed to retrieve server version.
        at com.clickhouse.jdbc.ConnectionImpl.lambda$getServerVersion$0(ConnectionImpl.java:103)
        at java.base/java.util.Optional.orElseThrow(Optional.java:403)
        at com.clickhouse.jdbc.ConnectionImpl.getServerVersion(ConnectionImpl.java:103)
        at com.clickhouse.jdbc.metadata.DatabaseMetaData.getDatabaseMajorVersion(DatabaseMetaData.java:1188)

Configuration

Environment

  • Client version: jdbc 2
  • Language version: java 21
  • OS: linux

ClickHouse server

  • ClickHouse Server version: 22.2.3.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions