[freetds] FreeTDS 0.82 no longer has tds.h installed?
James K. Lowden
jklowden at freetds.org
Sat Apr 19 16:12:03 EDT 2008
Dossy Shiobara wrote:
> On 2008.04.19, James K. Lowden <jklowden at freetds.org> wrote:
> > Both FreeTDS and the AOLserver project would be better off if
> > AOLserver used a client library instead.
> Has someone verified thread-safety, all the way through the client
> library layer?
I don't know about "verified". db-lib doesn't permit multiple threads to
share a connection, but we assert it's otherwise thread-safe.
> This was, IIRC, the primary reason why I went straight to the tds_*
> functions rather than trying to use db-lib or ct-lib.
db-lib was invented a decade before multithreading. ct-lib should be
threadsafe, period, according to Sybase's specification cf.
That said, ct-lib, although it supports DBD::Sybase and sqsh acceptably,
is the weak sister nowadays, with no one actively adding to it. Your
involvement could change that, which is what I meant by both projects
benefitting. Instead of maintaining something special to AOLserver, you'd
be maintaining a generalized, well defined interface.
> I don't see how to set the TDS
> protocol version any more. Previously, it was easy as invoking
> tds_set_version(). Is this done through dbsetlversion()?
Ouch! tds_set_version still works. dbsetlversion is how db-lib Microsoft
specifies the same idea in db-lib. FreeTDS implements it as defined by
Microsoft, but it could be generalized.
We should probably invent "dbsettdsversion()" as the inverse of dbtds().
> Does db-lib or ct-lib offer millisecond-granularity timeouts? Or, is it
> in whole seconds?
No, but we could discuss ways to make that possible.
I'm a little surprised this is a requirement, insofar as database drivers
generally can't be depended on for that kind of granularity. ODBC
SQL_ATTR_CONNECTION_TIMEOUT is specified in seconds. Timeout handling was
quite broken in FreeTDS prior to 0.82.
> I guess nsfreetds operates like just another "client library" for
> AOLserver application code. Perhaps I'll look and see what it will take
> to build libtds again in 0.82. Thanks for the idea.
Always happy to help another free software project!
I think you'll find that the static library libtds.a is built. You
probably just need to copy the headers and the library to your standard
tree and re-link.
More information about the FreeTDS