bool OdbcHelper::AllocateHandle()

in src/util/odbc_helper.cc [89:109]


bool OdbcHelper::AllocateHandle(SQLSMALLINT handle_type, SQLHANDLE input_handle, SQLHANDLE& output_handle, const std::string& log_message) {
    SQLRETURN rc;
    rc = SQLAllocHandle(handle_type, input_handle, &output_handle);
    if (!OdbcHelper::CheckResult(rc, log_message, output_handle, handle_type)) {
        switch (handle_type) {
        case SQL_HANDLE_ENV:
            OdbcHelper::Cleanup(output_handle, SQL_NULL_HANDLE, SQL_NULL_HANDLE);
            break;
        case SQL_HANDLE_DBC:
            OdbcHelper::Cleanup(SQL_NULL_HANDLE, output_handle, SQL_NULL_HANDLE);
            break;
        case SQL_HANDLE_STMT:
            OdbcHelper::Cleanup(SQL_NULL_HANDLE, SQL_NULL_HANDLE, output_handle);
            break;
        default:
            break;
        }
        return false;
    }
    return true;
}