All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- User-defined functions that return specific error codes are now correctly propagated (#133).
1.4.2 - 2025-05-23
Version 1.4.2 updates the modernc.org/sqlite version to 1.37.1.
- The minimum
modernc.org/sqliteversion updated to 1.37.1.
1.4.1 - 2025-05-23
Version 1.4.1 updates the modernc.org/sqlite version to 1.36.1
and includes a couple small improvements.
- The minimum
modernc.org/sqliteversion updated to 1.36.1.
*Stmt.ColumnNameno longer performs an allocation (#101).- The doc comment for
OpenFlagshas been rewritten for clarity (#114).
1.4.0 - 2024-09-23
Version 1.4 adds the sqlitex.ResultBytes function
and fixes several bugs.
- New function
sqlitex.ResultBytes. (#86)
Conn.Closereturns an error if the connection has already been closed (#101).- The minimum
modernc.org/sqliteversion updated to 1.33.1.
sqlite3_initializeis now called from any top-level function to prevent race conditions during initialization. (#18).
1.3.0 - 2024-05-04
Version 1.3 is largely a bug-fix release,
but is a minor version change because of the new sqlitemigration.Pool.Take method.
sqlitemigration.Poolnow has a new methodTakeso that it implements a common interface withsqlitex.Pool(#97).- Documented
OpenWALbehavior onsqlite.OpenConn.
- Address low-frequency errors with concurrent use of
sqlitemigration(#99). - The error returned from
sqlitex.NewPoolwhen trying to open an in-memory database now gives correct advice (#92).
1.2.0 - 2024-03-27
Version 1.2.0 adds a sqlitex.Pool.Take method
and improves error messages.
sqlitex.Poolhas a new methodTakewhich returns anerroralong with aConn(#83).sqlite.ErrorOffsetis a new function that returns the SQL byte offset that an error references.
sqlite.Conn.Prep,sqlite.Conn.Prepare, andsqlite.Conn.PrepareTransientnow include position information in error messages if available.- Many error messages around statement execution changed their format for better readability. Error messages are not stable API and should not be depended on.
- The
sqlitex.Pool.Getmethod has been deprecated in favor of the newTakemethod.
- Error messages no longer duplicate information from their error code (reported in #84).
1.1.2 - 2024-02-14
Version 1.1.2 updates the modernc.org/sqlite version to 1.29.1
and makes further tweaks to busy-polling.
- Set the maximum time between busy polls to 100 milliseconds (follow-on from #75).
- The minimum
modernc.org/sqliteversion updated to 1.29.1 (#77).
1.1.1 - 2024-02-02
Version 1.1.1 improves performance on write-contended workloads.
- Make busy-blocking more responsive (#75).
1.1.0 - 2024-01-14
Version 1.1 introduces the ability to prepare connections on sqlitex.Pool,
improves performance, and improves documentation.
- Added a
sqlitex.NewPoolfunction with support for aConnPrepareFunc(#65). - Added a documentation example for
SetCollation(#64).
- Deprecated
sqlitex.Openin favor ofsqlitex.NewPool.
1.0.0 - 2023-12-07
Version 1.0 is the first officially stable release of zombiezen.com/go/sqlite.
It includes improved documentation and is cleaned up for current versions of Go.
There are no breaking changes to the API:
this release is more a recognition that the API has been stable
and a promise that it will continue to be stable.
- Added
*Stmt.ColumnIsNulland*Stmt.IsNullmethods (#55). - Added more documentation to
sqlitefileandsqlitex.
- Replaced
interface{}withany. This should be a compatible change. - The minimum supported Go version for this library is now Go 1.20.
- The minimum
modernc.org/sqliteversion updated to 1.27.0.
- Removed the
io.*interface fields onsqlitefile.Bufferandsqlitefile.File. These were unused. - Removed the
zombiezen.com/go/sqlite/fspackage. It existed to help transition around Go 1.16, but is no longer useful.
0.13.1 - 2023-08-15
Version 0.13.1 fixed a bug with the sqlitemigration package.
sqlitemigrationwill no longer disable foreign keys during operation (#54).
0.13.0 - 2023-03-28
Version 0.13 added support for user-defined collating sequences and user-defined virtual tables.
- Support user-defined collating sequences (#21).
- Support user-defined virtual tables (#15).
- New package
ext/generateseriesprovides an optionalgenerate_seriestable-valued function extension. - Exported the
regexpfunction example as a newext/refuncpackage. - Add
*Conn.Serializeand*Conn.Deserializemethods (#52).
- The minimum supported Go version for this library is now Go 1.19.
- The documentation for
AggregateFunction.WindowValueincorrectly stated that it would not be called in non-window contexts. The sentence has been removed, but the behavior has not changed.
0.12.0 - 2023-02-08
Version 0.12 added support for the online backup API.
- Added support for the online backup API (#47).
- Documented the
OpenFlags.
OpenNoMutexandOpenFullMutexno longer have an effect onsqlite.OpenConn.OpenNoMutex(i.e. multi-thread mode) is now the only supported mode.*sqlite.Connhas never been safe to use concurrently from multiple goroutines, so this is mostly to prevent unnecessary locking and to avoid confusion. (#32).
0.11.0 - 2022-12-11
Version 0.11 changes the aggregate function API.
- User-defined aggregate functions are now encapsulated
with a new interface,
AggregateFunction. The previous 4-callback approach has been removed and replaced with a singleMakeAggregatecallback. Not only was the previous API unwieldy, but it failed to handle concurrent aggregate function calls in a single query. - Minimum
modernc.org/sqliteversion updated to 1.20.0.
0.10.1 - 2022-07-17
Version 0.10.1 fixes a bug in user-defined window functions. Special thanks to Jan Mercl for assistance in debugging this issue.
AggregateFinalis now called correctly at the end of window functions' usages.
0.10.0 - 2022-07-10
Version 0.10 adds support for user-defined window functions.
FunctionImplhas two new fields (WindowValueandWindowInverse) that allow creating user-defined aggregate window functions (#42).
- The
AggregateStepcallback now returns anerror.
0.9.3 - 2022-05-30
Version 0.9.3 updates the version of modernc.org/sqlite used.
- Minimum
modernc.org/sqliteversion updated to v1.17.3.
0.9.2 - 2022-01-25
Version 0.9 adds new Execute functions to sqlitex
and changes the default blocking behavior.
Version 0.9 also includes various fixes to the schema migration behavior.
- Added
SetBlockOnBusymethod to set an indefinite timeout on acquiring a lock. - Official support for
windows/amd64. sqlitexhas three new functions —Execute,ExecuteTransient, andExecuteScript— that take in anExecOptionsstruct. (#5)- New method
sqlite.ResultCode.ToErrorto create error values. - New methods
ColumnBoolandGetBoolon*sqlite.Stmt(#37).
OpenConncallsSetBlockOnBusyon new connections instead ofSetBusyTimeout(10 * time.Second).- The
sqlitex.Execute*family of functions now verify that the arguments passed match the SQL parameters. (#31)
sqlitex.ExecFShas been renamed tosqlitex.ExecuteFS,sqlitex.ExecTransientFShas been renamed tosqlitex.ExecuteTransientFS, andsqlitex.ExecScriptFShas been renamed tosqlitex.ExecuteScriptFSfor consistency with the newExecutefunctions. Aliases remain in this version, but will be removed in the next version. Usezombiezen-sqlite-migrateto clean up existing references.sqlitex.Execandsqlitex.ExecTransienthave been marked deprecated because they do not perform the argument checks that theExecutefunctions now perform. These functions will remain into 1.0 and beyond for compatibility, but should not be used in new applications.
sqlitemigration.Schema.RepeatableMigrationis now run as part of the final transaction. This ensures that the repeatable migration for migrationNhas executed if and only ifuser_version == N. Previously, the repeatable migration could fail independently of the final transaction, which would mean that a subsequent migration run would not trigger a retry of the repeatable transaction, but report success.sqlitemigrationwill no longer skip applying the repeatable migration if the final migration is empty.OpenConnnow sets a busy handler before enabling WAL (thanks @anacrolix!).
Versions 0.9.0 was accidentally released before CI ran.
A change in the underlying modernc.org/libc library
caused the memory leak detection to identify a false positive.
In an abundance of caution, 0.9.1 was released
to mark both 0.9.1 and 0.9.0 as retracted.
Version 0.9.2 is the first official release of 0.9.
0.8.0 - 2021-11-07
Version 0.8 adds new transaction functions to sqlitex.
- Added
sqlitex.Transaction,sqlitex.ImmediateTransaction, andsqlitex.ExclusiveTransaction.
0.7.2 - 2021-09-11
- Updated
modernc.org/sqlitedependency to a released version instead of a prerelease
0.7.1 - 2021-09-09
- Added an example to
sqlitemigration.Schema
0.7.0 - 2021-08-27
sqlitemigration.Schemahas a new option for disabling foreign keys for individual migrations. This makes it easier to perform migrations that require reconstructing a table. (#20)
sqlitemigration.Migrateand*sqlitemigration.Poolno longer use a transaction to apply the entire set of migrations: they now only use transactions during each individual migration. This was never documented, so in theory no one should be depending on this behavior. However, this does mean that two processes trying to open and migrate a database concurrently may race to apply migrations, whereas before only one process would acquire the write lock and migrate.
- Fixed compile breakage on 32-bit architectures. Thanks to Jan Mercl for the report.
0.6.2 - 2021-08-17
*sqlitex.Pool.Putnow acceptsnilinstead of panicing. (#17)
0.6.1 - 2021-08-16
- Fixed a potential memory corruption issue introduced in 0.6.0. Thanks to Jan Mercl for the report.
0.6.0 - 2021-08-15
- Added back the session API:
Session,ChangesetIterator,Changegroup, and various functions. There are some slight naming changes from thecrawshaw.io/sqliteAPI, but they can all be migrated automatically with the migration tool. (#16)
- Method calls to a
nil*sqlite.Connwill return an error rather than panic. (#17)
- Removed
OpenFlagsthat are only used for VFS.
- Properly clean up WAL when using
sqlitex.Pool(#14) - Disabled double-quoted string literals.
0.5.0 - 2021-05-22
- Added
shellpackage with basic REPL - Added
SetAuthorizer,Limit, andSetDefensivemethods to*Connfor use in (#12) - Added
VersionandVersionNumberconstants
- Documented compiled-in extensions (#11)
- Internal objects are no longer susceptible to ID wraparound issues (#13)
0.4.0 - 2021-05-13
0.3.1 - 2021-05-03
- Fix conversion of BLOB to TEXT when returning BLOB from a user-defined function
0.3.0 - 2021-04-27
- Implement
io.StringWriter,io.ReaderFrom, andio.WriterToonBlob(#2) - Add godoc examples for
Blob,sqlitemigration, andSetInterrupt - Add more README documentation
0.2.2 - 2021-04-24
- Simplified license to ISC
- Updated version of
modernc.org/sqliteto 1.10.4 to use mutex initialization - Fixed doc comment for
BindZeroBlob
0.2.1 - 2021-04-17
- Removed bogus import comment
0.2.0 - 2021-04-03
- New migration tool. See the README to get started. (#1)
*Conn.CreateFunctionhas changed entirely. See the reference for details.sqlitex.Fileandsqlitex.Bufferhave been moved to thesqlitefilepackage- The
sqlitefile.Exec*functions have been moved to thesqlitexpackage asExec*FS.
0.1.0 - 2021-03-31
Initial release