DevHeads.net

Does the psqlodbc driver support asynchronous queries?

Hello everyone,

I'm trying to run asynchronous queries with unixODBC + psqlodbcw.so in
linux (RHEL5), but I can not do it.

The next code:

//-------
// Get the Async state
SQLINTEGER attrState;
SQLGetConnectAttr(hstmt, SQL_ATTR_ASYNC_ENABLE, &attrState, 0, NULL);
std::cout << "Async is set to: " << attrState << std::endl;
// Enable Async Operation - if ASYNC is not allowed, SQLSetStmtAttr
// will return an error
retcode = SQLSetStmtAttr (hstmt, SQL_ATTR_ASYNC_ENABLE,
(SQLPOINTER) SQL_ASYNC_ENABLE_ON,
SQL_IS_INTEGER);
CHECK_ERROR(retcode, "SQLSetStmtAttr(SQL_ATTR_ASYNC_ENABLE)",
hstmt, SQL_HANDLE_STMT);
// Get the Async state again
SQLGetConnectAttr(hstmt, SQL_ATTR_ASYNC_ENABLE, &attrState, 0, NULL);
std::cout << "Async is set to: " << attrState << " now " << std::endl;
// Execute SELECT whilst status SQL_STILL_EXECUTING
//retcode = SQLExecDirect (hstmt, stmt, SQL_NTS);
while (SQLExecDirect (hstmt, stmt, SQL_NTS) == SQL_STILL_EXECUTING) {
printf ("\nStill executing ...");
printf ("\nSnooze ..");
sleep(1);
printf ("\nAwake ..");
retcode = SQLExecDirect (hstmt, stmt, SQL_NTS);
}
//-------

Returns the next output:

Async is set to: -1074166952
Async is set to: -1074166952 now

and the select is not working in asynchronous mode.

Am I doing something wrong or the postgres odbc driver does not support
asynchronous calls through unixODBC?

Thanks in advance.

Regards,
Juan Tiritas

Comments

Re: Does the psqlodbc driver support asynchronous queries?

By Clemens Ladisch at 11/06/2018 - 12:48

Juan Tiritas wrote:
<https://docs.microsoft.com/en-us/sql/odbc/reference/develop-app/asynchronous-execution-polling-method>
says:
| To find out which one is supported, an application calls SQLGetInfo with an option
| of SQL_ASYNC_MODE. SQL_AM_CONNECTION is returned if connection-level asynchronous
| execution (for a statement handle) is supported; SQL_AM_STATEMENT if statement-
| level asynchronous execution is supported.

It returns SQL_AM_NONE.

Regards,
Clemens

Re: Does the psqlodbc driver support asynchronous queries?

By Juan Tiritas at 11/07/2018 - 01:55

Thanks for your answer, Clemens.

You're right, I've tried SQLGetInfo and the function returns SQL_AM_NONE.

I will try libpq because my middleware needs asynchronous access.

Regards,
Juan Tiritas

El mar., 6 nov. 2018 a las 18:51, Clemens Ladisch (< ... at ladisch dot de>)
escribió: