Thread: Where is DiscardRollbackState()?

Where is DiscardRollbackState()?

From
Zoltan Boszormenyi
Date:
Hi,

in psqlODBC's odbcapi.c, there's:

#if (ODBCVER < 0x0300)
RETCODE         SQL_API
SQLGetStmtOption(HSTMT StatementHandle,
                                 SQLUSMALLINT Option, PTR Value)
{
        CSTR    func = "SQLGetStmtOption";
        RETCODE ret;
        StatementClass *stmt = (StatementClass *) StatementHandle;

        mylog("[%s]", func);
        ENTER_STMT_CS(stmt);
        SC_clear_error(stmt);
        StartRollbackState(stmt);
        ret = PGAPI_GetStmtOption(StatementHandle, Option, Value, NULL, 64);
        ret = DiscardRollbackState(stmt, ret, FALSE);
        LEAVE_STMT_CS(stmt);
        return ret;
}
#endif /* ODBCVER */

If I compile the driver --with-odbcver=0x0250,
DiscardRollbackState() shows up at runtime linking
as an unknown symbol.

DiscardRollbackState() is not defined anywhere,
only referenced in the above function. It's clearly a bug to me.

Best regards,
Zoltán Böszörményi

--
----------------------------------
Zoltán Böszörményi
Cybertec Schönig & Schönig GmbH
http://www.postgresql.at/


Re: Where is DiscardRollbackState()?

From
Hiroshi Inoue
Date:
Hi Zoltan,
Sorry for the delay.

Zoltan Boszormenyi wrote:
> Hi,
>
> in psqlODBC's odbcapi.c, there's:
>
> #if (ODBCVER < 0x0300)
> RETCODE         SQL_API
> SQLGetStmtOption(HSTMT StatementHandle,
>                                  SQLUSMALLINT Option, PTR Value)
> {
>         CSTR    func = "SQLGetStmtOption";
>         RETCODE ret;
>         StatementClass *stmt = (StatementClass *) StatementHandle;
>
>         mylog("[%s]", func);
>         ENTER_STMT_CS(stmt);
>         SC_clear_error(stmt);
>         StartRollbackState(stmt);
>         ret = PGAPI_GetStmtOption(StatementHandle, Option, Value, NULL, 64);
>         ret = DiscardRollbackState(stmt, ret, FALSE);
>         LEAVE_STMT_CS(stmt);
>         return ret;
> }
> #endif /* ODBCVER */
>
> If I compile the driver --with-odbcver=0x0250,
> DiscardRollbackState() shows up at runtime linking
> as an unknown symbol.
>
> DiscardRollbackState() is not defined anywhere,
> only referenced in the above function. It's clearly a bug to me.

You are right.
It should be replaced by DiscardStatementSvp.
I would fix the bug soon.

regards,
Hiroshi Inoue