bool LimitlessQueryHelper::CheckLimitlessCluster()

in src/limitless/limitless_query_helper.cc [42:71]


bool LimitlessQueryHelper::CheckLimitlessCluster(SQLHDBC conn) {
    HSTMT hstmt = SQL_NULL_HSTMT;
    SQLRETURN rc = SQLAllocHandle(SQL_HANDLE_STMT, conn, &hstmt);
    if (!SQL_SUCCEEDED(rc)) {
        return false;
    }

    rc = SQLExecDirect(hstmt, check_limitless_cluster_query, SQL_NTS);
    if (!OdbcHelper::CheckResult(rc, "CheckLimitlessCluster - SQLExecDirect failed", hstmt, SQL_HANDLE_STMT)) {
        OdbcHelper::Cleanup(SQL_NULL_HENV, SQL_NULL_HDBC, hstmt);
        return false;
    }

    rc = SQLFetch(hstmt);
    if (!OdbcHelper::CheckResult(rc, "CheckLimitlessCluster - SQLFetch failed", hstmt, SQL_HANDLE_STMT)) {
        OdbcHelper::Cleanup(SQL_NULL_HENV, SQL_NULL_HDBC, hstmt);
        return false;
    }

    SQLCHAR result[2];
    SQLLEN result_len = 0;
    rc = SQLGetData(hstmt, 1, SQL_C_CHAR, &result, sizeof(result), &result_len);
    if (OdbcHelper::CheckResult(rc, "CheckLimitlessCluster - SQLGetData failed", hstmt, SQL_HANDLE_STMT)) {
        OdbcHelper::Cleanup(SQL_NULL_HENV, SQL_NULL_HDBC, hstmt);
        return result[0] == '1';
    }

    OdbcHelper::Cleanup(SQL_NULL_HENV, SQL_NULL_HDBC, hstmt);
    return false;
}