public ClickHouseTransaction createTransaction(ClickHouseRequest<?> request, int timeout)
            throws ClickHouseException {
        return createTransaction(ClickHouseChecker.nonNull(request, "Request").getServer(),
                request.getConfig().getTransactionTimeout());
    }
Creates a new transaction. Unlike
{@link #getOrStartTransaction(ClickHouseRequest, int)}, the transaction's
state is {@link ClickHouseTransaction#NEW} and it's not bounded with the
request.

@param request non-null request
@param timeout transaction timeout in seconds, zero or negative number
               means {@code request.getConfig().getTransactionTimeout()}
@return non-null new transaction
@throws ClickHouseException when failed to create transaction
clickhouse-client/src/main/java/com/clickhouse/client/ClickHouseRequestManager.java