2023-June-06

Version "0.9.6"

Added parameterised iterators.
Added documentation warning static link issues.
Fixed old links in docs.
Added support for comercial CEROD feature.

2018-June-30

Version "0.9.5"

Since the "0.9.4-devel" release of this Lua library...

Lua 5.4 compatibility (backward compatible with Lua 5.3, 5.2, and Lua 5.1.5).

2016-November-13

Version "0.9.4"

Since the "0.9.3-devel" release of this Lua library...

Add functions db:get_ptr() and sqlite3.open_ptr(db_ptr) to pass a db connection between threads.
Add function db:db_filename(name).
Update sqlite3_open to sqlite3_open_v2 and add open flags constants.
Thanks to Wolfgang Oertl!

Added second module 'lsqlite3complete' that statically links sqlite.c. Continue to use 
'lsqlite3' for dynamic linking to 'sqlite3.so' or 'sqlite3.dll'.

Added Online Backup API

Added unit tests for NULs in BLOBs and TEXT columns. (Refute defect report.)

Use lua_createtable() in lieu of lua_newtable() when number of table elements is known.
This will improve performance.
Thanks to Egil Hjelmeland for the suggestion.

2015-January-06

Version "0.9.3"

Since the "0.9.2-devel" release of this Lua library...

Added lversion() function to report library version, "0.9.3".

Added db:load_extension() function to support SQLite extension libraries.

Added some tests for new funcitons and Lua 5.3 64-bit integers in the database.

Fixed longstanding bug: if db is no longer live, it is auto-closed by gc, but there may still
be live prepared statements. Executing these statements would produce an error. Prepared 
statements now hold a reference to the db to prevent it from being collected while the prepared 
statement is live. Manually closing the db will continue to finalize the statements, as before.

Fixed bug in PUSH_INT64 macro for Lua < 5.3 introduced in version 0.9.2-devel.

2015-January-04

Version "0.9.2-devel"

Since the "0.9.1-devel" release of this Lua library...

Lua 5.3 compatibility (backward compatible with Lua 5.2 and Lua 5.1.5).

Finally uses sqlite3_prepare_v2() to preserve detailed error codes in statement stepping

With Lua 5.3, 64-bit integer database values are supported for reading and writing columns; 
all other values, e.g., status and counts, are now also returned as integers. The only use of
doubles is for values of that type read from or written to columns.

Added support for stmt:last_insert_rowid() as requested

2013-April-08

Version "0.9.1-devel"

Since the "0.9-devel" release of this Lua library...

Updated examples and tests from Dmitry Pashkevich.

2013-March-30

Version "0.9-devel"

Since the "0.8-devel" release of this Lua library...

Updates for Lua 5.2 (backward compatible with Lua 5.1.5).

Uses lunitx-0.6-1.rockspec for Lua 5.2 compatible testing.

Added sqlite3.update_hook(), sqlite3.commit_hook() and 
sqlite3.rollback_hook() at the suggesiton of Dmitry Pashkevich, who 
also contributed examples and some testing assistance on this release.

Converted Makefile to depend on luarocks.

2011-January-10

Version "0.8-devel"

Since the "0.7-devel" release of this Lua library...

Added a missing lua_pop in dbvm_bind_names()
Now dbvm_bind_index() binds a boolean as 1 or 0
Thanks to Ronny Dierckx

    Since the "0.6-devel" release of this Lua library...

Made db_exec_callback thread safe.
Thanks to Grant Robinson.

Bug fix in dbvm_bind_index error message.
Thanks to Dirk Feytons.

Added a few casts and changed a few comments to ANSI C style.
Thanks to Corey Stup.

Note that Thomas Lauer has a patch referenced on LuaForge
to make collations thread safe(r). This issue is still 
under investigation: the patch has wide ranging affect
and to me it appears unsafe wrt GC. The whole issue of 
thread references in callbacks deserves thorough review.
A new design that places referenced values in the upvalues
of the callback function (rather than in the registry of 
the function defining thread) would be preferable. It may
also make sense to keep thread references in a shared 
environment of the library's functions, and/or require
all callbacks to be defined in the main lua state (so 
they the state is guaranteed to outlive other threads).

-=-

2007-August-15 e

Version "0.6-devel"

Since the "0.5-devel" release of this Lua library...

Tested with SQLite 3.4.2

Added some documentation.

Thanks to Thomas Lauer...

Moved line 525 ("luaL_checktype(L, 2, LUA_TTABLE);")
below the declarations to eliminate non-gcc compiler errors.

Added create-collation, and associated test case.

-=-

2006-October-02 e

Since the "0.1-devel" release of this Lua library...
- updated for Lua 5.1
- provide automatic re-preparation of queries after schema changes
- made prepared statements with bindings work with for-loops
- added some compatibility names
- added many test cases, and ported Mike Roth's tests and examples

-=-

Below is a header comment from the 2004 "0.1" version of the library...

/************************************************************************
$Id: lsqlite3.c,v 1.3 2004/09/05 17:50:32 tngd Exp $

To consider:
------------

EXPERIMENTAL APIs

* sqlite3_progress_handler (implemented)
* sqlite3_commit_hook

TODO?

* sqlite3_create_collation

Changes:
04-09-2004
----------
    * changed second return value of db:compile to be the rest of the
    sql statement that was not processed instead of the number of
    characters of sql not processed (situation in case of success).
    * progress callback register function parameter order changed.
    number of opcodes is given before the callback now.

29-08-2004 e
------------
    * added version() (now supported in sqlite 3.0.5)
    * added db:errmsg db:errcode db:total_changes
    * rename vm:get_column to vm:get_value
    * merge in Tiago's v1.11 change in dbvm_tostring

23-06-2004 e
------------
    * heavily revised for SQLite3 C API
    * row values now returned as native type (not always text)
    * added db:nrows (named rows)
    * added vm:bind_blob
    * added vm:get_column
    * removed encode_binary decode_binary (no longer needed or supported)
    * removed version encoding error_string (unsupported in v 3.0.1 -- soon?)

09-04-2004
----------
    * renamed db:rows to db:urows
    * renamed db:prows to db:rows

    * added vm:get_unames()
    * added vm:get_utypes()
    * added vm:get_uvalues()

08-04-2004
----------
    * changed db:encoding() and db:version() to use sqlite_libencoding() and
    sqlite_libversion()

    * added vm:columns()
    * added vm:get_named_types()
    * added vm:get_named_values()

    * added db:prows - like db:rows but returns a table with the column values
    instead of returning multiple columns seperatly on each iteration

    * added compatibility functions idata,iname,itype,data,type

    * added luaopen_sqlite_module. allow the library to be loaded without
    setting a global variable. does the same as luaopen_sqlite, but does not
    set the global name "sqlite".

    * vm:bind now also returns an error string in case of error

31-03-2004 - 01-04-2004
-----------------------
    * changed most of the internals. now using references (luaL_ref) in
    most of the places

    * make the virtual machine interface seperate from the database
    handle. db:compile now returns a vm handle

    * added db:rows [for ... in db:rows(...) do ... end]

    * added db:close_vm

    * added sqlite.encode_binary and sqlite.decode_binary

    * attempt to do a strict checking on the return type of the user
    defined functions returned values

18-01-2004
----------
    * add check on sql function callback to ensure there is enough stack
    space to pass column values as parameters

03-12-2003
----------
    * callback functions now have to return boolean values to abort or
    continue operation instead of a zero or non-zero value

06-12-2003
----------
    * make version member of sqlite table a function instead of a string
************************************************************************/
