Work in progress:

* Issue #107 - DatabaseMetaData.getPrimaryKeys does not always return all primary keys for multi-line table definitions.
* Issue #109 - SQLiteConfig ignores calls to setDateStringFormat/setDateClass/setDatePrecision.
* Issue #116 - Move to Java 6
    * Created new branch refactor/JDBC4
    * Jar is packaged as sqlite-jdbc4*
* Issue #65 - Calling Statement.setMaxRows(N) has the effect of returning N+1 rows
* Issue #64 - ArrayIndexOutOfBoundsException when calling ResultSetMetaData.getScale() for VARCHAR column types
* Issue #56 - Implement getBinaryStream() in RS.java
* Issue #45 - Stmt.close() should not close metadata
* Issue #49 - PreparedStatement.getUpdateCount should return -1 if the current result is a ResultSet or no more results exist
* Issue #48 - PreparedStatement.getResultSet should return null if current result is an update
* Issue #67 - Bad ResultSet returned from DatabaseMetaData.getColumns(), if a given table doesn't exist
* Issue #73 - DatabaseMetaData.getTables() Memory Leak
* Issue #68 - DatabaseMetaData.getTables() erroneously returns INDEX, TRIGGER, and other non-table objects
* Issue #53 - getImportedKeys throws Null Exception for foreign key without explicit primary column name
* Issue #18 - Add support for ConnectionPool
    * Implemented javax.sql.ConnectionPoolDataSource - javax.SQLiteConnectionPoolDataSource
* Issue #27 - Allow user to specify busy-timeout when opening a database connection
    * Added support for sqlite3_busy_timeout
        1. Added configuration property "busy_timeout" to SQLiteConfig.
        2. Exposed setBusyTimeout and getBusyTimeout on SQLiteConnection.
        3. Default busy_timeout of 3 seconds (3000ms) remains the same.
* Issue #60 - ExtendedCommand (e.g backup) not supported on Stmt.execute(String)
* Issue #23 - getDate() returns wrong values
    * Added support for specifying a date storage class. For more info <https://bitbucket.org/xerial/sqlite-jdbc/issue/23/getdate-returns-wrong-values>
* Issue #54 - Implement PreparedStatement.setBinaryStream()
    * Added support for InputStreams on PreparedStatement
        1. setBinaryStream()
        2. setAsciiStream()
        3. setUnicodeStream()
* Issue #60 - ExtendedCommand (e.g backup) not supported on Stmt.execute(String)
* Issue #23 - getDate() returns wrong values
    * Added support for specifying a date storage class. For more info <https://bitbucket.org/xerial/sqlite-jdbc/issue/23/getdate-returns-wrong-values>
* Issue #54 - Implement PreparedStatement.setBinaryStream()
    * Added support for InputStreams on PreparedStatement
        1. setBinaryStream()
        2. setAsciiStream()
        3. setUnicodeStream()

Release 3.7.15-SNAPSHOT-2
* Fixed clean target to remove previous driver builds
* Issue #42 - Using shared in-memory with URI filename
    * Added support for URI filenames
        1. <https://www.sqlite.org/uri.html> examples <https://www.sqlite.org/c3ref/open.html#urifilenameexamples>
* Issue #47 - MetaData.getExportedKeys() returns empty string for a named foreign key
* Issue #46 - org.sqlite.MetaData.getExportedKeys constructs incorrect SQL
* Issue #44 - getExportedKeys throws Null Exception for foreign key without explicit primary column name
    1. Now returns keys for foreign key definitions like "create table referring (id, foreign key references referred)"
* Implemented getPercision(int) and getScale(int) on ResultSetMetaData.
* Issue #43 - ResultSetMetaData does not return the SQL Type if there are no results from the query.
    1. ResultSetMetaData.getColumnTypeName() now gets type from either 'create table' statement or CAST(expr AS TYPE) otherwise sqlite3_value_type.
    2. ResultSetMetaData.getColumnType() now parses the result from getColumnTypeName() to return a type.
    3. Driver recognizes the types listed at <https://www.sqlite.org/datatype3.html#affname> under 'Affinity Name Examples'.
* Issue #36 - Fixed case where a calling PreparedStatement.clearParameters() after a ResultSet is opened, caused subsequent calls to the ResultSet to return null.
    1. PreparedStatement.clearParameters() now uses sqlite3_clear_bindings instead of sqlite3_reset.
    2. PreparedStatement.clearParameters() does not reset current ResultSet.
    3. PreparedStatement now checks if value(s) are bound to the statement parameters before executing; Throwing an exception if they are not.
* Issue #40 - Fixed case where a call to Statement.getGeneratedKeys() could lead to "database is locked" error.
    1. Calling Statement.Close() on a Statement on which getGeneratedKeys() was called, now releases all resources properly.
* Issue #33 - Fixed Statement.cancel() to work when called from another thread

Release 3.7.15-SNAPSHOT
* Issue #10 - Dropped pure java support
* Issue #22 - Fixed DatabaseMetaData.supportsGetGeneratedKeys to return true since it's already supported
* Issue #17 - Enabled Statement.setEscapeProcessing(boolean) method so driver can be used in Ant tasks
* Issue #20 - Fixed MetaData.getExportedKeys() to return all foreign keys.
* Issue #14 - Fixed DatabaseMetaData.getColumns() resultSet to populate COLUMN_DEF with column default values.
* Fixed Statement.close() so that calling it is a no-op on a closed connection.
* Issue #13- Added support for Java Standard Edition Service Provider mechanism <http://docs.oracle.com/javase/6/docs/api/java/sql/DriverManager.html>
* Issue #12 - Fixed MetaData.getColumns() to return "YES" or "NO" for IS_NULLABLE column
* Issue #16 - Fixed Statement.executeUpdate() to return 0 for DDL and more accurate changes for DML. (Added sqlite3_total_changes to native library)
* Issue #15 - Modified Connection.setReadOnly(boolean) to throw an Exception if readOnly mode is modified after opening a connection
* Changed driver to include architecture name in temporary filename in order to avoid conflicts when multiple JVMs with different architectures running at the same time
* Issue #11 - Enhanced MetaData.getPrimaryKeys():
    1. Return named primary keys and correct key sequence.
    2. Also result set is ordered by column name as per JDBC spec.
* Issue #1 - Added support for WAL JournalMode. <https://www.sqlite.org/wal.html>
* Issue #4 - Enhanced SQLiteDataSource, SQLiteConfig and Conn to enable setting the transaction mode. <https://www.sqlite.org/lang_transaction.html>
* Issue #5 - Fixed NativeDB.c errors when compiling with Visual Studio 2010.
* Issue #2 - Fixed issue where SQLiteDataSource: setEncoding not working. And also enabled using UTF-8, UTF-16, UTF-16le, and UTF-16be.
