Version 0.8-4

- Fix a memory leak in bound parameter management and resolve a
  missing PROTECT bug that caused spurious crashes when performing
  many prepared queries.

- Improve internal memory handling for prepared queries.  Use
  R_PreserveObject/R_ReleaseObject instead of the protection stack to
  manage parameter binding.  Logical vectors are now properly coerced
  to integer vectors and Rf_asCharacterFactor is used to convert
  factors in bind data.

- RSQLite now requires DBI >= 0.2-5

- There is now a fairly comprehensive example of using prepared
  queries in the man page for dbSendQuery-methods.

- Upgrade to SQLite 3.6.21 => 3.6.22 (minor bug fixes).

- Use sqlite3_prepare_v2 throughout, remove workaround code needed for
  legacy sqlite3_prepare behavior.

- Add name space unload hook to unload RSQLite.so.

- Enable full-text search module by default.  See
  http://www.sqlite.org/fts3.html for details on this SQLite
  module.

- Add support for prepared queries that involve a SELECT.  This was
  previously unsupported.  SELECT queries can now be used with
  dbSendPreparedQuery.  The return value is the same as rbind'ing the
  results of the individual queries.  This means that parameters that
  return no results are ignored in the result.

Version 0.8-3

- Enable RTree module for the Windows build.  The configure script is
  not run on Windows, options are set directly in src/Makevars.win.

Version 0.8-2

- Changes to support WIN64

Version 0.8-1

- sqliteFetch now returns a data.frame with the expected number of
  columns when a query returns zero rows.  Before, a 0 x 0 data.frame
  was returned regardless of the number of columns in the original
  query.  The change will be seen in calls to fetch and dbGetQuery for
  queries that return no result rows.

- sqliteCopyDatabase has been refactored to support copying to either
  a file or an open and empty database connection.  This makes it
  possible to transfer a disk based database to an in-memory based
  database.  The changes to sqliteCopyDatabase are NOT BACKWARDS
  COMPATIBLE: the return value is now NULL (an error is raised if the
  copying fails) and the argument names have been changed to 'from'
  and 'to'.  As this was a newly added feature that uses an
  experimental SQLite API, I decided to disregards compatibility.

- Calling dbSendPreparedQuery with a non-NULL bind.data that has zero
  rows or zero columns is now an error.


Version 0.8-0

- Upgrade to SQLite 3.6.21

- Apply some code and Rd cleanups contributed by Mattias Burger.
  Avoid partial argument name matching, use TRUE/FALSE not T/F and
  improve Rd markup.

- Integrate RUnit unit tests so that they run during R CMD check.
  Small improvements to make the tests run more quietly.  You can run
  the unit tests by calling RSQLite:::.test_RSQLite() (require latest
  version of the RUnit package).  Also had to disable some unit tests
  on Windows.  Investigation of details is on the TODO list.

- Add sqliteCopyDatabase, a function that uses SQLite's online backup
  API to allow a specified database to be copied to a file.  This can
  be used to create a file copy of an in memory database.

- Increase the default max connections from 16 to 200 in SQLite().
  Connections to SQLite are inexpensive and there is no longer any
  hard-coded limit to the number of connections you can have.
  However, memory is allocated at driver initialization time based on
  the maximum, so it is best not to use very large values unless you
  really need the connections.

- sqliteTransactionStatement, which is used by dbCommit, dbRollback,
  and dbBeginTransaction, now passes silent=TRUE to try() to suppress
  error messages.  Without this, code that could otherwise handle a
  failed commit gracefully had no way to suppress the error message.
  You can use dbGetException to see the error when
  sqliteTransactionStatement returns FALSE.

- dbConnect/sqliteNewConnection now throws an error if dbname argument
  is NA.  Previously, if as.character(NA) was provided, a database
  with filename "NA" was created.

- dbConnect/sqliteNewConnection now accepts two new arguments:

  flags:
      provides additional control over connetion details.  For
      convenience, you can specify one of SQLITE_RWC (default),
      SQLITE_RW, or SQLITE_RO to obtain a connection in
      read/write/create, read/write, or read only mode, respectively.
      See http://sqlite.org/c3ref/open.html for details.
  vfs:
      controls the virtual filesystem used by SQLite.  The default,
      NULL, lets SQLite select the appropriate vfs for the system.
      You can specify one of "unix-posix", "unix-afp", "unix-flock",
      "unix-dotfile", or "unix-none".  For details, see
      http://www.sqlite.org/compile.html.  This functionality is only
      fully available on OSX.  On non-OSX Unix, you can use
      unix-dotfile and unix-none.  None of these modules are available
      on Windows where a non-NULL values of the vfs argument will be
      ignored with a warning.


Version 0.7-3

- Use the default value for SQLITE_MAX_SQL_LENGTH which has now been
  significantly increased over the value of 2 million that we had set
  in 2008.

- Fix some Rd cross references in the documentation.

Version 0.7-2

- Fixed some partial argument matching warnings.  Thanks to Matthias
  Burger for reporting and sending a patch.

- Added dbBuildTableDefinition to exports per user request.

Version 0.7-1

- Upgraded included SQLite from 3.6.0 to 3.6.4

- Old news is now in ONEWS.  Taking a fresh start with this NEWS file
  to keep better track of changes on a per-release basis.

- Added a HACKING file where we will add notes about how to do
  development on RSQLite.

--------------------

Version 0.4-12

* Fix bug in dbListTables for empty databases

Version 0.4-11

* Implemented dbCommit() and dbRollback(). There is also a new
  generic method dbBeginTransaction(), which begins a transaction.
  Note that this is an extension to the DBI interface.

* Update to the SQLite 3 API for fetching records. This means that
  the records are pulled from the database as required, and not
  cached in memory as was previously done.

* Added generic methods dbSendPreparedQuery() and dbGetPreparedQuery()
  which are similiar to dbSendQuery() and dbGetQuery(), but take an
  extra "bind.data" parameter, which is a data frame. The statement
  is assumed to contain bind variables. Bind variables are either
  for a column name (":name" or "@name") or for a column index ("?")
  in the data frame. See http://sqlite.org/capi3ref.html for more details.

  dbGetPreparedQuery(con, "INSERT INTO table1 VALUES (:col1)",
                           data.frame(col1=c(1, 2)) )

  Each bind variable in the query has to be bound only once, either via
  named or positional parameters. If it is not bound or is bound more
  than once (due to a mix or positional/named parameters) an error is
  thrown. Any extra columns in the data frame are ignored.

  If you are having a lot of string parameters, use stringsAsFactors=FALSE
  when creating the bind.data data.frame instance.  You can also use I().

* Added experimental sqliteQuickColumn function that retrieves an entire 
  column from a specified table as quickly as possible.

* The SQLite driver has a new logical parameter "shared.cache" to
  enable the shared-cache mode, which allows multiple connections
  to share a single data and schema cache. See
  http://www.sqlite.org/sharedcache.html

Version 0.4-9

* Upgraded to SQLite 3.3.8

* Use .SQLitePkgName instead of hard-coding the package name when
  using .Call

* dbConnect() now has a logical parameter "loadable.extensions"
  which will allow loading of extensions. See the Loadable
  Extensions documentation:
  http://www.sqlite.org/cvstrac/wiki?p=LoadableExtensions

Version 0.4-4

* Upgraded to SQLite 3.3.7

* Default when building from source is now to compile the included
  version of SQLite and link to it statically

* Fixed unclosed textConnections

Version 0.4-1

* Added a method for dbWriteTable to write table from a text file, e.g.,
  dbWriteTable(con, "tablename", "filename")

* Fixed problems exporting/importing NA's (thanks to Ronngui Huang for
  a very clear bug report).

* Fixed double free() in the C code, a tiny memory leak, and configure now
  builds sqlite properly on 64-bit linux (thanks to Seth Falcon for these).

* dbConnect() now accepts values for the "cache_size" and "sychnronous"
  PRAGMAs ("synchronous" defaults to 0 or "off") to improve
  performance (thanks to Charles Loboz for pointing these out, see the
  file "rsqlitePerf.txt").

Version 0.4-0

* First attempt at using the new SQLite Version 3 API.  This version
  is a bridge to the new API, but it does not make available the new
  capabilities (e.g., prepared statements, data bindings, etc.) but
  prepares us for those new features.

* Clean up some installation code (mainly to make it easy to automatically
  build on Windows, as per Kurt Hornik and Uwe Ligges suggestions).

* Fixed bug that ignored "fetch.default.rec" in SQLite()/dbDriver()
  (as reported by Duncan Murdoch)

* Fixed bug in dbReadTable() that was not recognizing "row.names" in its
  default, thus it now re-creates a data.frame that has been exported
  with dbWriteTable().

* Fixed bug where dbListTables was not listing views (as reported by
  Doug Bates).

* Added code in "configure.in" to determine CC/CFLAGS used in compiling R
  (as suggested by Brian D. Ripley to get it to compile on 64-bit machines).
  As of today, I can't test this myself.

Version 0.3-5

* Documentation typos, trivial packaging changes, as per CRAN maintainer
  request.

Version 0.3-4

* Fixed documentation typos.

Version 0.3-3

* Minor fixes to accommadate R 1.8.0 changes to data.frame subsetting.

* Updated the documentation to use 1.8.0 new S4-style method documentation.

* Updated to SQLite to the latest 2.8.6 (included with RSQLite).

* Added file NAMESPACE.future to prepare for namespace implementation
  at some future release.

Version 0.3-2

* Ported to Windows.  It now installs fine under Windows with

    Rcmd INSTALL RSQLite_0.3-2.tar.gz

  (there's also a binary RSQLite_0.3-2.zip)

* Added code to verify that the SQLite library versions used for
  compilation and at runtime agree.

* Added source sqlite-2.8.3.

* Fixed minor documentation errors and removed the DBI.pdf documentation
  file, which is included in the required DBI package.

* The package now installs as a binary image by default (use the --no-save
  argument to R CMD INSTALL to override this).

Version 0.3-1

* Moved the implementation to version 4 style classes, and it now
  it is fully compliant with the DBI 0.1-3.

* Simplified the core helper R/SQLite functions (w. prefix "sqlite")
  following the ROracle model.

* Updated to sqlite version 2.7.1 (note that if you have an sqlite
  database file from a version prior to 2.6 you'll need to update
  it -- for details see http://www.hwaic.com/sw/sqlite).

Version 0.2-1

* Worked mostly in the configuration;  added the --enable-sqlite and
  --with-sqlite arguments to have the RSQLite configuration also install
  SQLite or locate it, respectively.

Version 0.1-1

* First implementation -- used the RS-DBI.[ch] code (which is the core
  connection/cursor manager) "as is" and modified the RS-MySQL.[hc],
  (which sits directly on top of the MySQL C API) and replace the
  MySQL API calls with SQLite API calls.  This was pretty easy, except
  for the fact that the SQLite API is so minimal (3, yes, 3 C functions)
  with no support for connections, result set (cursors), data types,
  meta-data -- nothing.  So I had to simulate all this. (Actually it
  wasn't too bad).

