I have put the source for the Solid driver we're using with 3.4 at:

http://www.rubylane.com/public/rlsolid

It has a few changes:
- max data element size is 32K instead of 8K
- supports SET AUTOCOMMIT ON/OFF
- adds ns_db resethandle call to initialize a handle (was already in AS,
but not implemented for Solid)
- does "rollback work" statements when a handle is released/acquired.

This last item is important with Solid, because Solid establishes DB
states when a select is executed.  After a select, you will not see
subsequent changes to the database as long as you use this handle.
It is important that when a thread exits, a rollback is executed so
that when a new thread starts and uses this handle, it will see the
current state of the database.

In AS 2.3.3 there apparently are some cases where resethandle is not
being called when the handle is released back to the DB pool.  Maybe
in scheduled procs - I dunno.  So right after we call ns_db gethandle,
we call ns_db resethandle to do a rollback.  This is redundant in most
cases, but important if the resethandle call is somehow bypassed by
AS due to this weird case.

Jim

Reply via email to