A client-server database system enables persistent client-server database
sessions, without modification to a client-side application, a database
system, or native client-side database drivers. The client is implemented
with a driver manager to facilitate communication between the native
database drivers and the database application. The driver manager wraps
the native drivers, intercepting queries passed from the database
application to the database drivers. The driver manager modifies the
queries to form modified queries that direct the database server to render
result sets produced from processing the queries persistent at the
database server. Upon recovery following a server crash, the driver
manager directs the drivers to reestablish a connection with the database
server. The driver manager then finds the persistent result set table and,
using logged data, returns to the same operation on the result set table
just prior to the crash. The driver manager then reassociates the
application context to the new database session without the database
application being aware that a failure occurred. The recovery is thus
transparent to the client-side application.