[Libreoffice-qa] error checking in Base ODBC

Terrence Enger tenger at iseries-guru.com
Fri Oct 14 06:50:02 PDT 2011

I notice that at least some calls from Base to ODBC routines
fail to check the return code, and I wonder what we should
be doing.

The particular situation that caught my interest arises this
way ...
(*) Base allocates and uses a connection handle.  
(*) Upon closing the database, the code tries to free that
    handle without calling SQLDisconnect.  SQLFreeHandle
    returns -1 (SQL_ERROR), and sets sqlstate HY010
    (function sequence error).
(*) The statistics tab of ODBCConfig (part of unixODBC on
    ubuntu-natty) shows that one connection is allocated.

A call to SQLDisconnect before the call to SQLFreeHandle
within OConnection::~OConnection() has worked once(!)
without causing obvious difficulties.

( Aside to the kind people who were discussing automated
testing with me last week:  I anticipate that leaked
connection handles could cause difficulty in the context of
automated tests, either from opening and closing many
databases within one instance of soffice.bin, or from a
driver manager less generous with handles than the one I am
using here now.  See, folks, I have not been ignoring you
just for the sake of ignoring you <grin />. )

What else should the code generally do?  Should we continue
to ignore errors?  (After all, I only noticed the particular
situation because I am nasty person who is just looking for
trouble <grin />.)  Should we be asserting adequately good
return values?  We could collect diagnostic information, if
we knew how to get the attention of somebody who cares.  Can
we even think about throwing exceptions from a low-level
wrapper around the ODBC routine?

Thank you, all, for your patience with a troublemaker.

More information about the Libreoffice-qa mailing list