@SuppressWarnings("unchecked")
    public SelfT transaction(int timeout) throws ClickHouseException {
        ClickHouseTransaction tx = txRef.get();
        if (tx != null && tx.getTimeout() == (timeout < 0 ? 0 : timeout)) {
            return (SelfT) this;
        }
        return transaction(getManager().getOrStartTransaction(this, timeout));
    }
Creates and starts a transaction immediately. Please pay attention that
unlike other methods in this class, it will connect to ClickHouse server,
allocate session and start transaction right away.

@param timeout transaction timeout in seconds, zero or negative means
               same as session timeout
@return the request itself
@throws ClickHouseException when failed to start or reuse transaction
clickhouse-client/src/main/java/com/clickhouse/client/ClickHouseRequest.java