[GH-ISSUE #3654] read-only=true unsupported when connecting to ClickHouse after upgrade 23.2.5 → 25.1.4 #1294

Closed
opened 2026-03-07 21:02:10 +03:00 by kerem · 2 comments
Owner

Originally created by @Dr1m91 on GitHub (Aug 12, 2025).
Original GitHub issue: https://github.com/dbeaver/cloudbeaver/issues/3654

Description

After upgrading CloudBeaver from 23.2.5 to 25.1.4, connecting to ClickHouse fails when the connection configuration contains "read-only": true. The connection error is:

Error connecting to database  
read-only=true unsupported

This worked in 23.2.5. Setting "read-only": false allows a successful connection, but I need to be able to set read-only to true (for a read-only client mode). The behavior suggests CloudBeaver (or the JDBC driver integration) is passing a read-only flag that ClickHouse/driver rejects.

I can provide full connection logs or a stack trace if helpful — tell me where to attach them.

Steps to reproduce

  1. Run CloudBeaver 25.1.4
  2. Add or import a ClickHouse connection using provider clickhouse and driver com_clickhouse.
  3. In the connection configuration set "read-only": true.
  4. Attempt to connect.

Example sanitized connection config for reproduction

{
  "folders": {},
  "connections": {
    "clickhouse-0": {
      "name": "clickhouse",
      "provider": "clickhouse",
      "driver": "com_clickhouse",
      "save-password": false,
      "show-system-objects": false,
      "read-only": true,
      "configuration": {
        "user": "<USER>",
        "host": "<HOST>",
        "port": "8123",
        "database": "default",
        "url": "jdbc:clickhouse://<HOST>:8123/default",
        "type": "dev",
        "provider-properties": {
          "@dbeaver-show-non-default-db@": "true"
        },
        "auth-model": "native"
      }
    },
    "clickhouse-1": {
      "name": "clickhouse feature rw",
      "provider": "clickhouse",
      "driver": "com_clickhouse",
      "save-password": false,
      "show-system-objects": false,
      "read-only": false,
      "configuration": {
        "user": "",
        "host": "<HOST>",
        "port": "8123",
        "database": "default",
        "url": "jdbc:clickhouse://<HOST>:8123/default",
        "type": "dev",
        "provider-properties": {
          "@dbeaver-show-non-default-db@": "true"
        },
        "auth-model": "native"
      }
    }
  },
  "connection-types": {
    "dev": {
      "name": "Development",
      "color": "0,0,255",
      "description": "Regular development connection",
      "auto-commit": true,
      "confirm-execute": false,
      "confirm-data-change": false,
      "auto-close-transactions": false
    }
  }
}

Expected/Desired Behavior

  • Setting "read-only": true should not cause the connection to fail.
  • CloudBeaver should either avoid sending an unsupported read-only flag to the ClickHouse driver or handle it gracefully (e.g., use client-side read-only mode without calling Connection.setReadOnly(true) for ClickHouse).
  • Alternatively document that read-only config is unsupported for ClickHouse and provide a proper warning in the UI.

Suggested fix ideas

  • Do not call Connection.setReadOnly(true) for the ClickHouse provider.
  • Do not include read-only=true in connection properties passed to the ClickHouse JDBC driver.
  • Add provider-specific handling or documentation.

CloudBeaver Version

Problem observed in 25.1.4, previously working in 23.2.5

Additional context

  • Cloudbeaver deployed in k8s
  • Driver com_clickhouse
  • HTTP port 8123, example JDBC URL jdbc:clickhouse://:8123/default
  • Workaround: leave "read-only" unset or false and use a DB user with only SELECT privileges
Originally created by @Dr1m91 on GitHub (Aug 12, 2025). Original GitHub issue: https://github.com/dbeaver/cloudbeaver/issues/3654 ### Description After upgrading CloudBeaver from 23.2.5 to 25.1.4, connecting to ClickHouse fails when the connection configuration contains "read-only": true. The connection error is: ``` Error connecting to database read-only=true unsupported ``` This worked in 23.2.5. Setting "read-only": false allows a successful connection, but I need to be able to set read-only to true (for a read-only client mode). The behavior suggests CloudBeaver (or the JDBC driver integration) is passing a read-only flag that ClickHouse/driver rejects. I can provide full connection logs or a stack trace if helpful — tell me where to attach them. ### Steps to reproduce 1. Run CloudBeaver 25.1.4 2. Add or import a ClickHouse connection using provider clickhouse and driver com_clickhouse. 3. In the connection configuration set "read-only": true. 4. Attempt to connect. Example sanitized connection config for reproduction ```json { "folders": {}, "connections": { "clickhouse-0": { "name": "clickhouse", "provider": "clickhouse", "driver": "com_clickhouse", "save-password": false, "show-system-objects": false, "read-only": true, "configuration": { "user": "<USER>", "host": "<HOST>", "port": "8123", "database": "default", "url": "jdbc:clickhouse://<HOST>:8123/default", "type": "dev", "provider-properties": { "@dbeaver-show-non-default-db@": "true" }, "auth-model": "native" } }, "clickhouse-1": { "name": "clickhouse feature rw", "provider": "clickhouse", "driver": "com_clickhouse", "save-password": false, "show-system-objects": false, "read-only": false, "configuration": { "user": "", "host": "<HOST>", "port": "8123", "database": "default", "url": "jdbc:clickhouse://<HOST>:8123/default", "type": "dev", "provider-properties": { "@dbeaver-show-non-default-db@": "true" }, "auth-model": "native" } } }, "connection-types": { "dev": { "name": "Development", "color": "0,0,255", "description": "Regular development connection", "auto-commit": true, "confirm-execute": false, "confirm-data-change": false, "auto-close-transactions": false } } } ``` ### Expected/Desired Behavior - Setting "read-only": true should not cause the connection to fail. - CloudBeaver should either avoid sending an unsupported read-only flag to the ClickHouse driver or handle it gracefully (e.g., use client-side read-only mode without calling Connection.setReadOnly(true) for ClickHouse). - Alternatively document that read-only config is unsupported for ClickHouse and provide a proper warning in the UI. Suggested fix ideas - Do not call Connection.setReadOnly(true) for the ClickHouse provider. - Do not include read-only=true in connection properties passed to the ClickHouse JDBC driver. - Add provider-specific handling or documentation. ### CloudBeaver Version Problem observed in 25.1.4, previously working in 23.2.5 ### Additional context - Cloudbeaver deployed in k8s - Driver com_clickhouse - HTTP port 8123, example JDBC URL jdbc:clickhouse://<HOST>:8123/default - Workaround: leave "read-only" unset or false and use a DB user with only SELECT privileges -
kerem 2026-03-07 21:02:10 +03:00
Author
Owner

@Dr1m91 commented on GitHub (Aug 12, 2025):

Error details:

Error connecting to database:
read-only=true unsupported
java.sql.SQLFeatureNotSupportedException: read-only=true unsupported
	at com.clickhouse.jdbc.ConnectionImpl.setReadOnly(ConnectionImpl.java:220)
	at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.openConnection(JDBCDataSource.java:253)
	at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.openConnection(JDBCDataSource.java:133)
	at org.jkiss.dbeaver.ext.generic.model.GenericDataSource.openConnection(GenericDataSource.java:158)
	at org.jkiss.dbeaver.model.impl.jdbc.JDBCExecutionContext.connect(JDBCExecutionContext.java:124)
	at org.jkiss.dbeaver.model.impl.jdbc.JDBCRemoteInstance.initializeMainContext(JDBCRemoteInstance.java:106)
	at org.jkiss.dbeaver.model.impl.jdbc.JDBCRemoteInstance.<init>(JDBCRemoteInstance.java:61)
	at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.initializeRemoteInstance(JDBCDataSource.java:125)
	at org.jkiss.dbeaver.ext.generic.model.GenericDataSource.<init>(GenericDataSource.java:124)
	at org.jkiss.dbeaver.ext.clickhouse.model.ClickhouseDataSource.<init>(ClickhouseDataSource.java:77)
	at org.jkiss.dbeaver.ext.clickhouse.model.ClickhouseMetaModel.createDataSourceImpl(ClickhouseMetaModel.java:57)
	at org.jkiss.dbeaver.ext.generic.GenericDataSourceProvider.openDataSource(GenericDataSourceProvider.java:57)
	at org.jkiss.dbeaver.registry.DataSourceDescriptor.openDataSource(DataSourceDescriptor.java:1413)
	at org.jkiss.dbeaver.registry.DataSourceDescriptor.connect0(DataSourceDescriptor.java:1271)
	at org.jkiss.dbeaver.registry.DataSourceDescriptor.connect(DataSourceDescriptor.java:1061)
	at io.cloudbeaver.service.ConnectionControllerCE.initConnection(ConnectionControllerCE.java:455)
	at io.cloudbeaver.service.core.impl.WebServiceCore.initConnection(WebServiceCore.java:294)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
<!-- gh-comment-id:3180281023 --> @Dr1m91 commented on GitHub (Aug 12, 2025): Error details: ``` Error connecting to database: read-only=true unsupported java.sql.SQLFeatureNotSupportedException: read-only=true unsupported at com.clickhouse.jdbc.ConnectionImpl.setReadOnly(ConnectionImpl.java:220) at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.openConnection(JDBCDataSource.java:253) at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.openConnection(JDBCDataSource.java:133) at org.jkiss.dbeaver.ext.generic.model.GenericDataSource.openConnection(GenericDataSource.java:158) at org.jkiss.dbeaver.model.impl.jdbc.JDBCExecutionContext.connect(JDBCExecutionContext.java:124) at org.jkiss.dbeaver.model.impl.jdbc.JDBCRemoteInstance.initializeMainContext(JDBCRemoteInstance.java:106) at org.jkiss.dbeaver.model.impl.jdbc.JDBCRemoteInstance.<init>(JDBCRemoteInstance.java:61) at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.initializeRemoteInstance(JDBCDataSource.java:125) at org.jkiss.dbeaver.ext.generic.model.GenericDataSource.<init>(GenericDataSource.java:124) at org.jkiss.dbeaver.ext.clickhouse.model.ClickhouseDataSource.<init>(ClickhouseDataSource.java:77) at org.jkiss.dbeaver.ext.clickhouse.model.ClickhouseMetaModel.createDataSourceImpl(ClickhouseMetaModel.java:57) at org.jkiss.dbeaver.ext.generic.GenericDataSourceProvider.openDataSource(GenericDataSourceProvider.java:57) at org.jkiss.dbeaver.registry.DataSourceDescriptor.openDataSource(DataSourceDescriptor.java:1413) at org.jkiss.dbeaver.registry.DataSourceDescriptor.connect0(DataSourceDescriptor.java:1271) at org.jkiss.dbeaver.registry.DataSourceDescriptor.connect(DataSourceDescriptor.java:1061) at io.cloudbeaver.service.ConnectionControllerCE.initConnection(ConnectionControllerCE.java:455) at io.cloudbeaver.service.core.impl.WebServiceCore.initConnection(WebServiceCore.java:294) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) ```
Author
Owner

@Dr1m91 commented on GitHub (Aug 12, 2025):

What I did ( from ClickHouse documentation --- https://clickhouse.com/docs/integrations/language-clients/java/jdbc#configuration )

  • Tried to suppress the read-only setting error using the driver parameter jdbc_ignore_unsupported_values=true.
  • Examples of configurations I tried:
"url": "jdbc:clickhouse://${opts.host}:${opts.port}/${opts.database}?jdbc_ignore_unsupported_values=true"
"read-only": true
"configuration": {
  ...
  "url": "jdbc:clickhouse://${opts.host}:${opts.port}/${opts.database}",
  "provider-properties": {
    "jdbc_ignore_unsupported_values": "true",
    "@dbeaver-show-non-default-db@": "true"
  }
}

Expected behavior

  • The driver ignores the unsupported read-only setting (without throwing an exception), or accepts/handles the parameter so the cloud client does not fail.

Actual behavior

  • Despite adding jdbc_ignore_unsupported_values=true and adding the property to provider-properties, the connection attempt with "read-only": true still results in an error like:
    shell

read-only=true unsupported
or a similar exception indicating that setting read-only is not supported.

  • In other words, the parameter does not suppress the exception in my environment.
<!-- gh-comment-id:3180399829 --> @Dr1m91 commented on GitHub (Aug 12, 2025): What I did ( from ClickHouse documentation --- https://clickhouse.com/docs/integrations/language-clients/java/jdbc#configuration ) - Tried to suppress the read-only setting error using the driver parameter jdbc_ignore_unsupported_values=true. - Examples of configurations I tried: ``` "url": "jdbc:clickhouse://${opts.host}:${opts.port}/${opts.database}?jdbc_ignore_unsupported_values=true" "read-only": true ``` ``` "configuration": { ... "url": "jdbc:clickhouse://${opts.host}:${opts.port}/${opts.database}", "provider-properties": { "jdbc_ignore_unsupported_values": "true", "@dbeaver-show-non-default-db@": "true" } } ``` Expected behavior - The driver ignores the unsupported read-only setting (without throwing an exception), or accepts/handles the parameter so the cloud client does not fail. Actual behavior - Despite adding jdbc_ignore_unsupported_values=true and adding the property to provider-properties, the connection attempt with "read-only": true still results in an error like: shell read-only=true unsupported or a similar exception indicating that setting read-only is not supported. - In other words, the parameter does not suppress the exception in my environment.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/cloudbeaver#1294
No description provided.