[R-sig-DB] Request for testers for RSQLite release candidate
Seth Falcon
@eth @end|ng |rom u@erpr|m@ry@net
Sun May 2 23:17:50 CEST 2010
Hi all,
I've been working on the next release of RSQLite and would appreciate
feedback on the release candidate from anyone willing to take it for a
test drive.
The NEWS items for what I hope will be the 0.9-0 release are at the end
of this mail. Highlights in brief:
* Better compatibility with multicore, driver handle no longer needs to
match current process ID.
* Support for SQLite BLOBs via raw vectors
* Reworked memory model for DB connections to tie into R's garbage
collector. When a db connection is no longer referenced by an R
variable, it will be closed and cleaned up.
You can grab the source package for the release candidate here:
http://userprimary.net/software/RSQLite_0.8-99.tar.gz
Thanks,
+ seth
Version 0.9-0
- The SQLite driver handle validation code, is_ValidHandle, no longer
requires the driver ID to be equal to the current process ID.
SQLite supports multiple processes accessing the same SQLite file
via locking (however, results are known to be unreliable on NFS).
This change should make using RSQLite with the multicore package
easier. For an example of the issue that the PID check causes see:
https://stat.ethz.ch/pipermail/r-sig-hpc/2009-August/000335.html
- Refactor to use external pointers to wrap handle IDs; remove handle
ID coerce code (e.g. as(obj using Id, "integer")). For now, the old
scheme of storing handle IDs in an integer vector is mostly
maintained only these integer vectors are stored in the protection
slot of an external pointer. Using external pointers will allow the
use of finalizer code so that, for example, unreferenced result sets
can be cleaned up.
- Upgrade to SQLite 3.6.23.1.
- The memory mangement code for keeping track of database connections
was significantly refactored. Instead of tracking connections in a
pre-allocated array attached to the driver manager, connections are
now managed dynamically using R's external pointers and finalizers.
Consequences of this change are as follows:
* There is no longer a maximum connection limit (values specified
using the max.con argument to SQLite() are now ignored).
* The dbGetInfo(mgr) method no longer lists open connections and
dbListConnections will now always return an empty list. This
functionality was only needed because one needed a reference to
a connection in order to finalize the resource via
dbDisconnect(). While calling dbDisconnect() is still the
recommended approach, database connections that are no longer
referenced by any R variables will be finalized by R's garbage
collector.
* The behavior of SQLiteConnection objects now follows typical R
semantics. If no R variables reference a given connection, it
will be finalized by R's garbage collector.
- Add support for SQLite BLOBs. You can now insert and retrieve BLOBs
using raw vectors. For parameterized queries using
dbSendPreparedQuery the BLOB column should be a list. When a query
returns a result set with a BLOB column, that column will be a list
of raw vectors. Lists as columns in data.frames work for simple
access, but may break some code that expects columns to be atomic
vectors.
- RSQLite now depends on R >= 2.10.0.
More information about the R-sig-DB
mailing list