SQLNumResultCols does not have a timeout

Поиск
Список
Период
Сортировка
От 靳骄阳
Тема SQLNumResultCols does not have a timeout
Дата
Msg-id tencent_19D47A7E4615ED57765B47F2@qq.com
обсуждение исходный текст
Список pgsql-odbc
Hello,
       I stuck in SQLNumResultCols afterunplug my Ethernet cable.

My configuration:
-----------------
server - Linux x86 + postgresql 14.2
client - Linux x86 + postgresql O
DBC 16.00​




Problem description:


--------------------


My code is as follow:
    SQLHENV henv;
    SQLHDBC hdbc;
    SQLRETURN retcode;
   
    SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
    SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);

    SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
   
    SQLCHAR* connStr = (SQLCHAR*)"DRIVER={PostgreSQL};"
                                  "SERVER=173.20.99.107;"
                                  "Port=5432;"
                                  "DATABASE=cpspg;"
                                  "UserName=sac;"
                                  "Password=sac;"
                                  "Keepalive=1"
                                  "KeepaliveTime=1;"
                                  "KeepaliveInterval=1"
                                  "Parse=1"
                                  "UseServerSidePrepare=0";
                                  //"CHARSET=UTF8;"
                                  //"AUTOCOMMIT=0";

    retcode = SQLDriverConnect(hdbc, NULL, connStr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT);

    if (retcode == SQL_SUCCESS || retcode== SQL_SUCCESS_WITH_INFO)
    {
   
        SQLHANDLE hstmt;

        SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
        const char* sql_statement = "select now()";
        retcode = SQLPrepare(hstmt, (SQLCHAR*)sql_statement, SQL_NTS);
        std::string temp;
        std::cout << "input something:";
        std::cin >> temp;
        SQLSMALLINT count;
        retcode = SQLNumResultCols(hstmt, &count);
        std::cout << "col count is " << count << std::endl;

        if (retcode == SQL_SUCCESS || retcode== SQL_SUCCESS_WITH_INFO)
        {
            std::cout << "insert success" << std::endl;
        }
        else
        {
            HandleDiagnosticRecord(hdbc, SQL_HANDLE_DBC, retcode);
        }
        //SQLEndTran(SQL_HANDLE_DBC, hdbc, SQL_ROLLBACK);
        SQLEndTran(SQL_HANDLE_DBC, hdbc, SQL_COMMIT);
        SQLDisconnect(hdbc);
    }
    else
    {
        HandleDiagnosticRecord(hdbc, SQL_HANDLE_DBC, retcode);
    }

    SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
    SQLFreeHandle(SQL_HANDLE_ENV, henv);

unplug my Ethernet cable when wait input and then input something, the program stucked in SQLNumResultCols. Finally got stuck in function PQgetResult and pqWaitTimed.
So my question is: Is this a bug or how to set timeout when the network has lost?

Thanks
Jin

В списке pgsql-odbc по дате отправления:

Предыдущее
От: Dave Cramer
Дата:
Сообщение: Please test release on github
Следующее
От: Paul Chambre
Дата:
Сообщение: Building psqlODBC on newer Visual Studio versions