[R-sig-DB] RSQLite 1.0.0

Hadley Wickham h@w|ckh@m @end|ng |rom gm@||@com
Wed Sep 24 00:10:37 CEST 2014

Hi everyone,

I'm preparing to release a new version of RSQLite, 1.0.0.  (I've taken
over maintenance from Seth Falcon). This release is basically a big
tidy up - I've refactored a lot of the C code to be easier to follow,
deprecated a lot of unused functions, and converted everything to
"Hadley"-style package development.  A complete list of changes are
included at the bottom of this email.

If you use RSQLite, I'd really appreciate it if you'd try out the
development version and let me know if you have any problems. You can
install it from github with:

# install.packages("devtools")

If you have written a package that depends on RSQLite, please check
the list of R CMD check results at
I've been quite aggressive at deprecating old functions, and
un-exporting functions that are really part of RSQLite's internal
interface. This means that many packages will need changes. If you
have any trouble figuring out the problem, please let me know and I'll
be happy to help. I apologise for the hassle, but this will make
RSQLite a much better platform to build on in the future.

I plan to submit this version of RSQLite to CRAN on Oct 20, so that
there's plenty of time for feedback and changes.


# Version 1.0.0

## New features

- Updated to SQLite 3.8.6

- Added `datasetsDb()`, a bundled SQLite database containing all data frames
  in the datasets package (#15).

- Inlined `RSQLite.extfuns` - use `initExtension()` to load the many
  useful extension functions (#44).

- Methods no longer automatically clone the connection is there is an open
  result set. This was implement inconsistently in a handful of places (#22).
  RSQLite is now more forgiving if you forget to close a result set - it will
  close it for you, with a warning. It's still good practice to clean up
  after yourself, but you don't have to.

- `dbBegin()`, `dbCommit()`, `dbRollback()` throw errors on failure, rather than
  return `FALSE`.  They all gain a `name` argument to specify named savepoints.

- `dbFetch()` method added (`fetch()` will be deprecated in the future)

- `dbRemoveTable()` throws errors on failure, rather than returning `FALSE`.

- `dbWriteTable()` has been rewritten:

    * It quotes field names using `dbQuoteIdentifier()`, rather
      than use a flawed black-list based approach with name munging.

    * It now throws errors on failure, rather than returning FALSE.

    * It will automatically add row names only if they are character,
not integer.

    * When loading a file from disk, `dbWriteTable()` will no longer
      attempt to guess the correct values for `row.names` and `header` - instead
      supply them explicitly if the defaults are incorrect.

    * It uses named save points so it can be nested inside other
      transactions (#41).

    * When given a zero-row data frame it will just creates the table
      definition (#35).

## Changes to objects

- The `dbname`, `loadable.extensions`, `flags` and `vfs` properties of
  a SqliteConnection are now slots. Access them directly instead of using

## Deprecated and removed functions

- RSQLite is no longer nominally compatible with S (#39).

- `idIsValid()` is deprecated. Please use `dbIsValid()` instead.

- `dbBeginTransaction()` has been deprecated. Please use `dbBegin()` instead.

- `dbCallProc()` method removed, since generic is now deprecated.

- Renamed `dbBuildTableDefinition()` to `sqliteBuildTableDefinition()`
  to avoid implying it's a DBI generic. Old function is aliased to new with
  a warning.

- `dbFetch()` no longer numbers row names sequentially between fetches.

- `safe.write()` is no longer exported as it shouldn't be part of the
  public RSQLite interface (#26).

- Internal `sqlite*()` functions are no longer exported (#20).

- Removed `SqliteObject` and `dbObject` classes, modifying `SqliteDriver`,
  `SqliteConnection`, and `SqliteResult` to use composition instead of multiple


More information about the R-sig-DB mailing list