[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