@Override
    public void setAutoCommit(boolean autoCommit) throws SQLException {
        ensureOpen();

        if (this.autoCommit == autoCommit) {
            return;
        }

        ensureTransactionSupport();
        if (this.autoCommit = autoCommit) { // commit
            JdbcTransaction tx = txRef.getAndSet(null);
            if (tx != null) {
                tx.commit(log);
            }
        } else { // start new transaction
            if (!txRef.compareAndSet(null, createTransaction())) {
                log.warn("Not able to start a new transaction, reuse the exist one: %s", txRef.get());
            }
        }
    }
Checks if a feature can be supported or not.

@param feature non-empty feature name
@param silent  whether to show warning in log or throw unsupported exception
@throws SQLException when the feature is not supported and silent is
                     {@code false}
clickhouse-jdbc/src/main/java/com/clickhouse/jdbc/internal/ClickHouseConnectionImpl.java